summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSehong Na <sehong.na@samsung.com>2014-05-31 12:57:58 +0900
committerSehong Na <sehong.na@samsung.com>2014-05-31 12:57:58 +0900
commit331d162934ac346a137b6a3a17074d948a3c6c41 (patch)
treede2d8bd57e2c66aa58f0f2561fe8e79938142bf1
downloadphone-contacts-331d162934ac346a137b6a3a17074d948a3c6c41.tar.gz
phone-contacts-331d162934ac346a137b6a3a17074d948a3c6c41.tar.bz2
phone-contacts-331d162934ac346a137b6a3a17074d948a3c6c41.zip
-rw-r--r--.gitignore1
-rwxr-xr-xCMakeLists.txt101
-rw-r--r--LICENSE.flora206
-rwxr-xr-xNOTICE3
-rwxr-xr-xbuild50
-rwxr-xr-xbuildAndDeploy.sh24
-rw-r--r--config/gdbscript_contacts_armv7l2
-rw-r--r--config/gdbscript_contacts_i5862
-rw-r--r--contacts-appservice/CMakeLists.txt30
-rwxr-xr-xcontacts-appservice/contacts-appservice.cpp375
-rw-r--r--contacts-appservice/icon_contacts-appservice.pngbin0 -> 7562 bytes
-rw-r--r--contacts-appservice/org.tizen.contacts-appservice.xml26
-rw-r--r--contacts-viewer/CMakeLists.txt27
-rwxr-xr-xcontacts-viewer/contacts-viewer.cpp621
-rw-r--r--contacts-viewer/icon_contacts-viewer.pngbin0 -> 7562 bytes
-rwxr-xr-xcontacts-viewer/org.tizen.contacts-viewer.xml33
-rw-r--r--contacts/CMakeLists.txt24
-rwxr-xr-xcontacts/contacts.cpp364
-rw-r--r--contacts/icon_contacts.pngbin0 -> 57662 bytes
-rwxr-xr-xcontacts/org.tizen.contacts.xml62
-rwxr-xr-xdeploy113
-rw-r--r--gbs/.gbs.conf37
-rwxr-xr-xinclude/contacts-ug.h268
-rwxr-xr-xinclude/phone-ug.h172
-rwxr-xr-xlib/CMakeLists.txt179
-rw-r--r--lib/common/Database/Database.cpp195
-rw-r--r--lib/common/Database/Database.h96
-rw-r--r--lib/common/Database/Listener.h54
-rw-r--r--lib/common/Front.cpp27
-rw-r--r--lib/common/Ui/Genlist/Genlist.cpp56
-rw-r--r--lib/common/Ui/Genlist/Item.cpp92
-rw-r--r--lib/common/Ui/Genlist/include/Genlist.h57
-rw-r--r--lib/common/Ui/Genlist/include/Item.h123
-rw-r--r--lib/common/Ui/Widget.cpp50
-rw-r--r--lib/common/Ui/include/Widget.h56
-rw-r--r--lib/common/Utils/NonCopyable.cpp34
-rw-r--r--lib/common/Utils/Tracer.cpp55
-rw-r--r--lib/common/Utils/include/NonCopyable.h42
-rw-r--r--lib/common/Utils/include/SharedPtr.h176
-rw-r--r--lib/common/Utils/include/Tracer.h37
-rw-r--r--lib/common/View.cpp173
-rw-r--r--lib/common/ViewData.cpp28
-rw-r--r--lib/common/ViewManager.cpp190
-rw-r--r--lib/common/ct-group-assign-popup.cpp431
-rwxr-xr-xlib/common/ct-group-input-view.cpp1653
-rwxr-xr-xlib/common/ct-list-detail.cpp631
-rwxr-xr-xlib/common/ct-list-view-common.cpp5523
-rw-r--r--lib/common/include/Contact.h49
-rw-r--r--lib/common/include/Front.h45
-rw-r--r--lib/common/include/View.h95
-rw-r--r--lib/common/include/ViewData.h50
-rw-r--r--lib/common/include/ViewManager.h104
-rw-r--r--lib/common/include/ct-group-assign-popup.h37
-rwxr-xr-xlib/common/include/ct-group.h30
-rw-r--r--lib/common/include/ct-list-view-common.h36
-rwxr-xr-xlib/common/include/phone-common.h1181
-rwxr-xr-xlib/common/include/phone-path.h137
-rwxr-xr-xlib/common/include/phone-text.h382
-rwxr-xr-xlib/common/include/phone.h123
-rwxr-xr-xlib/common/ph-common.cpp3667
-rwxr-xr-xlib/common/ph-detail-log.cpp530
-rwxr-xr-xlib/common/ph-dialer-speed.cpp187
-rwxr-xr-xlib/common/ph-text.cpp390
-rw-r--r--lib/common/ui/genlist/genlist.cpp31
-rw-r--r--lib/common/ui/genlist/genlist.h31
-rw-r--r--lib/common/ui/genlist/item.cpp29
-rw-r--r--lib/common/ui/genlist/item.h46
-rwxr-xr-xlib/ct-front/CMakeLists.txt14
-rw-r--r--lib/ct-front/contacts-tabui-efl.xml29
-rwxr-xr-xlib/ct-front/ct-front-main.cpp229
-rwxr-xr-xlib/ct-front/ct-front-view.cpp749
-rwxr-xr-xlib/ct-front/ct-front-view.h23
-rwxr-xr-xlib/ct-front/include/ct-front.h58
-rwxr-xr-xlib/details/CMakeLists.txt24
-rw-r--r--lib/details/base_addrbook0
-rw-r--r--lib/details/contacts-details-efl.xml41
-rwxr-xr-xlib/details/ct-detail-activity.cpp314
-rwxr-xr-xlib/details/ct-detail-activity.h26
-rwxr-xr-xlib/details/ct-detail-history.cpp1117
-rwxr-xr-xlib/details/ct-detail-history.h27
-rwxr-xr-xlib/details/ct-detail-main.cpp887
-rwxr-xr-xlib/details/ct-detail-utils.cpp2748
-rwxr-xr-xlib/details/ct-detail-utils.h97
-rw-r--r--lib/details/ct-detail-vibration-popup.cpp267
-rw-r--r--lib/details/ct-detail-vibration-popup.h41
-rw-r--r--lib/details/ct-detail-vibration.cpp66
-rw-r--r--lib/details/ct-detail-vibration.h34
-rwxr-xr-xlib/details/ct-detail-view.cpp3783
-rwxr-xr-xlib/details/ct-detail-view.h47
-rwxr-xr-xlib/details/ct-image-viewer.cpp430
-rwxr-xr-xlib/details/ct-image-viewer.h26
-rwxr-xr-xlib/details/ct-input-change-name.cpp202
-rwxr-xr-xlib/details/ct-input-change-name.h26
-rwxr-xr-xlib/details/ct-input-num-email.cpp1327
-rwxr-xr-xlib/details/ct-input-num-email.h25
-rwxr-xr-xlib/details/ct-input-utils.cpp1762
-rwxr-xr-xlib/details/ct-input-utils.h78
-rwxr-xr-xlib/details/ct-input-view.cpp3836
-rwxr-xr-xlib/details/ct-input-view.h33
-rwxr-xr-xlib/details/ct-share-info-ug.cpp1129
-rwxr-xr-xlib/details/include/ct-detail.h39
-rwxr-xr-xlib/dialer/CMakeLists.txt24
-rw-r--r--lib/dialer/KeypadTouchManager.cpp339
-rw-r--r--lib/dialer/Search/ContactData.cpp63
-rw-r--r--lib/dialer/Search/ContactData.h63
-rw-r--r--lib/dialer/Search/ContactItem.cpp60
-rw-r--r--lib/dialer/Search/ContactItem.h54
-rw-r--r--lib/dialer/Search/ContactLogRecord.cpp125
-rw-r--r--lib/dialer/Search/ContactLogRecord.h67
-rw-r--r--lib/dialer/Search/ContactNumberRecord.cpp135
-rw-r--r--lib/dialer/Search/ContactNumberRecord.h58
-rw-r--r--lib/dialer/Search/Controller.cpp128
-rw-r--r--lib/dialer/Search/Controller.h76
-rw-r--r--lib/dialer/Search/DataProvider.h56
-rw-r--r--lib/dialer/Search/DbDataProvider.cpp327
-rw-r--r--lib/dialer/Search/DbDataProvider.h84
-rw-r--r--lib/dialer/Search/Engine.cpp265
-rw-r--r--lib/dialer/Search/Engine.h202
-rw-r--r--lib/dialer/Search/Result.cpp113
-rw-r--r--lib/dialer/Search/Result.h112
-rw-r--r--lib/dialer/Search/ResultItem.cpp95
-rw-r--r--lib/dialer/Search/ResultItem.h76
-rw-r--r--lib/dialer/Search/ResultPopup.cpp159
-rw-r--r--lib/dialer/Search/ResultPopup.h96
-rw-r--r--lib/dialer/Search/ResultWidget.cpp151
-rw-r--r--lib/dialer/Search/ResultWidget.h103
-rw-r--r--lib/dialer/dialer-efl.desktop.in10
-rw-r--r--lib/dialer/dialer-efl.xml29
-rw-r--r--lib/dialer/include/KeypadTouchManager.h94
-rwxr-xr-xlib/dialer/include/phone-dialer.h148
-rwxr-xr-xlib/dialer/ph-dialer-main.cpp238
-rwxr-xr-xlib/dialer/ph-dialer-search.cpp39
-rwxr-xr-xlib/dialer/ph-dialer-search.h31
-rwxr-xr-xlib/dialer/ph-dialer-tapi.cpp533
-rwxr-xr-xlib/dialer/ph-dialer-tapi.h29
-rwxr-xr-xlib/dialer/ph-dialer-utils.cpp966
-rwxr-xr-xlib/dialer/ph-dialer-utils.h100
-rwxr-xr-xlib/dialer/ph-dialer-view.cpp2174
-rwxr-xr-xlib/dialer/ph-dialer-view.h45
-rwxr-xr-xlib/edc/contact_button.edc91
-rwxr-xr-xlib/edc/contacts.edc19
-rw-r--r--lib/edc/detail_theme.edc1732
-rwxr-xr-xlib/edc/dialer.edc1744
-rwxr-xr-xlib/edc/dialer_btn.edc113
-rwxr-xr-xlib/edc/dialer_theme.edc387
-rwxr-xr-xlib/edc/favorites_theme.edc570
-rwxr-xr-xlib/edc/group_theme.edc962
-rwxr-xr-xlib/edc/image_layout.edc115
-rwxr-xr-xlib/edc/input_theme.edc767
-rwxr-xr-xlib/edc/list.edc170
-rwxr-xr-xlib/edc/list_theme.edc766
-rw-r--r--lib/edc/log_item_icon.edc75
-rwxr-xr-xlib/edc/logdetail_theme.edc1485
-rwxr-xr-xlib/edc/nocontent_layout.edc109
-rwxr-xr-xlib/edc/progress.edc191
-rwxr-xr-xlib/edc/selectioninfo.edc81
-rwxr-xr-xlib/edc/speeddial_theme.edc157
-rwxr-xr-xlib/favor/CMakeLists.txt9
-rwxr-xr-xlib/favor/include/ct-favor.h76
-rwxr-xr-xlib/favor/ph-favorite-edit-view.cpp606
-rwxr-xr-xlib/favor/ph-favorite-edit-view.h54
-rwxr-xr-xlib/favor/ph-favorite-view.cpp2772
-rwxr-xr-xlib/favor/ph-favorite-view.h30
-rwxr-xr-xlib/images/contact_images/00_Nocontents_picture.pngbin0 -> 6530 bytes
-rwxr-xr-xlib/images/contact_images/00_check_checking.pngbin0 -> 3165 bytes
-rw-r--r--lib/images/contact_images/00_list_group_bg.pngbin0 -> 4162 bytes
-rw-r--r--lib/images/contact_images/01_controlbar_icon_add-to-bookmarks.pngbin0 -> 1478 bytes
-rw-r--r--lib/images/contact_images/01_controlbar_icon_add_account.pngbin0 -> 3695 bytes
-rw-r--r--lib/images/contact_images/01_controlbar_icon_add_to_contact.pngbin0 -> 4210 bytes
-rw-r--r--lib/images/contact_images/01_controlbar_icon_bluetooth_preview.pngbin0 -> 1920 bytes
-rw-r--r--lib/images/contact_images/01_controlbar_icon_close.pngbin0 -> 1076 bytes
-rw-r--r--lib/images/contact_images/01_controlbar_icon_exchangs_register.pngbin0 -> 4517 bytes
-rw-r--r--lib/images/contact_images/01_controlbar_icon_groups.pngbin0 -> 1195 bytes
-rw-r--r--lib/images/contact_images/01_controlbar_icon_more.pngbin0 -> 3061 bytes
-rw-r--r--lib/images/contact_images/01_controlbar_icon_next.pngbin0 -> 834 bytes
-rw-r--r--lib/images/contact_images/01_controlbar_icon_previous.pngbin0 -> 834 bytes
-rw-r--r--lib/images/contact_images/C02_account_00.pngbin0 -> 3058 bytes
-rw-r--r--lib/images/contact_images/C02_account_01.pngbin0 -> 3801 bytes
-rw-r--r--lib/images/contact_images/C02_account_02.pngbin0 -> 5247 bytes
-rw-r--r--lib/images/contact_images/C02_account_03.pngbin0 -> 4073 bytes
-rw-r--r--lib/images/contact_images/C02_account_04.pngbin0 -> 7110 bytes
-rw-r--r--lib/images/contact_images/C02_account_default.pngbin0 -> 7562 bytes
-rw-r--r--lib/images/contact_images/C02_account_sim.pngbin0 -> 3251 bytes
-rwxr-xr-xlib/images/contact_images/C02_caller_id_icon_camera.pngbin0 -> 12196 bytes
-rwxr-xr-xlib/images/contact_images/C02_caller_id_icon_camera_dim.pngbin0 -> 12030 bytes
-rwxr-xr-xlib/images/contact_images/C02_caller_id_icon_camera_press.pngbin0 -> 17168 bytes
-rwxr-xr-xlib/images/contact_images/C02_caller_id_icon_gallery.pngbin0 -> 12319 bytes
-rwxr-xr-xlib/images/contact_images/C02_caller_id_icon_gallery_dim.pngbin0 -> 12160 bytes
-rwxr-xr-xlib/images/contact_images/C02_caller_id_icon_gallery_press.pngbin0 -> 17179 bytes
-rwxr-xr-xlib/images/contact_images/C02_circle_button.pngbin0 -> 13968 bytes
-rwxr-xr-xlib/images/contact_images/C02_circle_button_press.pngbin0 -> 15848 bytes
-rwxr-xr-xlib/images/contact_images/C02_circle_icon_call.pngbin0 -> 5404 bytes
-rwxr-xr-xlib/images/contact_images/C02_circle_icon_call_press.pngbin0 -> 3763 bytes
-rwxr-xr-xlib/images/contact_images/C02_circle_icon_sms.pngbin0 -> 3875 bytes
-rwxr-xr-xlib/images/contact_images/C02_circle_icon_sms_press.pngbin0 -> 3311 bytes
-rwxr-xr-xlib/images/contact_images/C02_circle_icon_vt-call.pngbin0 -> 6726 bytes
-rwxr-xr-xlib/images/contact_images/C02_circle_icon_vt-call_press.pngbin0 -> 4260 bytes
-rwxr-xr-xlib/images/contact_images/C02_favorite_icon.pngbin0 -> 3440 bytes
-rw-r--r--lib/images/contact_images/C02_icon_add_group.pngbin0 -> 7328 bytes
-rw-r--r--lib/images/contact_images/C02_icon_favorite.pngbin0 -> 5068 bytes
-rw-r--r--lib/images/contact_images/C02_icon_favorite_on.pngbin0 -> 5584 bytes
-rw-r--r--lib/images/contact_images/C02_icon_reset.pngbin0 -> 3399 bytes
-rw-r--r--lib/images/contact_images/C04_icon_joyn.pngbin0 -> 3866 bytes
-rw-r--r--lib/images/contact_images/caller_ID_default_128x128.pngbin0 -> 5099 bytes
-rw-r--r--lib/images/contact_images/caller_ID_default_96x96.pngbin0 -> 4500 bytes
-rw-r--r--lib/images/contact_images/caller_ID_edit.pngbin0 -> 5162 bytes
-rwxr-xr-xlib/images/contact_images/email.pngbin0 -> 5948 bytes
-rw-r--r--lib/images/contact_images/message.pngbin0 -> 6073 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_button_01.pngbin0 -> 10879 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_button_01_dim.pngbin0 -> 10879 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_button_01_press.pngbin0 -> 13287 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_button_02.pngbin0 -> 10941 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_button_02_dim.pngbin0 -> 11006 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_button_02_press.pngbin0 -> 14438 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_dialer_button_01_press.pngbin0 -> 11587 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_icon_call.pngbin0 -> 3474 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_icon_call_dim.pngbin0 -> 4118 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_icon_call_press.pngbin0 -> 3474 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_icon_delete.pngbin0 -> 3564 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_icon_expand_01.pngbin0 -> 3062 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_icon_expand_02.pngbin0 -> 3007 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_icon_message.pngbin0 -> 4636 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_icon_message_dim.pngbin0 -> 3537 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_icon_message_press.pngbin0 -> 3694 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_icon_video_call.pngbin0 -> 5778 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_icon_video_call_dim.pngbin0 -> 5572 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_icon_video_call_press.pngbin0 -> 4512 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_keypad_bg.pngbin0 -> 84873 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_keypad_bg_reduction.pngbin0 -> 7861 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_keypad_press.pngbin0 -> 8381 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_search_bg_01.pngbin0 -> 45741 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_search_bg_02.pngbin0 -> 38978 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_search_field.pngbin0 -> 3311 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_search_icon.pngbin0 -> 5378 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_thumbnail_bg.pngbin0 -> 10710 bytes
-rwxr-xr-xlib/images/dialer_images/C01-3_title_divider.pngbin0 -> 2812 bytes
-rwxr-xr-xlib/images/dialer_images/keypad/C01-3_keypad_number_00.pngbin0 -> 4225 bytes
-rwxr-xr-xlib/images/dialer_images/keypad/C01-3_keypad_number_01.pngbin0 -> 1984 bytes
-rwxr-xr-xlib/images/dialer_images/keypad/C01-3_keypad_number_02.pngbin0 -> 3695 bytes
-rwxr-xr-xlib/images/dialer_images/keypad/C01-3_keypad_number_03.pngbin0 -> 4293 bytes
-rwxr-xr-xlib/images/dialer_images/keypad/C01-3_keypad_number_04.pngbin0 -> 2733 bytes
-rwxr-xr-xlib/images/dialer_images/keypad/C01-3_keypad_number_05.pngbin0 -> 3951 bytes
-rwxr-xr-xlib/images/dialer_images/keypad/C01-3_keypad_number_06.pngbin0 -> 4704 bytes
-rwxr-xr-xlib/images/dialer_images/keypad/C01-3_keypad_number_07.pngbin0 -> 2786 bytes
-rwxr-xr-xlib/images/dialer_images/keypad/C01-3_keypad_number_08.pngbin0 -> 4577 bytes
-rwxr-xr-xlib/images/dialer_images/keypad/C01-3_keypad_number_09.pngbin0 -> 4648 bytes
-rwxr-xr-xlib/images/dialer_images/keypad/C01-3_keypad_number_asterisk.pngbin0 -> 2922 bytes
-rwxr-xr-xlib/images/dialer_images/keypad/C01-3_keypad_number_auto_answer.pngbin0 -> 3389 bytes
-rwxr-xr-xlib/images/dialer_images/keypad/C01-3_keypad_number_mute.pngbin0 -> 3204 bytes
-rwxr-xr-xlib/images/dialer_images/keypad/C01-3_keypad_number_sharp.pngbin0 -> 3155 bytes
-rw-r--r--lib/images/phoneug_images/00_button_icon_expand_closed.pngbin0 -> 3204 bytes
-rw-r--r--lib/images/phoneug_images/00_button_icon_expand_opened.pngbin0 -> 3250 bytes
-rwxr-xr-xlib/images/phoneug_images/00_button_plus.pngbin0 -> 3119 bytes
-rw-r--r--lib/images/phoneug_images/01_controlbar_icon_contacts.pngbin0 -> 999 bytes
-rw-r--r--lib/images/phoneug_images/01_controlbar_icon_create.pngbin0 -> 742 bytes
-rw-r--r--lib/images/phoneug_images/01_controlbar_icon_dialer.pngbin0 -> 891 bytes
-rw-r--r--lib/images/phoneug_images/01_controlbar_icon_edit.pngbin0 -> 1262 bytes
-rw-r--r--lib/images/phoneug_images/01_controlbar_icon_favorite.pngbin0 -> 1136 bytes
-rw-r--r--lib/images/phoneug_images/01_controlbar_icon_logs.pngbin0 -> 1476 bytes
-rw-r--r--lib/images/phoneug_images/01_controlbar_icon_save.pngbin0 -> 1063 bytes
-rw-r--r--lib/images/phoneug_images/C01-4_btn_icon_call_dim.pngbin0 -> 3253 bytes
-rw-r--r--lib/images/phoneug_images/C01-4_btn_icon_message_dim.pngbin0 -> 3341 bytes
-rw-r--r--lib/images/phoneug_images/C01-4_btn_icon_video_call_dim.pngbin0 -> 3173 bytes
-rwxr-xr-xlib/images/phoneug_images/C01-4_circle_button.pngbin0 -> 13968 bytes
-rwxr-xr-xlib/images/phoneug_images/C01-4_circle_button_press.pngbin0 -> 15848 bytes
-rwxr-xr-xlib/images/phoneug_images/C01-4_controlbar_icon_all.pngbin0 -> 450 bytes
-rwxr-xr-xlib/images/phoneug_images/C01-4_controlbar_icon_create.pngbin0 -> 3625 bytes
-rwxr-xr-xlib/images/phoneug_images/C01-4_controlbar_icon_delete.pngbin0 -> 572 bytes
-rwxr-xr-xlib/images/phoneug_images/C01-4_controlbar_icon_missed_call.pngbin0 -> 774 bytes
-rwxr-xr-xlib/images/phoneug_images/C01-4_controlbar_icon_view_block.pngbin0 -> 4308 bytes
-rwxr-xr-xlib/images/phoneug_images/C01-4_controlbar_icon_view_contacts.pngbin0 -> 999 bytes
-rw-r--r--lib/images/phoneug_images/C01-4_icon_Blocked(Auto-rejected).pngbin0 -> 3237 bytes
-rwxr-xr-xlib/images/phoneug_images/C01-4_icon_Blocked.pngbin0 -> 4363 bytes
-rwxr-xr-xlib/images/phoneug_images/C01-4_icon_call_blocked.pngbin0 -> 978 bytes
-rw-r--r--lib/images/phoneug_images/C01-4_icon_dialed.pngbin0 -> 3055 bytes
-rwxr-xr-xlib/images/phoneug_images/C01-4_icon_message_blocked.pngbin0 -> 1423 bytes
-rw-r--r--lib/images/phoneug_images/C01-4_icon_missed-call.pngbin0 -> 3119 bytes
-rw-r--r--lib/images/phoneug_images/C01-4_icon_received.pngbin0 -> 3043 bytes
-rw-r--r--lib/images/phoneug_images/C01-4_icon_rejected.pngbin0 -> 3252 bytes
-rwxr-xr-xlib/images/phoneug_images/C01-4_list_icon_call.pngbin0 -> 3218 bytes
-rw-r--r--lib/images/phoneug_images/C01-4_list_icon_mms.pngbin0 -> 3355 bytes
-rw-r--r--lib/images/phoneug_images/C01-4_list_icon_sms.pngbin0 -> 3212 bytes
-rw-r--r--lib/images/phoneug_images/C01-4_list_icon_vt-call.pngbin0 -> 3094 bytes
-rwxr-xr-xlib/images/phoneug_images/C01-5_icon_voicecall.pngbin0 -> 3572 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_button_icon_call.pngbin0 -> 3361 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_button_icon_call_dim.pngbin0 -> 3357 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_button_icon_call_press.pngbin0 -> 3332 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_button_icon_delete.pngbin0 -> 3448 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_button_icon_delete_dim.pngbin0 -> 3379 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_button_icon_delete_press.pngbin0 -> 3448 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_button_icon_message.pngbin0 -> 3132 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_button_icon_message_dim.pngbin0 -> 3122 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_button_icon_message_press.pngbin0 -> 3139 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_button_icon_videocall.pngbin0 -> 3641 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_button_icon_videocall_dim.pngbin0 -> 3677 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_button_icon_videocall_press.pngbin0 -> 3670 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_circle_icon_call.pngbin0 -> 5191 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_circle_icon_call_press.pngbin0 -> 3763 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_circle_icon_sms.pngbin0 -> 3686 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_circle_icon_sms_press.pngbin0 -> 3311 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_circle_icon_vt-call.pngbin0 -> 6325 bytes
-rwxr-xr-xlib/images/phoneug_images/C02_circle_icon_vt-call_press.pngbin0 -> 4260 bytes
-rw-r--r--lib/images/phoneug_images/C02_icon_call.pngbin0 -> 3294 bytes
-rw-r--r--lib/images/phoneug_images/C02_icon_chat_on.pngbin0 -> 3392 bytes
-rw-r--r--lib/images/phoneug_images/C02_icon_filetransfer.pngbin0 -> 3382 bytes
-rw-r--r--lib/images/phoneug_images/C02_icon_message.pngbin0 -> 3330 bytes
-rw-r--r--lib/images/phoneug_images/C02_icon_video_call.pngbin0 -> 3159 bytes
-rw-r--r--lib/images/phoneug_images/caller_ID_default_70x70_man.pngbin0 -> 5345 bytes
-rwxr-xr-xlib/images/phoneug_images/camera_mode_shutter_icon.pngbin0 -> 2249 bytes
-rw-r--r--lib/images/phoneug_images/phone.pngbin0 -> 8211 bytes
-rwxr-xr-xlib/list/CMakeLists.txt18
-rw-r--r--lib/list/contacts-list-efl.xml35
-rwxr-xr-xlib/list/ct-group-edit-view.h23
-rwxr-xr-xlib/list/ct-group-view.cpp1696
-rwxr-xr-xlib/list/ct-list-contact-view.cpp1264
-rwxr-xr-xlib/list/ct-list-contact-view.h31
-rwxr-xr-xlib/list/ct-list-edit-view.cpp1102
-rwxr-xr-xlib/list/ct-list-edit-view.h45
-rwxr-xr-xlib/list/ct-list-main.cpp994
-rwxr-xr-xlib/list/ct-list-utils.cpp1153
-rwxr-xr-xlib/list/ct-list-utils.h59
-rwxr-xr-xlib/list/ct-list-view-ug.cpp888
-rwxr-xr-xlib/list/ct-list-view-ug.h31
-rwxr-xr-xlib/list/include/ct-list.h320
-rwxr-xr-xlib/log/CMakeLists.txt20
-rw-r--r--lib/log/CallDurationCounter.cpp121
-rw-r--r--lib/log/CallDurationCounter.h104
-rw-r--r--lib/log/CallDurationItem.cpp57
-rw-r--r--lib/log/CallDurationItem.h64
-rw-r--r--lib/log/CallDurationView.cpp153
-rw-r--r--lib/log/CallDurationView.h73
-rwxr-xr-xlib/log/include/phone-log.h105
-rwxr-xr-xlib/log/ph-log-check-view.cpp425
-rwxr-xr-xlib/log/ph-log-check-view.h37
-rwxr-xr-xlib/log/ph-log-detail-view.cpp1441
-rwxr-xr-xlib/log/ph-log-detail-view.h42
-rwxr-xr-xlib/log/ph-log-main-view.cpp2727
-rwxr-xr-xlib/log/ph-log-main-view.h51
-rwxr-xr-xlib/log/ph-log-main.cpp320
-rwxr-xr-xlib/log/ph-log-utils.cpp58
-rwxr-xr-xlib/log/ph-log-utils.h25
-rwxr-xr-xlib/ph-front/CMakeLists.txt14
-rwxr-xr-xlib/ph-front/include/ph-front.h64
-rwxr-xr-xlib/ph-front/ph-front-main.cpp205
-rwxr-xr-xlib/ph-front/ph-front-view.cpp670
-rwxr-xr-xlib/ph-front/ph-front-view.h23
-rw-r--r--lib/ph-front/phone-tabui-efl.xml29
-rwxr-xr-xlib/settings/CMakeLists.txt13
-rw-r--r--lib/settings/contacts-settings-efl.xml29
-rwxr-xr-xlib/settings/ct-setting-main.cpp155
-rwxr-xr-xlib/settings/ct-setting-view.cpp1627
-rwxr-xr-xlib/settings/ct-setting-view.h65
-rw-r--r--lib/settings/mfc_option0
-rwxr-xr-xlib/speed/CMakeLists.txt16
-rwxr-xr-xlib/speed/include/phone-speed.h25
-rwxr-xr-xlib/speed/ph-speeddial-main.cpp226
-rwxr-xr-xlib/speed/ph-speeddial-view.cpp724
-rwxr-xr-xlib/speed/ph-speeddial-view.h37
-rw-r--r--lib/speed/speeddial-efl.xml29
-rw-r--r--libug-phone-efl.manifest11
-rw-r--r--org.tizen.contacts-appservice.manifest12
-rw-r--r--org.tizen.contacts-appservice.rule215
-rw-r--r--org.tizen.contacts-viewer.manifest13
-rw-r--r--org.tizen.contacts-viewer.rule215
-rw-r--r--org.tizen.contacts.manifest14
-rw-r--r--org.tizen.contacts.rule217
-rw-r--r--org.tizen.dialer.manifest12
-rw-r--r--org.tizen.phone.manifest13
-rw-r--r--org.tizen.phone.rule222
-rw-r--r--packaging/phone.changes3
-rwxr-xr-xpackaging/phone.spec212
-rw-r--r--phone/CMakeLists.txt13
-rw-r--r--phone/icon_phone.pngbin0 -> 57662 bytes
-rwxr-xr-xphone/org.tizen.phone.xml69
-rwxr-xr-xphone/phone.cpp354
-rwxr-xr-xpo/CMakeLists.txt23
-rwxr-xr-xpo/POTFILES.in2
-rw-r--r--po/ar.po1769
-rw-r--r--po/az.po1770
-rw-r--r--po/bg.po1772
-rw-r--r--po/ca.po1772
-rw-r--r--po/cs.po1770
-rw-r--r--po/da.po1770
-rw-r--r--po/de_DE.po1772
-rw-r--r--po/el_GR.po1773
-rw-r--r--po/en.po1766
-rw-r--r--po/en_PH.po1769
-rw-r--r--po/en_US.po1767
-rw-r--r--po/es_ES.po1771
-rw-r--r--po/es_US.po1759
-rw-r--r--po/et.po1770
-rw-r--r--po/eu.po1770
-rw-r--r--po/fi.po1772
-rw-r--r--po/fr_CA.po1768
-rw-r--r--po/fr_FR.po1770
-rw-r--r--po/ga.po1772
-rw-r--r--po/gl.po1770
-rw-r--r--po/hi.po1769
-rw-r--r--po/hr.po1769
-rw-r--r--po/hu.po1772
-rw-r--r--po/hy.po1770
-rw-r--r--po/is.po1768
-rw-r--r--po/it_IT.po1778
-rw-r--r--po/ja_JP.po1769
-rw-r--r--po/ka.po1771
-rw-r--r--po/kk.po1770
-rw-r--r--po/ko_KR.po1768
-rw-r--r--po/lt.po1770
-rw-r--r--po/lv.po1770
-rw-r--r--po/mk.po1770
-rw-r--r--po/nb.po1770
-rw-r--r--po/nl_NL.po1770
-rw-r--r--po/phone.pot771
-rw-r--r--po/pl.po1770
-rwxr-xr-xpo/poManager141
-rw-r--r--po/pt_BR.po1770
-rw-r--r--po/pt_PT.po1772
-rw-r--r--po/ro.po1770
-rw-r--r--po/ru_RU.po1772
-rw-r--r--po/sk.po1770
-rw-r--r--po/sl.po1770
-rw-r--r--po/sr.po1770
-rw-r--r--po/sv.po1770
-rw-r--r--po/tr_TR.po1772
-rw-r--r--po/uk.po1769
-rwxr-xr-xpo/update-po.sh59
-rw-r--r--po/uz.po1768
-rw-r--r--po/zh_CN.po1765
-rw-r--r--po/zh_HK.po1765
-rw-r--r--po/zh_SG.po1765
-rw-r--r--po/zh_TW.po1765
-rwxr-xr-xscripts/install.sh23
-rwxr-xr-xscripts/pull_binaries.sh8
-rwxr-xr-xscripts/push.sh28
-rwxr-xr-xscripts/run.sh3
-rw-r--r--test/CMakeLists.txt14
-rw-r--r--test/ReadMe.txt5
-rw-r--r--test/common.cpp22
438 files changed, 170137 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a8d7270
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/debugenv
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100755
index 0000000..67e6b56
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,101 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(phone CXX)
+
+SET(VENDOR "tizen")
+SET(PACKAGE ${PROJECT_NAME})
+SET(PKGNAME "org.${VENDOR}.${PACKAGE}")
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${PREFIX}/bin")
+SET(RESDIR "${PREFIX}/res")
+SET(DATADIR "${PREFIX}/data")
+SET(LOCALEDIR "/usr/ug/res/locale")
+SET(EDC_SRC_DIR "${CMAKE_SOURCE_DIR}/lib/edc")
+SET(EDJDIR "/usr/ug/res/edje/ug-${PACKAGE}")
+SET(IMGDIR "/usr/ug/res/images/ug-${PACKAGE}")
+SET(VERSION_MAJOR 0)
+SET(VERSION "${VERSION_MAJOR}.6.63.29")
+
+SET(CMAKE_SKIP_BUILD_RPATH FALSE)
+SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+SET(CMAKE_INSTALL_RPATH "/usr/ug/lib")
+SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+ SET(CMAKE_BUILD_TYPE "Release")
+ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED
+ appcore-efl
+ ui-gadget-1
+ contacts-service2
+ ecore-x
+ evas
+ ecore
+ ecore-input
+ edje
+ eina
+ syspopup-caller
+ capi-appfw-application
+ capi-system-runtime-info
+ accounts-svc
+ capi-content-media-content
+ capi-appfw-app-manager
+ capi-system-info
+ notification
+ badge
+ efl-assist
+ icu-i18n
+)
+
+FOREACH(flag ${pkgs_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -fvisibility=hidden")
+SET(CMAKE_CXX_FLAGS_DEBUG "")
+SET(CMAKE_CXX_FLAGS_RELEASE "")
+
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--hash-style=both -Wl,--as-needed")
+SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--hash-style=both -Wl,--as-needed")
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+ ADD_DEFINITIONS("-DTARGET")
+ MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"")
+ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
+ADD_DEFINITIONS("-DPACKAGE_NAME=\"${PKGNAME}\"")
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+ADD_DEFINITIONS("-DIMGDIR=\"${IMGDIR}\"")
+ADD_DEFINITIONS("-DUGDATADIR=\"${UGDATADIR}\"")
+
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/lib/images/phoneug_images/ DESTINATION ${IMGDIR})
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/lib/images/contact_images/ DESTINATION ${IMGDIR})
+INSTALL(DIRECTORY DESTINATION ${DATADIR})
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.phone.rule DESTINATION /opt/etc/smack/accesses.d)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.contacts.rule DESTINATION /opt/etc/smack/accesses.d)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.contacts-viewer.rule DESTINATION /opt/etc/smack/accesses.d)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.contacts-appservice.rule DESTINATION /opt/etc/smack/accesses.d)
+
+ADD_SUBDIRECTORY(lib)
+ADD_SUBDIRECTORY(phone)
+ADD_SUBDIRECTORY(contacts)
+ADD_SUBDIRECTORY(contacts-viewer)
+ADD_SUBDIRECTORY(contacts-appservice)
+
+# i18n
+ADD_SUBDIRECTORY(po)
+
+#test
+#if(DEFINED TEST)
+# add_subdirectory(test)
+#endif(DEFINED TEST)
diff --git a/LICENSE.flora b/LICENSE.flora
new file mode 100644
index 0000000..571fe79
--- /dev/null
+++ b/LICENSE.flora
@@ -0,0 +1,206 @@
+Flora License
+
+Version 1.1, April, 2013
+
+http://floralicense.org/license/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction,
+and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by
+the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and
+all other entities that control, are controlled by, or are
+under common control with that entity. For the purposes of
+this definition, "control" means (i) the power, direct or indirect,
+to cause the direction or management of such entity,
+whether by contract or otherwise, or (ii) ownership of fifty percent (50%)
+or more of the outstanding shares, or (iii) beneficial ownership of
+such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity
+exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation source,
+and configuration files.
+
+"Object" form shall mean any form resulting from mechanical
+transformation or translation of a Source form, including but
+not limited to compiled object code, generated documentation,
+and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form,
+made available under the License, as indicated by a copyright notice
+that is included in or attached to the work (an example is provided
+in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form,
+that is based on (or derived from) the Work and for which the editorial
+revisions, annotations, elaborations, or other modifications represent,
+as a whole, an original work of authorship. For the purposes of this License,
+Derivative Works shall not include works that remain separable from,
+or merely link (or bind by name) to the interfaces of, the Work and
+Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original
+version of the Work and any modifications or additions to that Work or
+Derivative Works thereof, that is intentionally submitted to Licensor
+for inclusion in the Work by the copyright owner or by an individual or
+Legal Entity authorized to submit on behalf of the copyright owner.
+For the purposes of this definition, "submitted" means any form of
+electronic, verbal, or written communication sent to the Licensor or
+its representatives, including but not limited to communication on
+electronic mailing lists, source code control systems, and issue
+tracking systems that are managed by, or on behalf of, the Licensor
+for the purpose of discussing and improving the Work, but excluding
+communication that is conspicuously marked or otherwise designated
+in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity
+on behalf of whom a Contribution has been received by Licensor and
+subsequently incorporated within the Work.
+
+"Tizen Certified Platform" shall mean a software platform that complies
+with the standards set forth in the Tizen Compliance Specification
+and passes the Tizen Compliance Tests as defined from time to time
+by the Tizen Technical Steering Group and certified by the Tizen
+Association or its designated agent.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the
+Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+(except as stated in this section) patent license to make, have made,
+use, offer to sell, sell, import, and otherwise transfer the Work
+solely as incorporated into a Tizen Certified Platform, where such
+license applies only to those patent claims licensable by such
+Contributor that are necessarily infringed by their Contribution(s)
+alone or by combination of their Contribution(s) with the Work solely
+as incorporated into a Tizen Certified Platform to which such
+Contribution(s) was submitted. If You institute patent litigation
+against any entity (including a cross-claim or counterclaim
+in a lawsuit) alleging that the Work or a Contribution incorporated
+within the Work constitutes direct or contributory patent infringement,
+then any patent licenses granted to You under this License for that
+Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+Work or Derivative Works thereof pursuant to the copyright license
+above, in any medium, with or without modifications, and in Source or
+Object form, provided that You meet the following conditions:
+
+ 1. You must give any other recipients of the Work or Derivative Works
+ a copy of this License; and
+ 2. You must cause any modified files to carry prominent notices stating
+ that You changed the files; and
+ 3. You must retain, in the Source form of any Derivative Works that
+ You distribute, all copyright, patent, trademark, and attribution
+ notices from the Source form of the Work, excluding those notices
+ that do not pertain to any part of the Derivative Works; and
+ 4. If the Work includes a "NOTICE" text file as part of its distribution,
+ then any Derivative Works that You distribute must include a readable
+ copy of the attribution notices contained within such NOTICE file,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works, in at least one of the following places:
+ within a NOTICE text file distributed as part of the Derivative Works;
+ within the Source form or documentation, if provided along with the
+ Derivative Works; or, within a display generated by the Derivative Works,
+ if and wherever such third-party notices normally appear.
+ The contents of the NOTICE file are for informational purposes only
+ and do not modify the License. You may add Your own attribution notices
+ within Derivative Works that You distribute, alongside or as an addendum
+ to the NOTICE text from the Work, provided that such additional attribution
+ notices cannot be construed as modifying the License. You may add Your own
+ copyright statement to Your modifications and may provide additional or
+ different license terms and conditions for use, reproduction, or
+ distribution of Your modifications, or for any such Derivative Works
+ as a whole, provided Your use, reproduction, and distribution of
+ the Work otherwise complies with the conditions stated in this License
+ and your own copyright statement or terms and conditions do not conflict
+ the conditions stated in the License including section 3.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+any Contribution intentionally submitted for inclusion in the Work
+by You to the Licensor shall be under the terms and conditions of
+this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify
+the terms of any separate license agreement you may have executed
+with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+names, trademarks, service marks, or product names of the Licensor,
+except as required for reasonable and customary use in describing the
+origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+agreed to in writing, Licensor provides the Work (and each
+Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+implied, including, without limitation, any warranties or conditions
+of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+PARTICULAR PURPOSE. You are solely responsible for determining the
+appropriateness of using or redistributing the Work and assume any
+risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+whether in tort (including negligence), contract, or otherwise,
+unless required by applicable law (such as deliberate and grossly
+negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special,
+incidental, or consequential damages of any character arising as a
+result of this License or out of the use or inability to use the
+Work (including but not limited to damages for loss of goodwill,
+work stoppage, computer failure or malfunction, or any and all
+other commercial damages or losses), even if such Contributor
+has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+the Work or Derivative Works thereof, You may choose to offer,
+and charge a fee for, acceptance of support, warranty, indemnity,
+or other liability obligations and/or rights consistent with this
+License. However, in accepting such obligations, You may act only
+on Your own behalf and on Your sole responsibility, not on behalf
+of any other Contributor, and only if You agree to indemnify,
+defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason
+of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Flora License to your work
+
+To apply the Flora License to your work, attach the following
+boilerplate notice, with the fields enclosed by brackets "[]"
+replaced with your own identifying information. (Don't include
+the brackets!) The text should be enclosed in the appropriate
+comment syntax for the file format. We also recommend that a
+file or class name and description of purpose be included on the
+same "printed page" as the copyright notice for easier
+identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Flora License, Version 1.1 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://floralicense.org/license/
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/NOTICE b/NOTICE
new file mode 100755
index 0000000..f93330b
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,3 @@
+Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
+Except as noted, this software is licensed under Flora License, Version 1.1.
+Please, see the LICENSE.flora file for Flora License, Version 1.1 terms and conditions.
diff --git a/build b/build
new file mode 100755
index 0000000..cc0bf39
--- /dev/null
+++ b/build
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+usage()
+{
+ echo "Usage: `basename $0` [-h|--help] [-e|--emulator] | [-d|--device] [-i|--init] [-t|--test]
+ -h, --help Show this message.
+ -e, --emulator Build for emulator (i586, default).
+ -d, --device Build for device (armv7l).
+ -i, --init Build online (without --noinit).
+ -t, --test Build with tests."
+}
+
+ARCH="i586"
+NOINIT="--noinit"
+OPTS=$(getopt -o "edith" -l "emulator,device,init,test,help" -- "$@" 2> /dev/null)
+
+if [ $? -ne 0 ]
+then
+ usage
+ exit 1
+fi
+
+for opt in $OPTS
+do
+ case $opt in
+ -e|--emulator|--)
+ ;;
+ -d|--device)
+ ARCH="armv7l"
+ ;;
+ -i|--init)
+ NOINIT=""
+ ;;
+ -t|--test)
+ TEST=1
+ ;;
+ -h|--help)
+ usage
+ exit 1
+ ;;
+ esac
+done
+
+if [ -z $TEST ]
+then
+ gbs build -A $ARCH --include-all --keep-packs $NOINIT
+else
+ gbs build -A $ARCH --include-all --keep-packs $NOINIT --define 'TEST ON'
+fi
+
diff --git a/buildAndDeploy.sh b/buildAndDeploy.sh
new file mode 100755
index 0000000..58c146c
--- /dev/null
+++ b/buildAndDeploy.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+# how to use
+# ./buildAndDeploy.sh i586 --clean
+# ./buildAndDeploy.sh armv7l
+
+architect=$1
+if [ -z "$1" ]; then
+ architect=i586
+fi
+
+echo "building ..."
+echo "gbs build -A $architect $2 --include-all --keep-packs"
+gbs build -A $architect $2 --include-all --keep-packs
+
+echo "build done"
+echo "installing ..."
+
+rm -rf debugenv
+cd "scripts"
+./push.sh /home/developer $architect
+./pull_binaries.sh
+cd "../"
+
diff --git a/config/gdbscript_contacts_armv7l b/config/gdbscript_contacts_armv7l
new file mode 100644
index 0000000..65dfae4
--- /dev/null
+++ b/config/gdbscript_contacts_armv7l
@@ -0,0 +1,2 @@
+set solib-absolute-prefix /home/andy/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0/
+symbol-file /home/andy/workspace/contacts/debugenv/contacts.debug
diff --git a/config/gdbscript_contacts_i586 b/config/gdbscript_contacts_i586
new file mode 100644
index 0000000..2680087
--- /dev/null
+++ b/config/gdbscript_contacts_i586
@@ -0,0 +1,2 @@
+set solib-absolute-prefix /home/andy/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0/
+symbol-file /home/andy/workspace/contacts/debugenv/contacts.debug
diff --git a/contacts-appservice/CMakeLists.txt b/contacts-appservice/CMakeLists.txt
new file mode 100644
index 0000000..4f0849f
--- /dev/null
+++ b/contacts-appservice/CMakeLists.txt
@@ -0,0 +1,30 @@
+SET(APPSERVICE contacts-appservice)
+
+SET(SRCS contacts-appservice.cpp)
+
+SET(APPSERVICE_PKGNAME "org.${VENDOR}.${APPSERVICE}")
+SET(APPSERVICE_PREFIX "/usr/apps/${APPSERVICE_PKGNAME}")
+SET(APPSERVICE_BINDIR "${APPSERVICE_PREFIX}/bin")
+SET(APPSERVICE_RESDIR "${APPSERVICE_PREFIX}/res")
+SET(APPSERVICE_DATADIR "${APPSERVICE_PREFIX}/data")
+
+ADD_DEFINITIONS("-DAPPSERVICE_PACKAGE=\"${APPSERVICE}\"")
+ADD_DEFINITIONS("-DAPPSERVICE_PACKAGE_NAME=\"${APPSERVICE_PKGNAME}\"")
+
+ADD_EXECUTABLE(${APPSERVICE} ${SRCS})
+SET_TARGET_PROPERTIES(${APPSERVICE} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS} -fpie")
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/common/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/common/Utils/include)
+
+pkg_check_modules(appservice_pkgs REQUIRED appcore-efl ecore-x capi-appfw-application ui-gadget-1 utilX)
+FOREACH(flag ${appservice_pkgs_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+TARGET_LINK_LIBRARIES(${APPSERVICE} ${appservice_pkgs_LDFLAGS})
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/contacts-appservice/org.tizen.contacts-appservice.xml DESTINATION "/usr/share/packages")
+INSTALL(TARGETS ${APPSERVICE} DESTINATION ${APPSERVICE_BINDIR})
+INSTALL(DIRECTORY DESTINATION ${APPSERVICE_DATADIR})
+
+# install icon
+INSTALL(FILES icon_${APPSERVICE}.png DESTINATION "/usr/share/icons/default/small" RENAME "${APPSERVICE_PKGNAME}.png")
diff --git a/contacts-appservice/contacts-appservice.cpp b/contacts-appservice/contacts-appservice.cpp
new file mode 100755
index 0000000..0a49443
--- /dev/null
+++ b/contacts-appservice/contacts-appservice.cpp
@@ -0,0 +1,375 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <aul.h>
+#include <Ecore_X.h>
+#include <ui-gadget.h>
+#include <app.h>
+#include <utilX.h>
+
+#include "phone.h"
+
+#if !defined(APPSERVICE_PACKAGE)
+# define APPSERVICE_PACKAGE "contacts-appservice"
+#endif
+
+#define CONTACTS_LIST_UG "contacts-list-efl"
+#define CONTACTS_DETAILS_UG "contacts-details-efl"
+
+#define CT_LIST_UG_SELECT_CONTACT_ADD_TO_HOME "15"
+#define CT_LIST_UG_SELECT_GROUP_ADD_TO_HOME "16"
+#define CT_DETAILS_UG_REQUEST_ADD_WITH_NUM "22"
+#define CT_DETAILS_UG_REQUEST_DETAIL "0"
+
+#define CT_APPSERVICE_REQUEST_DETAIL 0
+#define CT_APPSERVICE_ADD_CONTACT_LIVEBOX 1
+#define CT_APPSERVICE_ADD_GROUP_LIVEBOX 2
+#define CT_APPSERVICE_ADD_WITH_NUM 22
+
+typedef struct
+{
+ Evas_Object *win;
+ Evas_Object *layout;
+ ui_gadget_h ug;
+ Ecore_Event_Handler *event_handler;
+} ct_app_service_data;
+
+static Evas_Object* appservice_create_win(const char *name)
+{
+ Evas_Object *eo;
+ int w, h;
+
+ eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+ if (eo)
+ {
+ elm_win_title_set(eo, name);
+ elm_win_conformant_set(eo, EINA_TRUE);
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+#else
+ elm_win_borderless_set(eo, EINA_TRUE);
+#endif
+ ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+ evas_object_resize(eo, w, h);
+ elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
+ }
+
+ return eo;
+}
+
+static Eina_Bool __appservice_hard_key_down(void *data, int type,
+ void *event_info)
+{
+ Ecore_Event_Key *ev = (Ecore_Event_Key *) event_info;
+ if (0 == strcmp(ev->keyname, KEY_HOME))
+ elm_exit();
+ return ECORE_CALLBACK_DONE;
+}
+
+static void __appservice_grab_key(ct_app_service_data *cappservice_d)
+{
+ Ecore_X_Window xwin;
+ Ecore_X_Display *disp = NULL;
+
+ disp = ecore_x_display_get();
+ xwin = elm_win_xwindow_get(cappservice_d->win);
+ utilx_grab_key((Display *) disp, xwin, KEY_HOME, TOP_POSITION_GRAB);
+ cappservice_d->event_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN,
+ __appservice_hard_key_down, cappservice_d);
+}
+
+static void __appservice_ungrab_key(ct_app_service_data *cappservice_d)
+{
+ Ecore_X_Window xwin;
+ Ecore_X_Display *disp = NULL;
+
+ disp = ecore_x_display_get();
+ xwin = elm_win_xwindow_get(cappservice_d->win);
+ utilx_ungrab_key((Display *) disp, xwin, KEY_HOME);
+ if (cappservice_d->event_handler)
+ {
+ ecore_event_handler_del(cappservice_d->event_handler);
+ cappservice_d->event_handler = NULL;
+ }
+}
+
+static bool appservice_create(void *data)
+{
+ PH_FN_CALL;
+ ct_app_service_data *cappservice_d = (ct_app_service_data *) data;
+ Evas_Object *win;
+
+ /* create window */
+ win = appservice_create_win(APPSERVICE_PACKAGE);
+ p_retvm_if(NULL == win, false, "ctapp_create_win() Failed");
+ cappservice_d->win = win;
+
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ evas_object_show(win);
+
+ UG_INIT_EFL(cappservice_d->win, UG_OPT_INDICATOR_ENABLE);
+ __appservice_grab_key(cappservice_d);
+
+ return true;
+}
+
+static void appservice_terminate(void *data)
+{
+ PH_FN_CALL;
+ ct_app_service_data *cappservice_d = (ct_app_service_data *) data;
+
+ __appservice_ungrab_key(cappservice_d);
+
+ if (cappservice_d->ug)
+ ug_destroy(cappservice_d->ug);
+
+ if (cappservice_d->win)
+ evas_object_del(cappservice_d->win);
+
+ return;
+}
+
+static void appservice_pause(void *data)
+{
+ PH_FN_CALL;
+ return;
+}
+
+static void appservice_resume(void *data)
+{
+ PH_FN_CALL;
+ return;
+}
+
+static void appservice_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode,
+ void *priv)
+{
+ ct_app_service_data *cappservice_d = (ct_app_service_data *) priv;
+ Evas_Object *base;
+
+ if (!ug)
+ return;
+
+ base = (Evas_Object *) ug_get_layout(ug);
+ if (!base)
+ {
+ ERR("ug_get_layout() return NULL");
+ ug_destroy(ug);
+ return;
+ }
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ ug_disable_effect(ug);
+ elm_object_content_set(cappservice_d->layout, base);
+ evas_object_show(base);
+}
+
+static void appservice_ug_destroy_cb(ui_gadget_h ug, void *priv)
+{
+ ct_app_service_data *cappservice_d = (ct_app_service_data *) priv;
+ p_retm_if(NULL == ug, "ug is NULL");
+
+ ug_destroy(ug);
+ cappservice_d->ug = NULL;
+
+ elm_exit();
+}
+
+static void appservice_lauch_list_ug(ct_app_service_data *cappservice_d,
+ int type)
+{
+ service_h service;
+ struct ug_cbs cbs = { 0 };
+
+ p_retm_if(NULL == cappservice_d, "parameter(cappservice_d) is NULL");
+
+ service_create(&service);
+
+ if (2 == type)
+ service_add_extra_data(service, "type",
+ CT_LIST_UG_SELECT_GROUP_ADD_TO_HOME);
+ else
+ service_add_extra_data(service, "type",
+ CT_LIST_UG_SELECT_CONTACT_ADD_TO_HOME);
+
+ cbs.layout_cb = appservice_ug_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = appservice_ug_destroy_cb;
+ cbs.priv = cappservice_d;
+
+ cappservice_d->ug = ug_create(NULL, CONTACTS_LIST_UG, UG_MODE_FULLVIEW,
+ service, &cbs);
+ service_destroy(service);
+}
+
+static void appservice_launch_details_ug(ct_app_service_data *cappservice_d,
+ int type, char *val)
+{
+ service_h service;
+ struct ug_cbs cbs = { 0 };
+
+ p_retm_if(NULL == cappservice_d, "parameter(cappservice_d) is NULL");
+
+ service_create(&service);
+ if (type == CT_APPSERVICE_REQUEST_DETAIL)
+ {
+ service_add_extra_data(service, "type", CT_DETAILS_UG_REQUEST_DETAIL);
+ PH_DBG("val=%s", val);
+ if (val && *val)
+ service_add_extra_data(service, "person_id", val);
+ }
+ else if (type == CT_APPSERVICE_ADD_WITH_NUM)
+ {
+ service_add_extra_data(service, "type",
+ CT_DETAILS_UG_REQUEST_ADD_WITH_NUM);
+ if (val && *val)
+ service_add_extra_data(service, "ct_num", val);
+ }
+
+ cbs.layout_cb = appservice_ug_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = appservice_ug_destroy_cb;
+ cbs.priv = cappservice_d;
+
+ cappservice_d->ug = ug_create(NULL, CONTACTS_DETAILS_UG, UG_MODE_FULLVIEW,
+ service, &cbs);
+ service_destroy(service);
+
+}
+
+static Evas_Object* __appservice_create_base_layout(Evas_Object *parent,
+ bool is_fullview)
+{
+ Evas_Object *base;
+
+ base = elm_layout_add(parent);
+ p_retvm_if(NULL == base, NULL, "elm_layout_add() Failed");
+ if (is_fullview)
+ elm_layout_theme_set(base, "layout", "application", "default");
+ else
+ elm_layout_theme_set(base, "layout", "application", "noindicator");
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ elm_object_content_set(parent, base);
+
+ return base;
+}
+
+static void __appservice_create_bg(Evas_Object *win)
+{
+ Evas_Object *bg;
+
+ bg = elm_bg_add(win);
+ p_retm_if(NULL == bg, "elm_bg_add() return NULL");
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_content_set(win, "elm.swallow.bg", bg);
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+}
+
+static Evas_Object* __appservice_create_conformant(Evas_Object *win)
+{
+ Evas_Object *conform;
+
+ conform = elm_conformant_add(win);
+ p_retvm_if(NULL == conform, NULL, "elm_conformant_add() Failed");
+ evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, conform);
+ evas_object_show(conform);
+
+ return conform;
+}
+
+static void __appservice_create_content(ct_app_service_data *cappservice_data)
+{
+ Evas_Object *conform = NULL;
+
+ __appservice_create_bg(cappservice_data->win);
+ conform = __appservice_create_conformant(cappservice_data->win);
+ cappservice_data->layout = __appservice_create_base_layout(conform, true);
+}
+
+static void appservice_service(service_h service, void *data)
+{
+ PH_FN_CALL;
+ char *val = NULL;
+ int ret;
+ int type;
+ ct_app_service_data *cappservice_d = (ct_app_service_data *) data;
+
+ __appservice_create_content(cappservice_d);
+
+ ret = service_get_extra_data(service, "type", &val);
+ if (SERVICE_ERROR_NONE != ret)
+ {
+ ERR("service_get_operation is failed(%d)", ret);
+ elm_exit();
+ return;
+ }
+
+ if (val && *val)
+ {
+ char *extra_data = NULL;
+ type = atoi(val);
+ free(val);
+
+ if (type == CT_APPSERVICE_ADD_CONTACT_LIVEBOX
+ || type == CT_APPSERVICE_ADD_GROUP_LIVEBOX)
+ appservice_lauch_list_ug(cappservice_d, type);
+ else if (type == CT_APPSERVICE_REQUEST_DETAIL)
+ {
+ ret = service_get_extra_data(service, "person_id", &extra_data);
+ appservice_launch_details_ug(cappservice_d,
+ CT_APPSERVICE_REQUEST_DETAIL, extra_data);
+ free(extra_data);
+ }
+ else if (type == CT_APPSERVICE_ADD_WITH_NUM)
+ {
+ ret = service_get_extra_data(service, "ct_num", &extra_data);
+ appservice_launch_details_ug(cappservice_d,
+ CT_APPSERVICE_ADD_WITH_NUM, extra_data);
+ free(extra_data);
+ }
+ else
+ {
+ ERR("Invalid type(%d)", type);
+ elm_exit();
+ return;
+ }
+ }
+ elm_win_activate(cappservice_d->win);
+ return;
+}
+
+API int main(int argc, char *argv[])
+{
+ PH_FN_CALL;
+
+ ct_app_service_data ad = { 0 };
+ app_event_callback_s event_callback = { 0, };
+ event_callback.create = appservice_create;
+ event_callback.terminate = appservice_terminate;
+ event_callback.pause = appservice_pause;
+ event_callback.resume = appservice_resume;
+ event_callback.service = appservice_service;
+ event_callback.low_memory = NULL;
+ event_callback.low_battery = NULL;
+ event_callback.device_orientation = NULL;
+ event_callback.language_changed = NULL;
+ event_callback.region_format_changed = NULL;
+
+ return app_efl_main(&argc, &argv, &event_callback, &ad);
+}
diff --git a/contacts-appservice/icon_contacts-appservice.png b/contacts-appservice/icon_contacts-appservice.png
new file mode 100644
index 0000000..900dcde
--- /dev/null
+++ b/contacts-appservice/icon_contacts-appservice.png
Binary files differ
diff --git a/contacts-appservice/org.tizen.contacts-appservice.xml b/contacts-appservice/org.tizen.contacts-appservice.xml
new file mode 100644
index 0000000..6ee09a7
--- /dev/null
+++ b/contacts-appservice/org.tizen.contacts-appservice.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.contacts-appservice" version="0.1.2" install-location="internal-only">
+ <label>Contacts-Appservice</label>
+ <author email="ensung.park@samsung.com" href="www.samsung.com">ensung park</author>
+ <description>Contacts-appservice Application</description>
+ <ui-application appid="org.tizen.contacts-appservice" exec="/usr/apps/org.tizen.contacts-appservice/bin/contacts-appservice" nodisplay="true" multiple="false" type="capp" taskmanage="true">
+ <icon>org.tizen.contacts.png</icon>
+ <label>Contacts-Appservice</label>
+ <label xml:lang="en-us">Contacts-Appservice</label>
+ <label xml:lang="nl-nl">Contacts-Appservice</label>
+ <label xml:lang="de-de">Contacts-Appservice</label>
+ <label xml:lang="en-gb">Contacts-Appservice</label>
+ <label xml:lang="zh-hk">Contacts-Appservice</label>
+ <label xml:lang="zh-cn">Contacts-Appservice</label>
+ <label xml:lang="ru-ru">Contacts-Appservice</label>
+ <label xml:lang="zh-tw">Contacts-Appservice</label>
+ <label xml:lang="ja-jp">Contacts-Appservice</label>
+ <label xml:lang="es-es">Contacts-Appservice</label>
+ <label xml:lang="el-gr">Contacts-Appservice</label>
+ <label xml:lang="it-it">Contacts-Appservice</label>
+ <label xml:lang="tr-tr">Contacts-Appservice</label>
+ <label xml:lang="pt-pt">Contacts-Appservice</label>
+ <label xml:lang="fr-fr">Contacts-Appservice</label>
+ <label xml:lang="ko-kr">Contacts-Appservice</label>
+ </ui-application>
+</manifest>
diff --git a/contacts-viewer/CMakeLists.txt b/contacts-viewer/CMakeLists.txt
new file mode 100644
index 0000000..32f3555
--- /dev/null
+++ b/contacts-viewer/CMakeLists.txt
@@ -0,0 +1,27 @@
+SET(VIEWER contacts-viewer)
+
+SET(SRCS contacts-viewer.cpp)
+
+SET(VV_PKGNAME "org.${VENDOR}.${VIEWER}")
+SET(VV_PREFIX "/usr/apps/${VV_PKGNAME}")
+SET(VV_BINDIR "${VV_PREFIX}/bin")
+SET(VV_RESDIR "${VV_PREFIX}/res")
+SET(VV_DATADIR "${VV_PREFIX}/data")
+
+ADD_DEFINITIONS("-DCV_PACKAGE=\"${VIEWER}\"")
+ADD_DEFINITIONS("-DCV_PACKAGE_NAME=\"${VV_PKGNAME}\"")
+
+ADD_EXECUTABLE(${VIEWER} ${SRCS})
+SET_TARGET_PROPERTIES(${VIEWER} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS} -fpie")
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/common/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/common/Utils/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/details/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/list/include)
+TARGET_LINK_LIBRARIES(${VIEWER} ug-contacts-details-efl ug-contacts-list-efl "-pie")
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/contacts-viewer/org.tizen.contacts-viewer.xml DESTINATION "/usr/share/packages")
+INSTALL(TARGETS ${VIEWER} DESTINATION ${VV_BINDIR})
+INSTALL(DIRECTORY DESTINATION ${VV_DATADIR})
+
+# install icon
+INSTALL(FILES icon_${VIEWER}.png DESTINATION "/usr/share/icons/default/small" RENAME "${VV_PKGNAME}.png")
diff --git a/contacts-viewer/contacts-viewer.cpp b/contacts-viewer/contacts-viewer.cpp
new file mode 100755
index 0000000..0b1451a
--- /dev/null
+++ b/contacts-viewer/contacts-viewer.cpp
@@ -0,0 +1,621 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <aul.h>
+#include <Ecore_X.h>
+#include <ui-gadget.h>
+#include <app.h>
+
+#include "phone.h"
+#include "ct-detail.h"
+#include "ct-list.h"
+
+#if !defined(CV_PACKAGE)
+# define CV_PACKAGE "contacts-viewer"
+#endif
+
+typedef struct
+{
+ char *path;
+ Evas_Object *win;
+ Evas_Object *content;
+ Evas_Object *popup;
+ Eina_List *list;
+ ph_progress_info *p_info;
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+ Evas_Object *icon;
+ Evas_Object *prev_btn;
+#endif
+ int current_rotate;
+} ct_viewer_data;
+
+static void cv_win_del(void *data, Evas_Object *obj, void *event)
+{
+ elm_exit();
+}
+
+static Evas_Object* cv_create_win(const char *name)
+{
+ Evas_Object *eo;
+ int w, h;
+
+ eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+ if (eo)
+ {
+ elm_win_title_set(eo, name);
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+#else
+ elm_win_borderless_set(eo, EINA_TRUE);
+#endif
+ evas_object_smart_callback_add(eo, "delete,request", cv_win_del, NULL);
+ ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+ evas_object_resize(eo, w, h);
+ elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
+ }
+ elm_win_conformant_set(eo, EINA_TRUE);
+ return eo;
+}
+
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+static Evas_Object* __set_win_icon(ct_viewer_data *ad)
+{
+ Evas_Object *image = evas_object_image_add(evas_object_evas_get(ad->win));
+ evas_object_image_file_set(image, "/usr/share/icons/default/small/org.tizen.contacts-viewer.png", NULL);
+ elm_win_icon_object_set(ad->win, image);
+
+ return image;
+}
+
+static void __win_profile_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if(data == NULL)
+ return;
+
+ ct_viewer_data *ad = data;
+ Evas_Object *navi = evas_object_data_get(ad->win, "naviframe");
+ const char *profile = elm_config_profile_get();
+ if(!strcmp(profile, "desktop"))
+ {
+ Elm_Object_Item *navi_item = elm_naviframe_bottom_item_get(navi);
+ ad->prev_btn = elm_object_item_part_content_unset(navi_item, "prev_btn");
+ elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE);
+ if(!ad->icon)
+ ad->icon = __set_win_icon(ad);
+ }
+ else
+ {
+ Elm_Object_Item *navi_item = elm_naviframe_bottom_item_get(navi);
+ if (ad->prev_btn)
+ {
+ elm_object_item_part_content_set(navi_item, "prev_btn", ad->prev_btn);
+ ad->prev_btn = NULL;
+ }
+ elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW);
+ }
+}
+#endif // _PHONE_CONTACTS_DESKTOP_MODE_
+static void __viewer_rotate_cb(void *data, Evas_Object *obj, void *event)
+{
+ ct_viewer_data *cviewer_d = (ct_viewer_data *) data;
+ int changed_rotate = elm_win_rotation_get(obj);
+
+#ifndef _PHONE_CONTACTS_DESKTOP_MODE_
+ const char *config = elm_config_profile_get();
+ if (!strcmp(config, "desktop"))
+ return;
+#endif
+ p_retm_if(cviewer_d == NULL || cviewer_d->win == NULL, "Paramter is NULL");
+
+ if (changed_rotate != cviewer_d->current_rotate)
+ {
+ ERR("rotate changed %d", changed_rotate);
+ cviewer_d->current_rotate = changed_rotate;
+ switch (cviewer_d->current_rotate)
+ {
+ case 0:
+ ug_send_event (UG_EVENT_ROTATE_PORTRAIT);
+ break;
+ case 180:
+ ug_send_event (UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN);
+ break;
+ case 270:
+ ug_send_event (UG_EVENT_ROTATE_LANDSCAPE);
+ break;
+ case 90:
+ ug_send_event (UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN);
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+static bool viewer_create(void *data)
+{
+ int err = CONTACTS_ERROR_NONE;
+ ct_viewer_data *cviewer_d = (ct_viewer_data *) data;
+ Evas_Object *win;
+
+ err = contacts_connect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_connect2() Failed(%d)",
+ err);
+
+ /* create window */
+ win = cv_create_win(CV_PACKAGE);
+ p_retvm_if(NULL == win, false, "ctapp_create_win() Failed");
+ cviewer_d->win = win;
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+ evas_object_smart_callback_add(cviewer_d->win, "profile,changed", __win_profile_changed_cb, cviewer_d);
+#endif
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ evas_object_show(win);
+
+ if (elm_win_wm_rotation_supported_get(win))
+ {
+ int rotation[4] = { 0, 90, 180, 270 };
+ elm_win_wm_rotation_available_rotations_set(win,
+ (const int *) (&rotation), 4);
+ cviewer_d->current_rotate = elm_win_rotation_get(win);
+ ERR("rotate current %d", cviewer_d->current_rotate);
+ evas_object_smart_callback_add(win, "wm,rotation,changed",
+ __viewer_rotate_cb, cviewer_d);
+ }
+
+ UG_INIT_EFL(cviewer_d->win, UG_OPT_INDICATOR_PORTRAIT_ONLY);
+
+ return true;
+}
+
+static void viewer_terminate(void *data)
+{
+ int err = CONTACTS_ERROR_NONE;
+ ct_viewer_data *cviewer_d = (ct_viewer_data *) data;
+
+ if (cviewer_d->p_info)
+ {
+ cviewer_d->p_info->alive = false;
+ pthread_join(cviewer_d->p_info->thread, NULL);
+ ecore_timer_del(cviewer_d->p_info->timer);
+ free(cviewer_d->p_info);
+ }
+
+ free(cviewer_d->path);
+
+ if (cviewer_d->win)
+ {
+ evas_object_data_del(cviewer_d->win, "naviframe");
+ evas_object_del(cviewer_d->win);
+ cviewer_d->win = NULL;
+ }
+
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_disconnect2() Failed(%d)",
+ err);
+
+ return;
+}
+
+static void viewer_pause(void *data)
+{
+ return;
+}
+
+static void viewer_resume(void *data)
+{
+ return;
+}
+
+static bool viewer_load_vcard_foreach_cb(contacts_record_h record, void *data)
+{
+ ct_person_list *person_info = NULL;
+ ct_viewer_data *cviewer_d = (ct_viewer_data *) data;
+ int err = CONTACTS_ERROR_NONE;
+
+ if (NULL == cviewer_d)
+ {
+ ERR("Invalid parameter(cviewer_d is NULL)");
+ return false;
+ }
+
+ if (false == cviewer_d->p_info->alive)
+ return false;
+
+ person_info = (ct_person_list *) calloc(1, sizeof(ct_person_list));
+ if (NULL == person_info)
+ {
+ ERR("calloc() return NULL");
+ cviewer_d->p_info->result = FALSE;
+ if (cviewer_d->p_info->cnt == cviewer_d->p_info->cnt_checked_total)
+ cviewer_d->p_info->completed = true;
+ return false;
+ }
+
+ person_info->id = cviewer_d->p_info->cnt;
+ err = contacts_record_get_str(record, _contacts_contact.display_name,
+ &(person_info->display));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str() Failed(%d)", err);
+ person_info->img_loaded = true;
+
+ cviewer_d->list = eina_list_append(cviewer_d->list, person_info);
+ ++cviewer_d->p_info->cnt;
+ return true;
+
+}
+
+static PTHREAD_FN viewer_load_vcard_contacts_thread_fn(void* data)
+{
+ contacts_connect_on_thread();
+
+ int err = CONTACTS_ERROR_NONE;
+ ct_viewer_data *cviewer_d = (ct_viewer_data *) data;
+
+ err = contacts_vcard_parse_to_contact_foreach(cviewer_d->path,
+ viewer_load_vcard_foreach_cb, cviewer_d);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ cviewer_d->p_info->result = FALSE;
+ ERR("contacts_svc_vcard_foreach() Failed(%d)", err);
+ }
+ cviewer_d->p_info->completed = true;
+
+ contacts_disconnect_on_thread();
+
+ pthread_exit(NULL);
+}
+
+static inline void viewer_get_filename(char *fullpath, char *dest,
+ int size_dest)
+{
+ char* index;
+ index = strrchr(fullpath, '/');
+ snprintf(dest, size_dest, "%s", index + 1);
+}
+
+static Eina_Bool viewer_load_vcard_timer_cb(void *data)
+{
+ ct_viewer_data *cviewer_d = (ct_viewer_data *) data;
+
+ p_retvm_if(NULL == cviewer_d, ECORE_CALLBACK_CANCEL,
+ "parameter(ct_viewer_data) is NULL");
+ p_retvm_if(NULL == cviewer_d->p_info, ECORE_CALLBACK_CANCEL,
+ "parameter(ct_viewer_data->p_info) is NULL");
+
+ if (!cviewer_d->p_info->completed)
+ {
+ char count[PH_TEXT_SHORT_LEN];
+ char percent[PH_TEXT_SHORT_LEN];
+ double value = (double) cviewer_d->p_info->cnt
+ / (double) cviewer_d->p_info->cnt_checked_total;
+
+ if (!cviewer_d->p_info->alive)
+ {
+ cviewer_d->p_info->result = FALSE;
+ cviewer_d->p_info->completed = true;
+ return ECORE_CALLBACK_RENEW;
+ }
+
+ elm_progressbar_value_set(cviewer_d->p_info->progressbar, value);
+ snprintf(percent, sizeof(percent), "%d%%",
+ (int) (100.0 * (double) cviewer_d->p_info->cnt
+ / (double) cviewer_d->p_info->cnt_checked_total));
+ snprintf(count, sizeof(count), "%d/%d", cviewer_d->p_info->cnt,
+ cviewer_d->p_info->cnt_checked_total);
+ edje_object_part_text_set(
+ elm_layout_edje_get(cviewer_d->p_info->layout),
+ "elm.text.subtext1", percent);
+ edje_object_part_text_set(
+ elm_layout_edje_get(cviewer_d->p_info->layout),
+ "elm.text.subtext2", count);
+
+ if (cviewer_d->p_info->cnt == cviewer_d->p_info->cnt_checked_total)
+ cviewer_d->p_info->completed = true;
+
+ return ECORE_CALLBACK_RENEW;
+ }
+ else
+ {
+ pthread_join(cviewer_d->p_info->thread, NULL);
+
+ evas_object_del(cviewer_d->popup);
+ cviewer_d->popup = NULL;
+
+ cviewer_d->p_info->timer = NULL;
+
+ if (!cviewer_d->p_info->result)
+ {
+ free(cviewer_d->p_info);
+ cviewer_d->p_info = NULL;
+ elm_exit();
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ cviewer_d->content = ctui_create_vcard_list_view(cviewer_d->win,
+ cviewer_d->list, cviewer_d->path);
+ p_retvm_if(NULL == cviewer_d->content, ECORE_CALLBACK_CANCEL,
+ "ctui_create_vcard_list_view() return NULL");
+
+ free(cviewer_d->p_info);
+ cviewer_d->p_info = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+ }
+}
+
+static int viewer_load_vcard_contact(ct_viewer_data *cviewer_d)
+{
+ Evas_Object *popup;
+
+ if (cviewer_d->path && *cviewer_d->path)
+ {
+ cviewer_d->content = ctui_contacts_viewer(cviewer_d->win, NULL, 0,
+ cviewer_d->path);
+ if (NULL == cviewer_d->content)
+ {
+ ERR("ctui_contacts_viewer() return NULL");
+ elm_exit();
+ return -1;
+ }
+ }
+ else
+ {
+ popup = phone_show_popup(cviewer_d->win, S_(CT_SYS_POP_ERROR), 1.5);
+ evas_object_smart_callback_add(popup, "timeout", cv_win_del, NULL);
+ }
+ return 0;
+}
+
+static int viewer_load_vcard_contacts(ct_viewer_data *cviewer_d, int cnt_vcard)
+{
+ int ret;
+ char title[PH_TEXT_MAX_LEN];
+ char filepath[PH_TEXT_MAX_LEN];
+ ph_progress_info *p_info;
+
+ p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info));
+ if (NULL == p_info)
+ {
+ ERR("calloc() return NULL");
+ elm_exit();
+ return -1;
+ }
+
+ cviewer_d->p_info = p_info;
+ cviewer_d->list = NULL;
+
+ p_info->cnt = 0;
+ p_info->cnt_checked_total = cnt_vcard;
+ p_info->alive = true;
+ p_info->result = TRUE;
+ p_info->completed = false;
+
+ viewer_get_filename(cviewer_d->path, filepath, sizeof(filepath));
+ snprintf(title, sizeof(title), "%s<br>%s",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_LOADING_VCARD), filepath);
+
+ ret = pthread_create(&p_info->thread, NULL,
+ viewer_load_vcard_contacts_thread_fn, cviewer_d);
+ if (0 != ret)
+ {
+ ERR("Thread creation failed(%d)", ret);
+ free(p_info);
+ cviewer_d->p_info = NULL;
+ elm_exit();
+ return -1;
+ }
+ p_info->timer = ecore_timer_add(0.2, viewer_load_vcard_timer_cb, cviewer_d);
+ if (NULL == p_info->timer)
+ {
+ ERR("ecore_timer_add() return NULL");
+
+ p_info->alive = false;
+ pthread_join(p_info->thread, NULL);
+
+ free(p_info);
+ cviewer_d->p_info = NULL;
+ elm_exit();
+ return -1;
+ }
+ cviewer_d->popup = phone_progressbar_popup(cviewer_d->win, p_info, title);
+ return 0;
+}
+
+static void viewer_popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ elm_exit();
+}
+
+static bool __viewer_is_valid_person(int person_id)
+{
+ int err;
+ contacts_record_h record = NULL;
+ err = contacts_db_get_record(_contacts_person._uri, person_id, &record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ contacts_record_destroy(record, true);
+ return false;
+ }
+ contacts_record_destroy(record, true);
+ return true;
+}
+
+static void viewer_service(service_h service, void *data)
+{
+ int ret;
+ int person_id;
+ char *val = NULL;
+ char val_vcard[PH_TEXT_MAX_LEN];
+ int err = CONTACTS_ERROR_NONE;
+ ct_viewer_data *cviewer_d = (ct_viewer_data *) data;
+
+ if (NULL == cviewer_d->win)
+ {
+ ERR("win is NULL");
+ elm_exit();
+ return;
+ }
+
+ if (cviewer_d->p_info)
+ {
+ cviewer_d->p_info->alive = false;
+ pthread_join(cviewer_d->p_info->thread, NULL);
+ ecore_timer_del(cviewer_d->p_info->timer);
+ free(cviewer_d->p_info);
+ cviewer_d->p_info = NULL;
+ }
+
+ if (cviewer_d->content)
+ {
+ evas_object_del(cviewer_d->content);
+ cviewer_d->content = NULL;
+ }
+
+ ret = service_get_extra_data(service, "person_id", &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_get_operation is failed(%d)",
+ ret);
+
+ if (val && *val)
+ {
+ person_id = atoi(val);
+ if (person_id <= 0)
+ {
+ ERR("service value(person_id) is wrong(%d)", person_id);
+ }
+ else if (false == __viewer_is_valid_person(person_id))
+ {
+ Evas_Object *popup;
+ popup = elm_popup_add(cviewer_d->win);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_object_text_set(popup, T_(CT_GET_TEXT_ERR, CTTEXT_NO_CONTACTS));
+ elm_popup_timeout_set(popup, 2.0);
+ evas_object_smart_callback_add(popup, "timeout",
+ viewer_popup_hide_cb, NULL);
+ evas_object_show(popup);
+ }
+ else
+ {
+ cviewer_d->content = ctui_contacts_viewer(cviewer_d->win, NULL,
+ person_id, NULL);
+ if (NULL == cviewer_d->content)
+ {
+ Evas_Object *popup;
+ ERR("ctui_contacts_viewer() return NULL");
+ popup = elm_popup_add(cviewer_d->win);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_object_text_set(popup, S_(PH_SYS_POP_FAILED));
+ elm_popup_timeout_set(popup, 2.0);
+ evas_object_smart_callback_add(popup, "timeout",
+ viewer_popup_hide_cb, NULL);
+
+ evas_object_show(popup);
+ }
+ free(val);
+ }
+ }
+ else
+ {
+ int cnt_vcard = 0;
+ ret = service_get_uri(service, &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_get_uri is failed(%d)",
+ ret);
+
+ val_vcard[0] = '\0';
+
+ if (val && *val)
+ {
+ if (0 == strncmp(val, "file://", 7))
+ snprintf(val_vcard, sizeof(val_vcard), "%s", val + 7);
+ else
+ snprintf(val_vcard, sizeof(val_vcard), "%s", val);
+ }
+ else
+ {
+ ret = service_get_extra_data(service, AUL_K_MIME_CONTENT, &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret,
+ "service_get_extra_data is failed(%d)", ret);
+ if (val && *val)
+ snprintf(val_vcard, sizeof(val_vcard), "%s", val);
+ }
+ free(val);
+
+ if ('\0' == *val_vcard)
+ {
+ ERR("service value is NULL");
+ elm_exit();
+ return;
+ }
+
+ free(cviewer_d->path);
+ cviewer_d->path = strdup(val_vcard);
+ err = contacts_vcard_get_entity_count(cviewer_d->path, &cnt_vcard);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_vcard_get_entity_count() Failed(%d)", err);
+
+ if (cnt_vcard < 1)
+ {
+ ERR("invalid vcard(%s)", cviewer_d->path);
+ elm_exit();
+ return;
+ }
+ else if (1 == cnt_vcard)
+ {
+ ret = viewer_load_vcard_contact(cviewer_d);
+ if (0 != ret)
+ {
+ ERR("viewer_load_vcard_contact() Failed(%d)", ret);
+ elm_exit();
+ return;
+ }
+ }
+ else
+ {
+ ret = viewer_load_vcard_contacts(cviewer_d, cnt_vcard);
+ if (0 != ret)
+ {
+ ERR("viewer_load_vcard_contact() Failed(%d)", ret);
+ elm_exit();
+ return;
+ }
+ }
+ }
+ elm_win_activate(cviewer_d->win);
+ return;
+}
+
+API int main(int argc, char *argv[])
+{
+ ct_viewer_data ad = { 0 };
+ app_event_callback_s event_callback = { 0, };
+
+ //vibration engine set, guide by settings - temporary fix
+ elm_init(argc, argv);
+ elm_config_preferred_engine_set("opengl_x11");
+
+ event_callback.create = viewer_create;
+ event_callback.terminate = viewer_terminate;
+ event_callback.pause = viewer_pause;
+ event_callback.resume = viewer_resume;
+ event_callback.service = viewer_service;
+ event_callback.low_memory = NULL;
+ event_callback.low_battery = NULL;
+ event_callback.language_changed = NULL;
+ event_callback.region_format_changed = NULL;
+
+ return app_efl_main(&argc, &argv, &event_callback, &ad);
+}
diff --git a/contacts-viewer/icon_contacts-viewer.png b/contacts-viewer/icon_contacts-viewer.png
new file mode 100644
index 0000000..900dcde
--- /dev/null
+++ b/contacts-viewer/icon_contacts-viewer.png
Binary files differ
diff --git a/contacts-viewer/org.tizen.contacts-viewer.xml b/contacts-viewer/org.tizen.contacts-viewer.xml
new file mode 100755
index 0000000..8a55e80
--- /dev/null
+++ b/contacts-viewer/org.tizen.contacts-viewer.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.contacts-viewer" version="0.1.2" install-location="internal-only">
+ <label>Contacts-Viewer</label>
+ <author email="ensung.park@samsung.com" href="www.samsung.com">ensung park</author>
+ <description>Contacts-Viewer Application</description>
+ <ui-application appid="org.tizen.contacts-viewer" exec="/usr/apps/org.tizen.contacts-viewer/bin/contacts-viewer" nodisplay="true" multiple="false" type="capp" taskmanage="true">
+ <icon>org.tizen.contacts.png</icon>
+ <label>Contacts-Viewer</label>
+ <label xml:lang="en-us">Contacts-Viewer</label>
+ <label xml:lang="nl-nl">Contacts-Viewer</label>
+ <label xml:lang="de-de">Contacts-Viewer</label>
+ <label xml:lang="en-gb">Contacts-Viewer</label>
+ <label xml:lang="zh-hk">Contacts-Viewer</label>
+ <label xml:lang="zh-cn">Contacts-Viewer</label>
+ <label xml:lang="ru-ru">Contacts-Viewer</label>
+ <label xml:lang="zh-tw">Contacts-Viewer</label>
+ <label xml:lang="ja-jp">Contacts-Viewer</label>
+ <label xml:lang="es-es">Contacts-Viewer</label>
+ <label xml:lang="el-gr">Contacts-Viewer</label>
+ <label xml:lang="it-it">Contacts-Viewer</label>
+ <label xml:lang="tr-tr">Contacts-Viewer</label>
+ <label xml:lang="pt-pt">Contacts-Viewer</label>
+ <label xml:lang="fr-fr">Contacts-Viewer</label>
+ <label xml:lang="ko-kr">Contacts-Viewer</label>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/view"/>
+ <mime name="text/x-vcard"/>
+ <mime name="text/directory"/>
+ <mime name="text/vcard"/>
+ </application-service>
+
+ </ui-application>
+</manifest>
diff --git a/contacts/CMakeLists.txt b/contacts/CMakeLists.txt
new file mode 100644
index 0000000..0e9464e
--- /dev/null
+++ b/contacts/CMakeLists.txt
@@ -0,0 +1,24 @@
+SET(CONTACTS "contacts")
+SET(CONTACTS_PKGNAME "org.${VENDOR}.${CONTACTS}")
+
+SET(CONTACTS_SRCS contacts.cpp)
+
+ADD_DEFINITIONS("-DC_PACKAGE=\"${CONTACTS}\"")
+
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fPIC")
+
+FOREACH(flag ${contacts_pkgs_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+ADD_EXECUTABLE(${CONTACTS} ${CONTACTS_SRCS})
+SET_TARGET_PROPERTIES(${CONTACTS} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS} -fpie")
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/ct-front/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/common/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/common/Utils/include)
+TARGET_LINK_LIBRARIES(${CONTACTS} ${contacts_pkgs_LDFLAGS} common ug-contacts-tabui-efl "-pie")
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/${CONTACTS}/${CONTACTS_PKGNAME}.xml DESTINATION "/usr/share/packages")
+INSTALL(FILES icon_${CONTACTS}.png DESTINATION "/usr/share/icons/default/small" RENAME "${CONTACTS_PKGNAME}.png")
+INSTALL(TARGETS ${CONTACTS} DESTINATION /usr/apps/${CONTACTS_PKGNAME}/bin)
+INSTALL(DIRECTORY DESTINATION /usr/apps/${CONTACTS_PKGNAME}/data)
diff --git a/contacts/contacts.cpp b/contacts/contacts.cpp
new file mode 100755
index 0000000..46ecbea
--- /dev/null
+++ b/contacts/contacts.cpp
@@ -0,0 +1,364 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <app.h>
+#include <Ecore_X.h>
+#include <aul.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include "phone.h"
+#include "phone-common.h"
+#include "ct-front.h"
+
+
+#include <iostream>
+
+#if !defined(C_PACKAGE)
+# define C_PACKAGE "contacts"
+#endif
+
+struct contact_data
+{
+ Evas_Object *win;
+ ct_front_data *cfront_d;
+ /* add more variables here */
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+ Evas_Object *icon;
+ Evas_Object *prev_btn;
+#endif
+ int current_rotate;
+
+ bool shouldStopOnStart;
+ public:
+ contact_data()
+ :
+ win(NULL),
+ cfront_d(NULL),
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+ icon(NULL),
+ prev_btn(NULL),
+#endif
+ current_rotate(0),
+ shouldStopOnStart(false)
+ {
+ }
+};
+
+extern "C" int appcore_set_open_cb(int (*cb) (void *), void *data);
+
+static void ctapp_win_del(void *data, Evas_Object *obj, void *event)
+{
+ PH_TRACE;
+ elm_exit();
+}
+
+static Evas_Object* ctapp_create_win(const char *name)
+{
+ PH_TRACE;
+ Evas_Object *eo;
+ int w, h;
+ eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+ if (eo)
+ {
+ elm_win_title_set(eo, name);
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+#else
+ elm_win_borderless_set(eo, EINA_TRUE);
+#endif
+ evas_object_smart_callback_add(eo, "delete,request", ctapp_win_del,
+ NULL);
+ ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+ evas_object_resize(eo, w, h);
+ elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
+ }
+ elm_win_conformant_set(eo, EINA_TRUE);
+ return eo;
+}
+
+static void ctapp_region_changed(void *data)
+{
+ PH_TRACE;
+ struct contact_data *ad = (contact_data *) data;
+ ct_front_data *cfront_d = ad->cfront_d;
+ ctui_front_view_region_changed(cfront_d);
+ ug_send_event (UG_EVENT_REGION_CHANGE);
+ return;
+}
+
+static void ctapp_language_changed(void *data)
+{
+ PH_TRACE;
+ struct contact_data *ad = (contact_data *) data;
+ ct_front_data *cfront_d = ad->cfront_d;
+ ctui_front_view_language_changed(cfront_d);
+ ug_send_event (UG_EVENT_LANG_CHANGE);
+ return;
+}
+
+static int ctapp_open(void *data)
+{
+ PH_TRACE;
+ struct contact_data *ad = (contact_data *) data;
+ ct_front_data *cfront_d = ad->cfront_d;
+ if (EINA_FALSE == evas_object_visible_get(cfront_d->win))
+ {
+ evas_object_show(cfront_d->win);
+ if (CT_VIEW_NONE == cfront_d->select_tab)
+ ctui_front_view_reset(cfront_d, CT_VIEW_CONTACT, -1, NULL);
+ }
+ return 0;
+}
+
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+static Evas_Object* __set_win_icon(struct contact_data *ad)
+{
+ PH_TRACE;
+ Evas_Object *image = evas_object_image_add(evas_object_evas_get(ad->win));
+ evas_object_image_file_set(image, "/usr/share/icons/default/small/org.tizen.contacts.png", NULL);
+ elm_win_icon_object_set(ad->win, image);
+
+ return image;
+}
+
+static void __win_profile_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ if(data == NULL)
+ return;
+
+ struct contact_data *ad = (contact_data *) data;
+
+ const char *profile = elm_config_profile_get();
+ if(!strcmp(profile, "desktop"))
+ {
+ Elm_Object_Item *navi_item = elm_naviframe_bottom_item_get(ad->cfront_d->navi);
+ ad->prev_btn = elm_object_item_part_content_unset(navi_item, "prev_btn");
+ elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE);
+ if(!ad->icon)
+ ad->icon = __set_win_icon(ad);
+ }
+ else
+ {
+ Elm_Object_Item *navi_item = elm_naviframe_bottom_item_get(ad->cfront_d->navi);
+ if (ad->prev_btn)
+ {
+ elm_object_item_part_content_set(navi_item, "prev_btn", ad->prev_btn);
+ ad->prev_btn = NULL;
+ }
+ elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW);
+ }
+}
+#endif //_PHONE_CONTACTS_DESKTOP_MODE_
+static void __ctapp_rotate_cb(void *data, Evas_Object *obj, void *event)
+{
+ PH_TRACE;
+ struct contact_data *ad = (contact_data *) data;
+ int changed_rotate = elm_win_rotation_get(obj);
+ if (changed_rotate != ad->current_rotate)
+ {
+ ERR("rotate changed %d", changed_rotate);
+ ad->current_rotate = changed_rotate;
+
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+ const char *config = elm_config_profile_get();
+ if (!strcmp(config, "desktop"))
+ return;
+#endif
+
+ ctui_front_view_rotate(ad->cfront_d, ad->current_rotate);
+ }
+}
+
+static bool ctapp_create(void *data)
+{
+ PH_TRACE;
+ struct contact_data *ad = (contact_data *) data;
+ Evas_Object *win;
+ int err = CONTACTS_ERROR_NONE;
+
+ /* create window */
+ win = ctapp_create_win(C_PACKAGE);
+ p_retvm_if(NULL == win, false, "phapp_create_win() Failed");
+ ad->win = win;
+
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ err = contacts_connect2();
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ Evas_Object *popup;
+ ERR("contacts_connect2() Failed(%d)", err);
+ evas_object_show(win);
+ popup = elm_popup_add(win);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(popup);
+ elm_object_text_set(popup, T_(PH_GET_TEXT_BASIC, PHTEXT_INITIALIZING));
+ elm_popup_timeout_set(popup, 1.5);
+ evas_object_smart_callback_add(popup, "timeout", ctapp_win_del, NULL);
+ return true;
+ }
+
+ if(!has_emergency_contacts())
+ {
+ create_emergency_contacts_group();
+ }
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+ evas_object_smart_callback_add(ad->win, "profile,changed", __win_profile_changed_cb, ad);
+#endif
+
+ UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE);
+ ad->cfront_d = ctui_front_view_create(ad->win);
+
+ if (elm_win_wm_rotation_supported_get(win))
+ {
+ int rotation[4] = { 0, 90, 180, 270 };
+ elm_win_wm_rotation_available_rotations_set(win,
+ (const int *) (&rotation), 4);
+ ad->current_rotate = elm_win_rotation_get(win);
+ ERR("rotate current %d", ad->current_rotate);
+ evas_object_smart_callback_add(win, "wm,rotation,changed",
+ __ctapp_rotate_cb, ad);
+ }
+
+ appcore_set_open_cb(ctapp_open, data);
+ return true;
+}
+
+static void ctapp_terminate(void *data)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ struct contact_data *ad = (contact_data *) data;
+
+ if (NULL != ad->win)
+ evas_object_del(ad->win);
+ //ug_destroy_all();
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_disconnect2() Failed(%d)",
+ err);
+ return;
+}
+
+static void ctapp_pause(void *data)
+{
+ PH_TRACE;
+ struct contact_data *ad = (contact_data *) data;
+ ctui_front_view_pause(ad->cfront_d);
+ ug_pause();
+ return;
+}
+
+static void ctapp_resume(void *data)
+{
+ PH_TRACE;
+ struct contact_data *ad = (contact_data *) data;
+ ct_front_data *cfront_d = ad->cfront_d;
+ if (CT_VIEW_NONE == cfront_d->select_tab)
+ ctui_front_view_reset(cfront_d, CT_VIEW_CONTACT, -1, NULL);
+ else
+ ctui_front_view_resume(ad->cfront_d);
+ ug_resume();
+ return;
+}
+
+static void ctapp_service(service_h service, void *data)
+{
+ PH_TRACE;
+ struct contact_data *ad = (contact_data *) data;
+ ct_front_data *cfront_d;
+ int ret;
+ char* val = NULL;
+
+ p_retm_if(NULL == ad || NULL == ad->cfront_d, "data is null");
+ cfront_d = ad->cfront_d;
+
+ ret = service_get_extra_data(service, "launch_type", &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_get_extra_data is failed(%d)",
+ ret);
+
+ if (val && *val)
+ {
+ if (0 == strcmp(val, "favorite"))
+ ctui_front_view_reset(cfront_d, CT_VIEW_FAVORITE, -1, NULL);
+ else if (0 == strcmp(val, "groups"))
+ ctui_front_view_reset(cfront_d, CT_VIEW_GROUP, -1, NULL);
+ else if (0 == strcmp(val, "group_message"))
+ ctui_front_view_reset(cfront_d, CT_VIEW_GROUP,
+ CT_FRONT_GROUP_MESSAGE, service);
+ else if (0 == strcmp(val, "group_email"))
+ ctui_front_view_reset(cfront_d, CT_VIEW_GROUP, CT_FRONT_GROUP_EMAIL,
+ service);
+ else if (0 == strcmp(val, "group_detail"))
+ ctui_front_view_reset(cfront_d, CT_VIEW_GROUP,
+ CT_FRONT_GROUP_DETAIL, service);
+ else if (0 == strcmp(val, "new"))
+ ctui_front_view_reset(cfront_d, CT_VIEW_CONTACT,
+ CT_FRONT_CONTACT_NEW, NULL);
+ else if (0 == strcmp(val, "addrbook"))
+ ctui_front_view_reset(cfront_d, CT_VIEW_CONTACT,
+ CT_FRONT_CONTACT_ADDR, service);
+ else if (0 == strcmp(val, "booting"))
+ elm_win_lower(cfront_d->win);
+ free(val);
+ return;
+ }
+
+ ret = service_get_extra_data(service, "search_name", &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_get_extra_data is failed(%d)",
+ ret);
+
+ if (val && *val)
+ {
+ ctui_front_view_reset(cfront_d, CT_VIEW_CONTACT,
+ CT_FRONT_CONTACT_SEARCH, service);
+ free(val);
+ return;
+ }
+
+ ctui_front_view_reset(cfront_d, CT_VIEW_CONTACT, -1, NULL);
+ return;
+}
+
+API int main(int argc, char *argv[])
+{
+ PH_TRACE;
+ contact_data ad;
+ app_event_callback_s event_callback = { 0, };
+
+ if (argc > 1)
+ {
+ if (strcmp(argv[1], "-debug") == 0)
+ {
+ ad.shouldStopOnStart = true;
+ std::cout << std::string("running in debug mode..") << std::endl;
+ std::cout << std::string("Press 'Enter' after attaching with debugger.") << std::endl;
+ getchar();
+ }
+ }
+
+ event_callback.create = ctapp_create;
+ event_callback.terminate = ctapp_terminate;
+ event_callback.pause = ctapp_pause;
+ event_callback.resume = ctapp_resume;
+ event_callback.service = ctapp_service;
+ event_callback.low_memory = NULL;
+ event_callback.low_battery = NULL;
+ event_callback.language_changed = ctapp_language_changed;
+ event_callback.region_format_changed = ctapp_region_changed;
+
+ return app_efl_main(&argc, &argv, &event_callback, &ad);
+}
+
diff --git a/contacts/icon_contacts.png b/contacts/icon_contacts.png
new file mode 100644
index 0000000..725edd1
--- /dev/null
+++ b/contacts/icon_contacts.png
Binary files differ
diff --git a/contacts/org.tizen.contacts.xml b/contacts/org.tizen.contacts.xml
new file mode 100755
index 0000000..b9cde90
--- /dev/null
+++ b/contacts/org.tizen.contacts.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.contacts" version="0.1.2" install-location="internal-only">
+ <label>Contacts</label>
+ <author email="ensung.park@samsung.com" href="www.samsung.com">ensung park</author>
+ <description>Contacts Application</description>
+ <ui-application appid="org.tizen.contacts" exec="/usr/apps/org.tizen.contacts/bin/contacts" nodisplay="false" multiple="false" type="capp" taskmanage="true">
+ <icon>org.tizen.contacts.png</icon>
+ <label>Contacts</label>
+ <label xml:lang="hy-am">Կոնտակտներ</label>
+ <label xml:lang="az-az">Adlar</label>
+ <label xml:lang="eu-es">Kontaktuak</label>
+ <label xml:lang="bg-bg">Телефонен указател</label>
+ <label xml:lang="ca-es">Contactes</label>
+ <label xml:lang="zh-cn">联系人</label>
+ <label xml:lang="zh-hk">聯絡人</label>
+ <label xml:lang="zh-tw">聯絡人</label>
+ <label xml:lang="hr-hr">Imenik</label>
+ <label xml:lang="cs-cz">Kontakty</label>
+ <label xml:lang="da-dk">Kontakter</label>
+ <label xml:lang="nl-nl">Contacten</label>
+ <label xml:lang="en-gb">Contacts</label>
+ <label xml:lang="en-us">Contacts</label>
+ <label xml:lang="et-ee">Kontaktid</label>
+ <label xml:lang="fi-fi">Yhteystiedot</label>
+ <label xml:lang="fr-fr">Contacts</label>
+ <label xml:lang="gl-es">Contactos</label>
+ <label xml:lang="ka-ge">კონტაქტები</label>
+ <label xml:lang="de-de">Kontakte</label>
+ <label xml:lang="el-gr">Επαφές</label>
+ <label xml:lang="hu-hu">Névjegyek</label>
+ <label xml:lang="is-is">Tengiliðir</label>
+ <label xml:lang="ga-ie">Teagmhálaithe</label>
+ <label xml:lang="it-it">Rubrica</label>
+ <label xml:lang="ja-jp">電話帳</label>
+ <label xml:lang="kk-kz">Контактілер</label>
+ <label xml:lang="ko-kr">전화번호부</label>
+ <label xml:lang="lv-lv">Kontakti</label>
+ <label xml:lang="lt-lt">Adresatai</label>
+ <label xml:lang="mk-mk">Именик</label>
+ <label xml:lang="nb-no">Kontakter</label>
+ <label xml:lang="pl-pl">Kontakty</label>
+ <label xml:lang="pt-pt">Contactos</label>
+ <label xml:lang="pt-br">Contatos</label>
+ <label xml:lang="ro-ro">Contacte</label>
+ <label xml:lang="ru-ru">Контакты</label>
+ <label xml:lang="sr-rs">Kontakti</label>
+ <label xml:lang="sk-sk">Kontakty</label>
+ <label xml:lang="sl-si">Imenik</label>
+ <label xml:lang="es-es">Contactos</label>
+ <label xml:lang="es-us">Contactos</label>
+ <label xml:lang="sv-se">Kontakter</label>
+ <label xml:lang="tr-tr">Rehber</label>
+ <label xml:lang="uk-ua">Контакти</label>
+ <label xml:lang="uz-uz">Kontaktlar</label>
+ <label xml:lang="ar-ae">الأسماء</label>
+ <label xml:lang="zh-sg">"联系人</label>
+ <label xml:lang="hi-in">संपर्क</label>
+ <label xml:lang="en-ph">Contacts</label>
+ <label xml:lang="fr-ca">Contacts</label>
+ </ui-application>
+
+</manifest>
diff --git a/deploy b/deploy
new file mode 100755
index 0000000..1cc38e1
--- /dev/null
+++ b/deploy
@@ -0,0 +1,113 @@
+#!/bin/bash
+
+usage()
+{
+ echo "Usage: `basename $0` [-h|--help] [-e|--emulator] [-d|--device]
+ -h, --help Show this message.
+ -e, --emulator Install on emulator (default).
+ -d, --device Install on device."
+}
+
+DEVS=($(sdb devices | tail -n+2))
+
+if [ -z $DEVS ]
+then
+ echo "Please connect device or launch emulator."
+ exit 1
+fi
+
+if [ -z $1 ]
+then
+ DEV=e
+ ARCH=i586
+else
+ case $1 in
+ -e|--emulator)
+ DEV=e
+ ARCH=i586
+ ;;
+ -d|--device)
+ DEV=d
+ ARCH=armv7l
+ ;;
+ -h|--help)
+ ;&
+ *)
+ usage
+ exit 1
+ ;;
+ esac
+fi
+
+push()
+{
+ GBS=~/GBS-ROOT
+ ROOT=$GBS/local/BUILD-ROOTS/scratch.$ARCH.0
+
+ if [ ! -e $ROOT/*.conf ]
+ then
+ echo "Build root is not ready at $ROOT."
+ exit 1
+ fi
+
+ REPO=$(basename $ROOT/*.conf)
+ REPO=${REPO%.*}
+ RPMS=$GBS/local/repos/$REPO/$ARCH/RPMS
+
+ if [ ! -e "$RPMS/$1" ]
+ then
+ echo "Can't find $1 in $RPMS. Run build first."
+ exit 1
+ fi
+
+ echo "Pushing $1 into $2..."
+ sdb -$DEV push "$RPMS/$1" "$2" 2> /dev/null
+}
+
+install()
+{
+ echo "Installing $2..."
+ if [[ "$2" == lib* ]]
+ then
+ sdb -$DEV root on > /dev/null
+ sdb -$DEV shell rpm -i --force "$1/$2" > /dev/null
+ sdb -$DEV root off > /dev/null
+ else
+ sdb -$DEV shell pkgcmd -iqt rpm -p "$1/$2" > /dev/null
+ fi
+}
+
+deploy()
+{
+ push "$1" "$2"
+ install "$2" "$1"
+ sdb -$DEV shell rm "$2/$1" > /dev/null
+}
+
+DEST=/home/developer
+VER=$(grep Version: packaging/*.spec | awk '{print $2}')
+REL=$(grep Release: packaging/*.spec | awk '{print $2}')
+SUFFIX="$VER-$REL.$ARCH.rpm"
+PKGS=($(grep %package packaging/*.spec | awk '{print $3}'))
+
+if [ -z $PKGS ]
+then
+ PKG=$(grep Name: packaging/*.spec | awk '{print $2}')
+ deploy "$PKG-$SUFFIX" "$DEST"
+else
+ echo "Current package contains several sub-packages:"
+ for i in ${!PKGS[@]}
+ do
+ echo "$((i + 1)). ${PKGS[$i]}"
+ done
+
+ echo "Specify packages and order of installation (for example: 5 1):"
+ read NUMS
+
+ for i in $NUMS
+ do
+ deploy "${PKGS[$((i - 1))]}-$SUFFIX" "$DEST"
+ done
+fi
+echo "Done."
+
diff --git a/gbs/.gbs.conf b/gbs/.gbs.conf
new file mode 100644
index 0000000..8bfa7ba
--- /dev/null
+++ b/gbs/.gbs.conf
@@ -0,0 +1,37 @@
+[general]
+#Current profile name which should match a profile section name
+profile = profile.tizendev
+
+[profile.tizendev]
+#Common authentication info for whole profile
+#user =
+#CAUTION: please use the key name "passwd" to reset plaintext password
+#passwd =
+obs = obs.tizendev
+#Comma separated list of repositories
+repos = repo.tizendev_latest
+#repos = repo.tizendev_local,repo.tizendev_latest
+#repos = repo.tizendev_snapshot
+
+[obs.tizendev]
+#OBS API URL pointing to a remote OBS.
+url = https://api.tizendev.org
+#Optional user and password, set if differ from profile's user and password
+#user =
+#passwd =
+
+[repo.tizendev_latest]
+#Build against repo's URL
+url = https://download.tizendev.org/snapshots/tizen-2.2/common/latest
+#url = https://download.tizendev.org/snapshots/tizen-2.2/common/latest
+#Optional user and password, set if differ from profile's user and password
+user = %name%
+passwdx = %passwd%
+
+[repo.tizendev_snapshot]
+url = https://download.tizendev.org/snapshots/trunk/common/tizen_20120801.1
+
+[repo.tizendev_local]
+#repo for your local packages
+#url = /path_to_your_local_repo
+#url = http://local_server/path_to_repo
diff --git a/include/contacts-ug.h b/include/contacts-ug.h
new file mode 100755
index 0000000..ac56147
--- /dev/null
+++ b/include/contacts-ug.h
@@ -0,0 +1,268 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+#ifndef __CONTACTS_UG_H__
+#define __CONTACTS_UG_H__
+
+/**
+ * @defgroup CONTACTS_UG Contacts UI-gadget
+ * @ingroup SLP_UG
+ * @addtogroup CONTACTS_UG
+ * @{
+ *
+ * Contacts UI-gadget
+ * \n This header file contains the declaration & description for Contacts UG.
+ *
+ * @section Header To use Them:
+ * @code
+ * #include <contacts-ug.h>
+ * @endcode
+ *
+ * @section example Example:
+ * @code
+ #include <stdio.h>
+ #include <ui-gadget.h>
+ #include <contacts-ug.h>
+
+ void contacts_detail_ug(int contact_id)
+ {
+ bundle *bd;
+ char buf[16];
+
+ bd = bundle_create();
+ if(NULL == bd) {
+ ERR("bundle_create() Failed");
+ return;
+ }
+
+ snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_DETAIL);
+ bundle_add(bd, CT_UG_BUNDLE_TYPE, buf);
+ snprintf(buf, sizeof(buf), "%d", contact_id);
+ bundle_add(bd, CT_UG_BUNDLE_ID, buf);
+
+ cbs.layout_cb = ug_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = ug_destroy_cb;
+
+ ug = ug_create(NULL, UG_CONTACTS_DETAILS, UG_MODE_FULLVIEW, bd, &cbs);
+ if(NULL == ug)
+ ERR("ug_create() Failed");
+
+ bundle_free(bd);
+ }
+ * @endcode
+ *
+ */
+
+/**
+ * The name of details/new/edit UG
+ * @see #CT_UG_DETAILS_TYPES
+ */
+#define UG_CONTACTS_DETAILS "contacts-details-efl"
+
+/**
+ * The name of list UG
+ * @see #CT_UG_LIST_TYPES
+ */
+#define UG_CONTACTS_LIST "contacts-list-efl"
+
+/**
+ * The name of setting UG
+ */
+#define UG_CONTACTS_SETTINGS "contacts-settings-efl"
+
+/**
+ * types of #UG_CONTACTS_DETAILS
+ */
+enum CT_UG_DETAILS_TYPES
+{
+ CT_UG_REQUEST_DETAIL = 0,/**< . */
+
+ CT_UG_REQUEST_EDIT = 11,/**< . */
+
+ CT_UG_REQUEST_ADD = 21,/**< . */
+ CT_UG_REQUEST_ADD_WITH_NUM = 22,/**< . */
+ CT_UG_REQUEST_ADD_WITH_EMAIL = 23,/**< . */
+ CT_UG_REQUEST_ADD_WITH_WEB = 24, /**< . */
+};
+
+/**
+ * types of #UG_CONTACTS_LIST
+ */
+enum CT_UG_LIST_TYPES
+{
+ CT_UG_REQUEST_LIST = 0,/**< . */
+ CT_UG_REQUEST_LIST_WITH_BACK = 1,/**< . */
+
+ CT_UG_REQUEST_SELECT_PERSON = 11,/**< . */
+ CT_UG_REQUEST_SELECT_NUMBER = 12,/**< . */
+ CT_UG_REQUEST_SELECT_EMAIL = 13,/**< . */
+ CT_UG_REQUEST_SELECT_VCARD = 14,/**< . */
+ CT_UG_REQUEST_SELECT_CONTACT_ADD_TO_HOME = 15,/**< . */
+ CT_UG_REQUEST_SELECT_GROUP_ADD_TO_HOME = 16,/**< . */
+ CT_UG_REQUEST_SELECT_NUMBER_OR_EMAIL = 17,/**< . */
+ CT_UG_REQUEST_SELECT_GROUP = 18, /**< . */
+
+ CT_UG_REQUEST_UPDATE_CONTACT = 20,/**< . */
+ CT_UG_REQUEST_UPDATE_WITH_NUM = 21,/**< . */
+ CT_UG_REQUEST_UPDATE_WITH_EMAIL = 22,/**< . */
+ CT_UG_REQUEST_UPDATE_WITH_WEB = 23,/**< . */
+
+ CT_UG_REQUEST_CHECK = 31,/**< . */
+ CT_UG_REQUEST_CHECK_FOR_NUMBER = 32,/**< . */
+ CT_UG_REQUEST_CHECK_FOR_EMAIL = 33,/**< . */
+ CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL = 34,/**< . */
+
+ CT_UG_REQUEST_SAVE_IMG = 41,/**< . */
+ CT_UG_REQUEST_SAVE_RINGTONE = 42,/**< . */
+
+ CT_UG_REQUEST_SHARE_CONTACT_INFO = 61, /**< . */
+};
+
+#define CT_UG_BUNDLE_ACCOUNTID "account_id"
+#define CT_UG_BUNDLE_PERSON_ID "ct_person_id"
+
+/**
+ * The key of request bundle for type.
+ * \n Value : convert id to string by using \%d.
+ */
+#define CT_UG_BUNDLE_TYPE "type"
+
+/**
+ * The key of request bundle for contact index
+ * \n Value : convert id to string by using \%d
+ * \n Use on #CT_UG_REQUEST_DETAIL, #CT_UG_REQUEST_EDIT
+ */
+#define CT_UG_BUNDLE_ID "person_id"
+
+/**
+ * The key of request bundle for vcard stream.
+ * \n Value : vcard stream.(It is not a filepath.)
+ * \n Use only on #CT_UG_REQUEST_ADD.
+ */
+#define CT_UG_BUNDLE_VCARD "ct_vcard"
+
+/**
+ * The key of request bundle for number
+ * \n Use on #CT_UG_REQUEST_ADD_WITH_NUM, #CT_UG_REQUEST_UPDATE_WITH_NUM
+ * \n Value : (string)number
+ */
+#define CT_UG_BUNDLE_NUM "ct_num"
+
+/**
+ * The key of request bundle for email
+ * \n Use on #CT_UG_REQUEST_ADD_WITH_EMAIL, #CT_UG_REQUEST_UPDATE_WITH_EMAIL
+ * \n (string)email address
+ */
+#define CT_UG_BUNDLE_EMAIL "ct_email"
+
+/**
+ * The key of request bundle for web
+ * \n Use on #CT_UG_REQUEST_ADD_WITH_WEB, #CT_UG_REQUEST_UPDATE_WITH_WEB
+ * \n Value : (string)web address
+ */
+#define CT_UG_BUNDLE_WEB "ct_web"
+
+/**
+ * The key of request bundle for path(ringtone or img)
+ * \n Use on #CT_UG_REQUEST_SAVE_IMG, #CT_UG_REQUEST_SAVE_RINGTONE
+ * \n Value : (string)absolutely path
+ */
+#define CT_UG_BUNDLE_PATH "ct_path"
+
+/**
+ * The key of request bundle for maximum number to select.
+ * \n Use on #CT_UG_REQUEST_CHECK
+ * \n Value : convert maximum number to string by using \%d (0 is ALL)
+ */
+#define CT_UG_BUNDLE_MAX "ct_max"
+
+/**
+ * The key of result bundle for contact index
+ * \n The contact index on #CT_UG_REQUEST_ADD , CT_UG_REQUEST_ADD_XXX
+ * \n The contact index on #CT_UG_REQUEST_SELECT_PERSON
+ * \n Value : convert id to integer by using atoi()
+ * \n Recommends to destroy Contacts UG at ug_cbs.destroy_cb.(not ug_cbs.result_cb)
+ * \n In ug_cbs.result_cb, ug_destroy() should not be called.
+ */
+#define CT_UG_BUNDLE_RESULT_PERSON_ID "person_id"
+
+/**
+ * The key of result bundle for the index of number value
+ * \n The number value index on #CT_UG_REQUEST_SELECT_NUMBER
+ * \n Value : convert id to integer by using atoi()
+ * \n Recommends to destroy Contacts UG at ug_cbs.destroy_cb.(not ug_cbs.result_cb)
+ * \n In ug_cbs.result_cb, ug_destroy() should not be called.
+ */
+#define CT_UG_BUNDLE_RESULT_NUMBER_ID "num_id"
+
+/**
+ * The key of result bundle for the index of email value
+ * \n The email value index on #CT_UG_REQUEST_SELECT_EMAIL
+ * \n Value : convert id to integer by using atoi()
+ * \n Recommends to destroy Contacts UG at ug_cbs.destroy_cb.(not ug_cbs.result_cb)
+ * \n In ug_cbs.result_cb, ug_destroy() should not be called.
+ */
+#define CT_UG_BUNDLE_RESULT_EMAIL_ID "email_id"
+
+/**
+ * The key of result bundle for the index of group value
+ * \n The group value index on #CT_UG_REQUEST_SELECT_GROUP
+ * \n Value : convert id to integer by using atoi()
+ * \n Recommends to destroy Contacts UG at ug_cbs.destroy_cb.(not ug_cbs.result_cb)
+ * \n In ug_cbs.result_cb, ug_destroy() should not be called.
+ */
+#define CT_UG_BUNDLE_RESULT_GROUP_ID "group_id"
+
+/**
+ * The key of result bundle for a list of contact index
+ * \n The contact index on #CT_UG_REQUEST_CHECK
+ * \n Value : convert string to a integer array by using g_base64_decode()
+ * \n Recommends to destroy Contacts UG at ug_cbs.destroy_cb.(not ug_cbs.result_cb)
+ * \n In ug_cbs.result_cb, ug_destroy() should not be called.
+ * @par example
+ * @code
+ void contacts_result_cb(struct ui_gadget *ug, bundle *result, void *data)
+ {
+ if(NULL == ug || NULL == data)
+ return;
+
+ if(result) {
+ const char *val;
+ int *list, len, i;
+
+ val = bundle_get_val(result, CT_UG_BUNDLE_RESULT_PERSON_ID_LIST);
+ list = (int *)g_base64_decode(val, &len);
+
+ for(i=0;i<len/sizeof(int);i++)
+ printf("selected contact = %d", list[i]);
+
+ g_free(list);
+ }
+ }
+ *
+ * @endcode
+ */
+#define CT_UG_BUNDLE_RESULT_PERSON_ID_LIST "person_id_list"
+#define CT_UG_BUNDLE_RESULT_NUMBER_ID_LIST "num_id_list"
+#define CT_UG_BUNDLE_RESULT_EMAIL_ID_LIST "email_id_list"
+#define CT_UG_BUNDLE_RESULT_PERSON_INFO "person_info"
+/**
+ * @}
+ */
+
+#endif //__CONTACTS_UG_H__
diff --git a/include/phone-ug.h b/include/phone-ug.h
new file mode 100755
index 0000000..cc0f4a5
--- /dev/null
+++ b/include/phone-ug.h
@@ -0,0 +1,172 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#ifndef __PHONE_UG_H__
+#define __PHONE_UG_H__
+
+/**
+ * @defgroup PHONE_UG PHONE UI-gadget
+ * @ingroup SLP_UG
+ * @addtogroup PHONE_UG
+ * @{
+ *
+ * Phone UI-gadget (Just a helper-module that contains centralized names of user-gadgets and their properties)
+ * \n This header file contains the declaration & description for Phone UG.
+ *
+ * @section Header To use Them:
+ * @code
+ * #include <phone-ug.h>
+ * @endcode
+ *
+ * @section example Example:
+ * @code
+ #include <stdio.h>
+ #include <ui-gadget.h>
+ #include <phone-ug.h>
+ * @endcode
+ *
+ void phonelog_ug ()
+ {
+ bundle *bd;
+ char buf[16];
+
+ bd = bundle_create();
+ if(NULL == bd) {
+ ERR("bundle_create() Failed");
+ return;
+ }
+
+ snprintf(buf, sizeof(buf), "%d", PH_UG_REQUEST_LOG_CHECK);
+ bundle_add(bd, PH_UG_BUNDLE_TYPE, buf);
+
+ cbs.layout_cb = ug_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = ug_destroy_cb;
+
+ ug = ug_create(NULL, UG_PHONE_LOG, UG_MODE_FULLVIEW, bd, &cbs);
+ if(NULL == ug)
+ ERR("ug_create() Failed");
+
+ bundle_free(bd);
+ }
+ * @endcode
+ */
+
+/**
+ * The name of phonelog UG
+ */
+#define UG_DIALER_LOG "dialer-efl"
+
+/**
+ * The name of dialer UG
+ * @see #PH_UG_LOG_TYPES
+ */
+#define UG_PHONE_LOG "phonelog-efl"
+
+/**
+ * The name of phoneui UG
+ */
+#define UG_PHONEUI_LOG "phoneui-efl"
+
+/**
+ * types of #UG_PHONEUI
+ */
+enum PHUI_UG_LIST_TYPES
+{
+ PH_UG_REQUEST_SELECT = 11,/**< . */
+ PH_UG_REQUEST_SELECT_NUMBER = 12,/**< . */
+ PH_UG_REQUEST_SELECT_EMAIL = 13,/**< . */
+ PH_UG_REQUEST_SELECT_NUMBER_OR_EMAIL = 17,/**< . */
+
+ PH_UG_REQUEST_SET_WITH_NUM = 21,/**< . */
+ PH_UG_REQUEST_SET_WITH_EMAIL = 22,/**< . */
+ PH_UG_REQUEST_SET_WITH_WEB = 23,/**< . */
+ PH_UG_REQUEST_SET_WITH_IMG = 24,/**< . */
+ PH_UG_REQUEST_SET_WITH_RINGTONE = 25,/**< . */
+
+ PH_UG_REQUEST_CHECK = 31,/**< . */
+ PH_UG_REQUEST_CHECK_FOR_NUMBER = 32,/**< . */
+ PH_UG_REQUEST_CHECK_FOR_EMAIL = 33,/**< . */
+ PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL = 34,/**< . */
+
+ PH_UG_REQUEST_LAUNCH_VOICECALL = 51, /**< . */
+};
+
+/**
+ * The name of speeddial UG
+ */
+#define UG_SPEEDDIAL_LOG "speeddial-efl"
+
+/**
+ * types of #PH_UG_LOG_TYPES
+ */
+enum PH_UG_LOG_TYPES
+{
+ PH_UG_REQUEST_LOG_CHECK = 11,
+ PH_UG_REQUEST_LOG_SELECT = 12,
+};
+
+/**
+ * The key of request bundle for type.
+ * \n Value : convert id to string by using \%d.
+ */
+#define PH_UG_BUNDLE_TYPE "type"
+
+/**
+ * The key of result bundle for phonelog index
+ * \n The contact index on #PH_UG_REQUEST_LOG_SELECT
+ * \n Value : convert id to integer by using atoi()
+ * \n Recommends to destroy Phone UG at ug_cbs.destroy_cb.(not ug_cbs.result_cb)
+ * \n In ug_cbs.result_cb, ug_destroy() should not be called.
+ */
+#define PH_UG_BUNDLE_RESULT_PLOG_ID "plog_id"
+
+/**
+ * The key of result bundle for a list of phonelog index
+ * \n The phonelog index on #PH_UG_REQUEST_LOG_CHECK
+ * \n Value : convert string to a integer array by using g_base64_decode()
+ * \n Recommends to destroy Phone UG at ug_cbs.destroy_cb.(not ug_cbs.result_cb)
+ * \n In ug_cbs.result_cb, ug_destroy() should not be called.
+ * @par example
+ * @code
+ void phonelog_result_cb(struct ui_gadget *ug, bundle *result, void *data)
+ {
+ if(NULL == ug || NULL == data)
+ return;
+
+ if(result) {
+ const char *val;
+ int *list, len, i;
+
+ val = bundle_get_val(result, PH_UG_BUNDLE_RESULT_PLOG_ID_LIST);
+ list = (int *)g_base64_decode(val, &len);
+
+ for(i=0;i<len/sizeof(int);i++)
+ printf("selected contact = %d", list[i]);
+
+ g_free(list);
+ }
+ }
+ *
+ * @endcode
+ */
+#define PH_UG_BUNDLE_RESULT_PLOG_ID_LIST "get_select_list" // TODO : change to "plog_id_list"
+
+/**
+ * @}
+ */
+
+#endif //__PHONE_UG_H__
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
new file mode 100755
index 0000000..f379903
--- /dev/null
+++ b/lib/CMakeLists.txt
@@ -0,0 +1,179 @@
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/common/)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/common/include)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/common/Ui/include)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/common/Ui/Genlist/include)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/common/Utils/include)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/ct-front/include)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/details/include)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/dialer/include)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/favor/include)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/list/include)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/log/include)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/ph-front/include)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/speed/include)
+
+SET(COMMON_LIB common)
+SET(FAVOR_LIB favorite)
+SET(SPEEDDIAL ug-speeddial-efl)
+SET(PH_LOG ug-phonelog-efl)
+SET(CT_DETAILS ug-contacts-details-efl)
+SET(CT_LIST ug-contacts-list-efl)
+SET(CT_SETTING ug-contacts-settings-efl)
+SET(PH_DIALER ug-dialer-efl)
+SET(PH_FRONT ug-phone-tabui-efl)
+SET(CT_FRONT ug-contacts-tabui-efl)
+SET(UGLIBDIR "/usr/ug/lib")
+
+FILE(GLOB_RECURSE COMMON_SRCS common/*.cpp)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(ug_pkgs REQUIRED contacts-service2 msg-service efl-assist)
+
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fPIC")
+
+FOREACH(flag ${ug_pkgs_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(ug_pkgs_LDFLAGS "${pkgs_LDFLAGS} ${ug_pkgs_LDFLAGS}")
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/contact_button.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/lib/images/phoneug-images
+ ${EDC_SRC_DIR}/contact_button.edc ${CMAKE_BINARY_DIR}/contact_button.edj
+ DEPENDS ${EDC_SRC_DIR}/contact_button.edc
+ )
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/progress.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/lib/images
+ ${EDC_SRC_DIR}/progress.edc ${CMAKE_BINARY_DIR}/progress.edj
+ DEPENDS ${EDC_SRC_DIR}/progress.edc
+ )
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/dialer.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/lib/images
+ ${EDC_SRC_DIR}/dialer.edc ${CMAKE_BINARY_DIR}/dialer.edj
+ DEPENDS ${EDC_SRC_DIR}/dialer.edc
+ )
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/dialer_theme.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/lib/images
+ ${EDC_SRC_DIR}/dialer_theme.edc ${CMAKE_BINARY_DIR}/dialer_theme.edj
+ DEPENDS ${EDC_SRC_DIR}/dialer_theme.edc
+ )
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/speeddial_theme.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/lib/images
+ ${EDC_SRC_DIR}/speeddial_theme.edc ${CMAKE_BINARY_DIR}/speeddial_theme.edj
+ DEPENDS ${EDC_SRC_DIR}/speeddial_theme.edc
+ )
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/logdetail_theme.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/lib/images
+ ${EDC_SRC_DIR}/logdetail_theme.edc ${CMAKE_BINARY_DIR}/logdetail_theme.edj
+ DEPENDS ${EDC_SRC_DIR}/logdetail_theme.edc
+ )
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/contacts.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/lib/images/contact_images
+ ${EDC_SRC_DIR}/contacts.edc ${CMAKE_BINARY_DIR}/contacts.edj
+ DEPENDS ${EDC_SRC_DIR}/contacts.edc ${EDC_SRC_DIR}/list.edc ${EDC_SRC_DIR}/progress.edc
+ )
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/favorites_theme.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/lib/images
+ ${EDC_SRC_DIR}/favorites_theme.edc ${CMAKE_BINARY_DIR}/favorites_theme.edj
+ DEPENDS ${EDC_SRC_DIR}/favorites_theme.edc
+ )
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/group_theme.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
+ ${EDC_SRC_DIR}/group_theme.edc ${CMAKE_BINARY_DIR}/group_theme.edj
+ DEPENDS ${EDC_SRC_DIR}/group_theme.edc
+ )
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/image_layout.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
+ ${EDC_SRC_DIR}/image_layout.edc ${CMAKE_BINARY_DIR}/image_layout.edj
+ DEPENDS ${EDC_SRC_DIR}/image_layout.edc
+ )
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/list_theme.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
+ ${EDC_SRC_DIR}/list_theme.edc ${CMAKE_BINARY_DIR}/list_theme.edj
+ DEPENDS ${EDC_SRC_DIR}/list_theme.edc
+ )
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/detail_theme.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/lib/images
+ ${EDC_SRC_DIR}/detail_theme.edc ${CMAKE_BINARY_DIR}/detail_theme.edj
+ DEPENDS ${EDC_SRC_DIR}/detail_theme.edc
+ )
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/selectioninfo.edj
+ COMMAND edje_cc
+ ${EDC_SRC_DIR}/selectioninfo.edc ${CMAKE_BINARY_DIR}/selectioninfo.edj
+ DEPENDS ${EDC_SRC_DIR}/selectioninfo.edc
+ )
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/nocontent_layout.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/lib/images/
+ ${EDC_SRC_DIR}/nocontent_layout.edc ${CMAKE_BINARY_DIR}/nocontent_layout.edj
+ DEPENDS ${EDC_SRC_DIR}/nocontent_layout.edc
+ )
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/log_item_icon.edj
+ COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/lib/images/
+ ${EDC_SRC_DIR}/log_item_icon.edc ${CMAKE_BINARY_DIR}/log_item_icon.edj
+ DEPENDS ${EDC_SRC_DIR}/log_item_icon.edc
+ )
+
+ADD_CUSTOM_TARGET(contact_button_edj_build DEPENDS ${CMAKE_BINARY_DIR}/contact_button.edj)
+ADD_CUSTOM_TARGET(progress_edj_build DEPENDS ${CMAKE_BINARY_DIR}/progress.edj)
+ADD_CUSTOM_TARGET(dialer_theme_build DEPENDS ${CMAKE_BINARY_DIR}/dialer_theme.edj)
+ADD_CUSTOM_TARGET(dialer_edj_build DEPENDS ${CMAKE_BINARY_DIR}/dialer.edj)
+ADD_CUSTOM_TARGET(speeddial_theme_build DEPENDS ${CMAKE_BINARY_DIR}/speeddial_theme.edj)
+ADD_CUSTOM_TARGET(logdetail_theme_build DEPENDS ${CMAKE_BINARY_DIR}/logdetail_theme.edj)
+ADD_CUSTOM_TARGET(contacts_edj_build DEPENDS ${CMAKE_BINARY_DIR}/contacts.edj)
+ADD_CUSTOM_TARGET(favorites_theme_build DEPENDS ${CMAKE_BINARY_DIR}/favorites_theme.edj)
+ADD_CUSTOM_TARGET(group_theme_edj_build DEPENDS ${CMAKE_BINARY_DIR}/group_theme.edj)
+ADD_CUSTOM_TARGET(image_layout_edj_build DEPENDS ${CMAKE_BINARY_DIR}/image_layout.edj)
+ADD_CUSTOM_TARGET(list_theme_edj_build DEPENDS ${CMAKE_BINARY_DIR}/list_theme.edj)
+ADD_CUSTOM_TARGET(detail_theme_edj_build DEPENDS ${CMAKE_BINARY_DIR}/detail_theme.edj)
+ADD_CUSTOM_TARGET(selectioninfo_edj_build DEPENDS ${CMAKE_BINARY_DIR}/selectioninfo.edj)
+ADD_CUSTOM_TARGET(nocontent_layout_edj_build DEPENDS ${CMAKE_BINARY_DIR}/nocontent_layout.edj)
+ADD_CUSTOM_TARGET(log_item_icon_edj_build DEPENDS ${CMAKE_BINARY_DIR}/log_item_icon.edj)
+
+ADD_LIBRARY(${COMMON_LIB} STATIC ${COMMON_SRCS})
+SET_TARGET_PROPERTIES(${COMMON_LIB} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS})
+TARGET_LINK_LIBRARIES(${COMMON_LIB} ${ug_pkgs_LDFLAGS})
+ADD_DEPENDENCIES(${COMMON_LIB} selectioninfo_edj_build)
+ADD_DEPENDENCIES(${COMMON_LIB} nocontent_layout_edj_build)
+ADD_DEPENDENCIES(${COMMON_LIB} log_item_icon_edj_build)
+
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/phone-ug.h DESTINATION /usr/include)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/contacts-ug.h DESTINATION /usr/include)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/contact_button.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/contacts.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/progress.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/dialer.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/dialer_theme.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/speeddial_theme.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/logdetail_theme.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/favorites_theme.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/group_theme.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/image_layout.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/list_theme.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/detail_theme.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/selectioninfo.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/nocontent_layout.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/log_item_icon.edj DESTINATION ${EDJDIR})
+
+ADD_SUBDIRECTORY(speed)
+ADD_SUBDIRECTORY(log)
+ADD_SUBDIRECTORY(dialer)
+ADD_SUBDIRECTORY(details)
+ADD_SUBDIRECTORY(list)
+ADD_SUBDIRECTORY(settings)
+ADD_SUBDIRECTORY(favor)
+ADD_SUBDIRECTORY(ph-front)
+ADD_SUBDIRECTORY(ct-front)
diff --git a/lib/common/Database/Database.cpp b/lib/common/Database/Database.cpp
new file mode 100644
index 0000000..2b4e47e
--- /dev/null
+++ b/lib/common/Database/Database.cpp
@@ -0,0 +1,195 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Database/Database.h"
+
+#include <contacts.h>
+#include "phone.h"
+#include "Database/Listener.h"
+
+namespace Database
+{
+ Database::Database()
+ : m_IsConnected(false)
+ {
+ PH_TRACE;
+ }
+
+ Database::~Database()
+ {
+ PH_TRACE;
+ disconnect();
+ }
+
+ Database & Database::getInstance()
+ {
+ static Database instance;
+ return instance;
+ }
+
+ bool Database::connect()
+ {
+ PH_TRACE;
+ if(!m_IsConnected)
+ {
+ m_IsConnected = isSuccess(contacts_connect2());
+ }
+
+ return m_IsConnected;
+ }
+
+ bool Database::disconnect()
+ {
+ PH_TRACE;
+ if(m_IsConnected)
+ {
+ m_IsConnected = !isSuccess(contacts_disconnect2());
+ }
+
+ return !m_IsConnected;
+ }
+
+ bool Database::isConnected() const
+ {
+ return m_IsConnected;
+ }
+
+ bool Database::addListener(const char *uri, Listener *listener)
+ {
+ PH_TRACE;
+ return isSuccess(contacts_db_add_changed_cb_with_info(uri, onChange, listener));
+ }
+
+ bool Database::removeListener(const char *uri, Listener *listener)
+ {
+ PH_TRACE;
+ return isSuccess(contacts_db_remove_changed_cb_with_info(uri, onChange, listener));
+ }
+
+ bool Database::isSuccess(int result)
+ {
+#ifdef PH_DEBUGGING
+ if(result == CONTACTS_ERROR_NONE)
+ {
+ return true;
+ }
+ else
+ {
+ const char *error = NULL;
+ switch(result)
+ {
+ case CONTACTS_ERROR_OUT_OF_MEMORY:
+ error = "Out of memory";
+ break;
+ case CONTACTS_ERROR_INVALID_PARAMETER:
+ error = "Invalid parameter";
+ break;
+ case CONTACTS_ERROR_FILE_NO_SPACE:
+ error = "File system is full";
+ break;
+ case CONTACTS_ERROR_NO_DATA:
+ error = "Requested data does not exist";
+ break;
+ case CONTACTS_ERROR_PERMISSION_DENIED:
+ error = "Permission denied";
+ break;
+ case CONTACTS_ERROR_DB:
+ error = "Unknown DB error, make sure that connection was established";
+ break;
+ case CONTACTS_ERROR_IPC_NOT_AVALIABLE:
+ error = "IPC server is not available";
+ break;
+ case CONTACTS_ERROR_IPC:
+ error = "Unknown IPC error";
+ break;
+ case CONTACTS_ERROR_SYSTEM:
+ error = "System error";
+ break;
+ case CONTACTS_ERROR_INTERNAL:
+ error = "Internal error";
+ break;
+ default:
+ error = "Unknown error";
+ break;
+ }
+
+ ERR("Contacts database error %h: %s", result, error);
+ return false;
+ }
+#else
+ return result == CONTACTS_ERROR_NONE;
+#endif /* PH_DEBUGGING */
+ }
+
+ void Database::onChange(const char *uri, char *changes, void *data)
+ {
+ PH_TRACE;
+ if(!uri || !changes || !data)
+ {
+ return;
+ }
+
+ DBG("URI: %s", uri);
+ DBG("change: %s", changes);
+ /*
+ * The format of changes parameter is as follows:
+ * change:id,change:id...
+ *
+ * where "change" is a string representation of one of the the following values:
+ * - CONTACTS_CHANGE_INSERTED
+ * - CONTACTS_CHANGE_UPDATED
+ * - CONTACTS_CHANGE_DELETED
+ * and "id" is a string representation of database record ID
+ */
+
+ Listener *listener = static_cast<Listener*>(data);
+ char *p = changes;
+ while(*p)
+ {
+ int change = *p - '0';
+
+ if(*++p == ':')
+ {
+ ++p;
+ }
+
+ int id = atoi(p);
+ switch(change)
+ {
+ case CONTACTS_CHANGE_INSERTED:
+ DBG("change: INSERT, id: %d", id);
+ listener->onRecordInsert(uri, id);
+ break;
+ case CONTACTS_CHANGE_UPDATED:
+ DBG("change: UPDATE, id: %d", id);
+ listener->onRecordUpdate(uri, id);
+ break;
+ case CONTACTS_CHANGE_DELETED:
+ DBG("change: DELETE, id: %d", id);
+ listener->onRecordDelete(uri, id);
+ break;
+ }
+
+ while(*p && *p != ',')
+ ++p;
+
+ if(*p == ',')
+ {
+ ++p;
+ }
+ }
+ }
+}
diff --git a/lib/common/Database/Database.h b/lib/common/Database/Database.h
new file mode 100644
index 0000000..15324eb
--- /dev/null
+++ b/lib/common/Database/Database.h
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __DATABASE_DATABASE_H__
+#define __DATABASE_DATABASE_H__
+
+#include "NonCopyable.h"
+
+namespace Database
+{
+ class Listener;
+ /*
+ * @brief Contacts database connection class.
+ * @remarks Database connection is automatically closed on destruction.
+ */
+ class Database : public Utils::NonCopyable
+ {
+ public:
+ /*
+ * @return Database instance
+ */
+ static Database & getInstance();
+
+ /*
+ * @brief Connect to database.
+ * @return true on success, false otherwise
+ */
+ bool connect();
+
+ /*
+ * @brief Disconnect from database.
+ * @return true on success, false otherwise
+ */
+ bool disconnect();
+
+ /*
+ * @return true if connection is established, false otherwise
+ */
+ bool isConnected() const;
+
+ /*
+ * @brief Listen for changes in specified database view (table)
+ * @remarks Always remove added listeners by calling removeListener
+ *
+ * @param uri Database view URI
+ * @param listener Database listener
+ * @return true if listener successfully added, false otherwise
+ * @see Database::Listener
+ */
+ bool addListener(const char *uri, Listener *listener);
+
+ /*
+ * @brief Remove previously added database listener
+ * @warning Not removing listeners before their destruction
+ * can render your application not workable until contacts service restart
+ *
+ * @param uri Database view URI
+ * @param listener Database listener
+ * @return true if listener successfully removed, false otherwise
+ */
+ bool removeListener(const char *uri, Listener *listener);
+
+ /*
+ * @brief Determine whether result code indicates success.
+ * @remarks If result code indicates error,
+ * an error message will be written to logs.
+ *
+ * @param result Contacts database API error code
+ * @return true on success, false otherwise
+ */
+ static bool isSuccess(int result);
+
+ private:
+ Database();
+ ~Database();
+
+ static void onChange(const char *uri, char *changes, void *data);
+
+ bool m_IsConnected;
+ };
+}
+
+#endif /* __DATABASE_DATABASE_H__ */
diff --git a/lib/common/Database/Listener.h b/lib/common/Database/Listener.h
new file mode 100644
index 0000000..99c99eb
--- /dev/null
+++ b/lib/common/Database/Listener.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __DATABASE_LISTENER_H__
+#define __DATABASE_LISTENER_H__
+
+namespace Database
+{
+ /*
+ * @brief Database changes listener
+ * @details Implement this interface if you want to respond to changes happening in database
+ */
+ class Listener
+ {
+ public:
+ virtual ~Listener() { }
+
+ /*
+ * @brief Called whenever a new record was inserted into observed table(s)
+ * @param uri URI of changed view (table)
+ * @param id ID of newly inserted record
+ */
+ virtual void onRecordInsert(const char *uri, int id) { }
+
+ /*
+ * @brief Called whenever a record was updated in the observed table(s)
+ * @param uri URI of changed view (table)
+ * @param id ID of updated record
+ */
+ virtual void onRecordUpdate(const char *uri, int id) { }
+
+ /*
+ * @brief Called whenever a record was deleted from observed table(s)
+ * @param uri URI of changed view (table)
+ * @param id ID of deleted record
+ */
+ virtual void onRecordDelete(const char *uri, int id) { }
+ };
+}
+
+#endif /* __DATABASE_LISTENER_H__ */
diff --git a/lib/common/Front.cpp b/lib/common/Front.cpp
new file mode 100644
index 0000000..3719443
--- /dev/null
+++ b/lib/common/Front.cpp
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Front.h"
+
+namespace Common
+{
+ Front::Front()
+ : win(NULL), navi(NULL), layout(NULL),
+ ug(NULL), ug_data(NULL), ug_request(0),
+ cnt_max(0), idler(NULL), timer(NULL)
+ {
+ }
+}
diff --git a/lib/common/Ui/Genlist/Genlist.cpp b/lib/common/Ui/Genlist/Genlist.cpp
new file mode 100644
index 0000000..5a9b779
--- /dev/null
+++ b/lib/common/Ui/Genlist/Genlist.cpp
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Genlist.h"
+#include "phone.h"
+
+namespace Ui
+{
+ namespace Genlist
+ {
+ bool Genlist::create(Evas_Object *parent)
+ {
+ PH_TRACE;
+ if(parent && !getObject())
+ {
+ return setObject(elm_genlist_add(parent));
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ Elm_Object_Item * Genlist::append(Item *item, Elm_Object_Item *parent)
+ {
+ PH_TRACE;
+ check_if(!item, return NULL);
+ Elm_Object_Item *objItem = elm_genlist_item_append(getObject(), item->getClass(), item, parent, item->getType(), onItemSelect, item);
+ return objItem;
+ }
+
+ void Genlist::onItemSelect(void *data, Evas_Object *obj, void *event_info)
+ {
+ PH_TRACE;
+ if(data && event_info)
+ {
+ Item *item = static_cast<Item *>(data);
+ Elm_Object_Item *objItem = static_cast<Elm_Object_Item *>(event_info);
+ item->onSelect(*objItem);
+ }
+ }
+ }
+}
diff --git a/lib/common/Ui/Genlist/Item.cpp b/lib/common/Ui/Genlist/Item.cpp
new file mode 100644
index 0000000..c43982f
--- /dev/null
+++ b/lib/common/Ui/Genlist/Item.cpp
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Item.h"
+#include "phone.h"
+
+namespace Ui
+{
+ namespace Genlist
+ {
+ Item::Item(Elm_Genlist_Item_Type type)
+ : m_Type(type)
+ {
+ PH_TRACE;
+ }
+
+ Item::~Item()
+ {
+ PH_TRACE;
+ }
+
+ Elm_Genlist_Item_Class * Item::createClass(const char *style, const char *decorateStyle, const char *editStyle)
+ {
+ PH_TRACE;
+ Elm_Genlist_Item_Class *itemClass = elm_genlist_item_class_new();
+ check_if(!itemClass, return NULL);
+ itemClass->item_style = style;
+ itemClass->decorate_item_style = decorateStyle;
+ itemClass->decorate_all_item_style = editStyle;
+ itemClass->func.text_get = Item::getText;
+ itemClass->func.content_get = Item::getContent;
+ itemClass->func.state_get = Item::getState;
+ itemClass->func.del = Item::onDestroy;
+ return itemClass;
+ }
+
+ char * Item::getText(void *data, Evas_Object *obj, const char *part)
+ {
+ PH_TRACE;
+ if(data)
+ {
+ return static_cast<Item *>(data)->getText(part);
+ }
+
+ return NULL;
+ }
+
+ Evas_Object * Item::getContent(void *data, Evas_Object *obj, const char *part)
+ {
+ PH_TRACE;
+ if(data)
+ {
+ return static_cast<Item *>(data)->getContent(part, obj);
+ }
+
+ return NULL;
+ }
+
+ Eina_Bool Item::getState(void *data, Evas_Object *obj, const char *part)
+ {
+ PH_TRACE;
+ if(data)
+ {
+ return static_cast<Item *>(data)->getState(part);
+ }
+
+ return EINA_FALSE;
+ }
+
+ void Genlist::Item::onDestroy(void *data, Evas_Object *obj)
+ {
+ PH_TRACE;
+ if(data)
+ {
+ delete static_cast<Item *>(data);
+ }
+ }
+ }
+}
diff --git a/lib/common/Ui/Genlist/include/Genlist.h b/lib/common/Ui/Genlist/include/Genlist.h
new file mode 100644
index 0000000..a3df78d
--- /dev/null
+++ b/lib/common/Ui/Genlist/include/Genlist.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __UI_GENLIST_GENLIST_H__
+#define __UI_GENLIST_GENLIST H__
+
+#include "Widget.h"
+#include "Item.h"
+
+namespace Ui
+{
+ namespace Genlist
+ {
+ /*
+ * \par Description:
+ * Genlist wrapper class.
+ */
+ class Genlist : public Widget
+ {
+ public:
+ /*
+ * \par Description:
+ * Create new genlist with @p parent as parent.
+ *
+ * @see Widget::create
+ */
+ bool create(Evas_Object *parent);
+
+ /*
+ * \par Description:
+ * Add item to the end of genlist.
+ *
+ * @return A handle to the item added or @c NULL if not possible
+ * @see elm_genlist_item_append
+ */
+ Elm_Object_Item * append(Item *item, Elm_Object_Item *parent = NULL);
+
+ private:
+ static void onItemSelect(void *data, Evas_Object *obj, void *event_info);
+ };
+ }
+}
+
+#endif /* __UI_GENLIST_GENLIST_H__ */
diff --git a/lib/common/Ui/Genlist/include/Item.h b/lib/common/Ui/Genlist/include/Item.h
new file mode 100644
index 0000000..28876ea
--- /dev/null
+++ b/lib/common/Ui/Genlist/include/Item.h
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __UI_GENLIST_ITEM_H__
+#define __UI_GENLIST_ITEM_H__
+
+#include <Elementary.h>
+#include "NonCopyable.h"
+
+namespace Ui
+{
+ namespace Genlist
+ {
+ /*
+ * \par Description:
+ * Wrapper class for genlist item. Redirects item's callbacks to virtual methods.
+ * Any instance of this class should be allocated with operator new.
+ * It will be automatically deleted by genlist when item is deleted.
+ */
+ class Item : public Utils::NonCopyable
+ {
+ public:
+ Item(Elm_Genlist_Item_Type type = ELM_GENLIST_ITEM_NONE);
+ virtual ~Item();
+
+ /*
+ * \par Description:
+ * Returned value should be individual for every derived class.
+ * This can be achieved by storing pointer to Elm_Genlist_Item_Class
+ * in a static variable inside overloaded method and initializing it using createClass.
+ * This way every derived class will have its own Elm_Genlist_Item_Class.
+ *
+ * @par example
+ * @code
+ *
+ * Elm_Genlist_Item_Class * getClass() const
+ * {
+ * static Elm_Genlist_Item_Class *itemClass = createClass("2text.1icon");
+ * return itemClass;
+ * }
+ *
+ * @endcode
+ */
+ virtual Elm_Genlist_Item_Class * getClass() const = 0;
+
+ /*
+ * \par Description:
+ * Called whenever any item's text part needs to be updated.
+ *
+ * @param[in] part Name of the part
+ * @return Allocated string with text for a specified part,
+ * it will be deallocated with free() by genlist
+ */
+ virtual char * getText(const char *part) const { return NULL; }
+
+ /*
+ * \par Description:
+ * Called whenever any item's content part needs to be updated.
+ *
+ * @param[in] part Name of the part
+ * @param[in] parent Parent genlist to use as a parent object for content
+ * @return Content for a specified part
+ */
+ virtual Evas_Object * getContent(const char *part, Evas_Object *parent) const { return NULL; }
+
+ /*
+ * \par Description:
+ * Called whenever any item's state part needs to be updated.
+ * Genlist will emit signal "elm,state,x,active" or "elm,state,x,passive"
+ * with part's name instead of 'x'.
+ *
+ * @param[in] part Name of the part
+ * @return true for active, false for passive
+ *
+ */
+ virtual bool getState(const char *part) const { return false; }
+
+ /*
+ * \par Description:
+ * Called when selection event occurs on the item.
+ *
+ * @param item Elm_Object_Item for selected item
+ */
+ virtual void onSelect(Elm_Object_Item &item) { }
+
+ /*
+ * @return Item type
+ * @see Elm_Genlist_Item_Type
+ */
+ Elm_Genlist_Item_Type getType() const { return m_Type; }
+
+ protected:
+ static Elm_Genlist_Item_Class * createClass(
+ const char *style,
+ const char *decorateStyle = NULL,
+ const char *editStyle = NULL
+ );
+
+ private:
+ Elm_Genlist_Item_Type m_Type;
+
+ static char * getText(void *data, Evas_Object *obj, const char *part);
+ static Evas_Object * getContent(void *data, Evas_Object *obj, const char *part);
+ static Eina_Bool getState(void *data, Evas_Object *obj, const char *part);
+ static void onDestroy(void *data, Evas_Object *obj);
+ };
+ }
+}
+
+#endif /* __UI_GENLIST_ITEM_H__ */
diff --git a/lib/common/Ui/Widget.cpp b/lib/common/Ui/Widget.cpp
new file mode 100644
index 0000000..92b2b60
--- /dev/null
+++ b/lib/common/Ui/Widget.cpp
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Widget.h"
+#include "phone.h"
+
+namespace Ui
+{
+ Widget::Widget()
+ : m_Object(NULL)
+ {
+ PH_TRACE;
+ }
+
+ Widget::~Widget()
+ {
+ PH_TRACE;
+ if(m_Object)
+ {
+ evas_object_del(m_Object);
+ m_Object = NULL;
+ }
+ }
+
+ Evas_Object * Widget::getObject() const
+ {
+ PH_TRACE;
+ return m_Object;
+ }
+
+ bool Widget::setObject(Evas_Object *object)
+ {
+ PH_TRACE;
+ m_Object = object;
+ return m_Object != NULL;
+ }
+}
diff --git a/lib/common/Ui/include/Widget.h b/lib/common/Ui/include/Widget.h
new file mode 100644
index 0000000..9e712f3
--- /dev/null
+++ b/lib/common/Ui/include/Widget.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __UI_WIDGET_H__
+#define __UI_WIDGET_H__
+
+#include <Elementary.h>
+
+#include "NonCopyable.h"
+
+namespace Ui
+{
+ /*
+ * \par Description:
+ * Base wrapper class for all Evas objects.
+ */
+ class Widget : public Utils::NonCopyable
+ {
+ public:
+ virtual ~Widget();
+
+ /*
+ * \par Description create derived widget with @p parent as parent.
+ *
+ * @return true on success, false otherwise
+ */
+ virtual bool create(Evas_Object *parent) = 0;
+
+ /*
+ * @return Underlying Evas_Object.
+ */
+ Evas_Object * getObject() const;
+
+ protected:
+ Widget();
+ bool setObject(Evas_Object *object);
+
+ private:
+ Evas_Object *m_Object;
+ };
+}
+
+#endif /* __UI_WIDGET_H__ */
diff --git a/lib/common/Utils/NonCopyable.cpp b/lib/common/Utils/NonCopyable.cpp
new file mode 100644
index 0000000..276824c
--- /dev/null
+++ b/lib/common/Utils/NonCopyable.cpp
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file NonCopyable.cpp.
+ * @brief implementation of NonCopyable class.
+ * @author Andrey Klimenko (and.klimenko@samsung.com)
+ */
+
+#include "NonCopyable.h"
+
+namespace Utils
+{
+ NonCopyable::NonCopyable()
+ {
+ }
+
+ NonCopyable::~NonCopyable()
+ {
+ }
+}
diff --git a/lib/common/Utils/Tracer.cpp b/lib/common/Utils/Tracer.cpp
new file mode 100644
index 0000000..2f644d6
--- /dev/null
+++ b/lib/common/Utils/Tracer.cpp
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Tracer.h"
+#include <dlog.h>
+
+namespace Utils
+{
+ void substractTime(const timespec& a, const timespec& b, timespec& res)
+ {
+ static const size_t nanosecsInSecond(1000000000);
+
+ res.tv_sec = b.tv_sec - a.tv_sec;
+ res.tv_nsec = b.tv_nsec - a.tv_nsec;
+ if (res.tv_nsec < 0)
+ {
+ --res.tv_sec;
+ res.tv_nsec += nanosecsInSecond;
+ }
+ }
+
+ Tracer::Tracer(const char *tag, const char *file, int line, const char *func)
+ : m_Tag(tag), m_File(file), m_Func(func)
+ {
+ __dlog_print(LOG_ID_APPS, DLOG_DEBUG, m_Tag, "%s: %s(%d) <<< called", m_File, m_Func, line);
+ clock_gettime(CLOCK_REALTIME, &m_startTime);
+ }
+
+ Tracer::~Tracer()
+ {
+ timespec endTime;
+ clock_gettime(CLOCK_REALTIME, &endTime);
+
+ timespec res;
+ substractTime(m_startTime, endTime, res);
+
+ __dlog_print(LOG_ID_APPS, DLOG_DEBUG, m_Tag,
+ "%s: %s >>> returned in %d.%03d seconds",
+ m_File, m_Func, res.tv_sec, res.tv_nsec / 1000000
+ );
+ }
+}
diff --git a/lib/common/Utils/include/NonCopyable.h b/lib/common/Utils/include/NonCopyable.h
new file mode 100644
index 0000000..403fb3c
--- /dev/null
+++ b/lib/common/Utils/include/NonCopyable.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file NonCopyable.h
+ * @brief Non-copyable base class.
+ * @author Andrey Klimenko (and.klimenko@samsung.com)
+ */
+
+#ifndef __UTILS_NONCOPYABLE_H__
+#define __UTILS_NONCOPYABLE_H__
+
+namespace Utils
+{
+ /**
+ * An util-like class to make easier restriction of copying or/and instancing for child classes
+ * */
+ class NonCopyable
+ {
+ protected:
+ NonCopyable();
+ ~NonCopyable();
+ private:
+ NonCopyable(const NonCopyable&);
+ const NonCopyable& operator=(const NonCopyable&);
+ };
+}
+
+#endif /* __UTILS_NONCOPYABLE_H__ */
diff --git a/lib/common/Utils/include/SharedPtr.h b/lib/common/Utils/include/SharedPtr.h
new file mode 100644
index 0000000..df8d0a5
--- /dev/null
+++ b/lib/common/Utils/include/SharedPtr.h
@@ -0,0 +1,176 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __UTILS_SHARED_PTR_H__
+#define __UTILS_SHARED_PTR_H__
+
+#include "phone.h"
+
+namespace Utils
+{
+ /*
+ * @brief Pointer wrapper for automatic memory management based on reference counting
+ * @remarks Use this pointer wrapper if you have to manage dynamically allocated objects
+ * that are being used by several objects and can't be tied to a single object's lifetime.
+ * @details Shared pointer maintains a pointer to type T and a counter.
+ * The counter is increased every time shared pointer is being copied and decreased upon it's destruction.
+ * When counter drops to zero the last copy of shared pointer destroys the object pointed by internal pointer
+ * and deallocates the counter.
+ */
+ template <typename T>
+ class SharedPtr
+ {
+ public:
+ SharedPtr();
+
+ /*
+ * @brief Create a shared pointer from simple pointer
+ * @remarks The counter is being set to 1.
+ * @param ptr Pointer to be shared
+ */
+ SharedPtr(T *ptr);
+
+ /*
+ * @brief Create from another shared pointer
+ * @remarks The counter is being incremented
+ * @param other Another shared pointer
+ */
+ SharedPtr(const SharedPtr &other);
+
+ ~SharedPtr();
+
+ /*
+ * @brief Release the ownership of underlying pointer
+ * and decrease the counter.
+ */
+ void reset();
+
+ /*
+ * @remarks Shared pointer that was default constructed
+ * and wasn't assigned another pointer SHOULD NOT be dereferenced
+ * as it doesn't point to anything (NULL)
+ * @return Dereferenced underlying pointer
+ */
+ T & operator*() const;
+
+ /*
+ * @return Underlying pointer
+ */
+ T * operator->() const;
+
+ /*
+ * @brief Test if pointer points to anything
+ * @return true if isn't NULL, false otherwise
+ */
+ operator bool() const;
+
+ SharedPtr & operator=(const SharedPtr &other);
+
+ private:
+ T *m_Ptr;
+ int *m_Count;
+ };
+
+ template <typename T>
+ SharedPtr<T>::SharedPtr()
+ : m_Ptr(NULL), m_Count(NULL)
+ {
+ }
+
+ template <typename T>
+ SharedPtr<T>::SharedPtr(T *ptr)
+ : m_Ptr(NULL), m_Count(NULL)
+ {
+ if(ptr)
+ {
+ m_Ptr = ptr;
+ m_Count = new int(1);
+ }
+ }
+
+ template <typename T>
+ SharedPtr<T>::SharedPtr(const SharedPtr &other)
+ : m_Ptr(NULL), m_Count(NULL)
+ {
+ if(other.m_Count)
+ {
+ m_Ptr = other.m_Ptr;
+ m_Count = other.m_Count;
+ ++(*m_Count);
+ DBG("count: %d", *m_Count);
+ }
+ }
+
+ template <typename T>
+ SharedPtr<T>::~SharedPtr()
+ {
+ reset();
+ }
+
+ template <typename T>
+ void SharedPtr<T>::reset()
+ {
+ if(m_Count)
+ {
+ --(*m_Count);
+ DBG("count: %d", *m_Count);
+
+ if(*m_Count == 0)
+ {
+ DBG("deleting");
+ delete m_Ptr;
+ delete m_Count;
+ }
+
+ m_Ptr = NULL;
+ m_Count = NULL;
+ }
+ }
+
+ template <typename T>
+ T & SharedPtr<T>::operator*() const
+ {
+ return *m_Ptr;
+ }
+
+ template <typename T>
+ T * SharedPtr<T>::operator->() const
+ {
+ return m_Ptr;
+ }
+
+ template <typename T>
+ SharedPtr<T>::operator bool() const
+ {
+ return m_Ptr != NULL;
+ }
+
+ template <typename T>
+ SharedPtr<T> & SharedPtr<T>::operator=(const SharedPtr &other)
+ {
+ if(other.m_Count && this != &other)
+ {
+ reset();
+ m_Ptr = other.m_Ptr;
+ m_Count = other.m_Count;
+ ++(*m_Count);
+ }
+
+ return *this;
+ }
+}
+
+#endif /* __UTILS_SHARED_PTR_H__ */
diff --git a/lib/common/Utils/include/Tracer.h b/lib/common/Utils/include/Tracer.h
new file mode 100644
index 0000000..898fcb1
--- /dev/null
+++ b/lib/common/Utils/include/Tracer.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __UTILS_TRACER_H__
+#define __UTILS_TRACER_H__
+
+#include <time.h>
+
+namespace Utils
+{
+ class Tracer
+ {
+ private:
+ const char * m_Tag;
+ const char * m_File;
+ const char * m_Func;
+ timespec m_startTime;
+ public:
+ Tracer(const char *tag, const char *file, int line, const char *func);
+ ~Tracer();
+ };
+}
+
+#endif /* __UTILS_TRACER_H__ */
diff --git a/lib/common/View.cpp b/lib/common/View.cpp
new file mode 100644
index 0000000..c441368
--- /dev/null
+++ b/lib/common/View.cpp
@@ -0,0 +1,173 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "View.h"
+
+#include <ui-gadget-module.h>
+
+#include "phone.h"
+
+namespace Common
+{
+ View::View()
+ : back_cb(NULL), menu_cb(NULL),
+ m_Parent(NULL), m_Content(NULL)
+ {
+ PH_TRACE;
+ }
+
+ View::View(const char *title)
+ : back_cb(NULL), menu_cb(NULL),
+ m_Title(title), m_Parent(NULL), m_Content(NULL)
+ {
+ PH_TRACE;
+ }
+
+ View::~View()
+ {
+ PH_TRACE;
+ // m_Content and its children are destroyed by naviframe pop
+ }
+
+ bool View::initialize(Evas_Object *parent)
+ {
+ PH_TRACE;
+ if(!parent || m_Parent)
+ {
+ return false;
+ }
+
+ m_Parent = parent;
+ m_Content = elm_layout_add(m_Parent);
+
+ if(!m_Content)
+ {
+ m_Parent = NULL;
+ return false;
+ }
+
+ elm_layout_theme_set(m_Content, "layout", "application", "default");
+ evas_object_size_hint_weight_set(m_Content, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ Evas_Object *bg = elm_bg_add(m_Content);
+
+ if(!bg)
+ {
+ evas_object_del(m_Content);
+ m_Parent = NULL;
+ m_Content = NULL;
+ return false;
+ }
+
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_content_set(m_Content, "elm.swallow.bg", bg);
+
+ return true;
+ }
+
+ const std::string & View::getTitle() const
+ {
+ PH_TRACE;
+ return m_Title;
+ }
+
+ Evas_Object * View::getContent() const
+ {
+ PH_TRACE;
+ return m_Content;
+ }
+
+ bool View::onBack()
+ {
+ PH_TRACE;
+ bool handled = false;
+
+ if (child_ug)
+ {
+ DBG("send to child ug");
+ ug_send_key_event (UG_KEY_EVENT_END);
+ handled = true;
+ }
+ else if (popup && evas_object_visible_get(popup)) //legacy popups
+ {
+ DBG("hide popup");
+ evas_object_hide(popup);
+ handled = true;
+ }
+ else if (m_ContextMenu && evas_object_visible_get(m_ContextMenu))
+ {
+ DBG("close contextual menu");
+ elm_ctxpopup_dismiss(m_ContextMenu);
+ handled = true;
+ }
+ else if (m_Menu && evas_object_visible_get(m_Menu))
+ {
+ DBG("close menu");
+ elm_ctxpopup_dismiss(m_Menu);
+ handled = true;
+ }
+ else if (m_Widget && elm_object_focus_get(m_Widget))
+ {
+ DBG("unfocus widget");
+ widget_back_cb(this);
+ handled = true;
+ }
+ else if (back_cb)
+ {
+ DBG("call back_cb");
+ back_cb(this);
+ handled = true;
+ }
+
+ return handled;
+ }
+
+ void View::onMenu()
+ {
+ PH_TRACE;
+ if(popup && evas_object_visible_get(popup))
+ {
+ // no menu should appear, when popup is opened
+ return;
+ }
+ if(m_ContextMenu)
+ {
+ if(evas_object_visible_get(m_ContextMenu))
+ {
+ DBG("close contextual menu");
+ elm_ctxpopup_dismiss(m_ContextMenu);
+ }
+ }
+ if(m_Menu)
+ {
+ if(evas_object_visible_get(m_Menu))
+ {
+ DBG("close menu");
+ elm_ctxpopup_dismiss(m_Menu);
+ }
+ else if(menu_cb)
+ {
+ DBG("call menu_cb");
+ menu_cb(this);
+ }
+ }
+ else if(menu_cb)
+ {
+ DBG("call menu_cb");
+ menu_cb(this);
+ }
+ }
+}
diff --git a/lib/common/ViewData.cpp b/lib/common/ViewData.cpp
new file mode 100644
index 0000000..be53cb4
--- /dev/null
+++ b/lib/common/ViewData.cpp
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "ViewData.h"
+
+namespace Common
+{
+ ViewData::ViewData()
+ : win(NULL), navi(NULL), layout(NULL),
+ popup(NULL), m_Menu(NULL), m_ContextMenu(NULL), m_Widget(NULL),
+ navi_item(NULL), th(NULL),
+ ug(NULL), child_ug(NULL)
+ {
+ }
+}
diff --git a/lib/common/ViewManager.cpp b/lib/common/ViewManager.cpp
new file mode 100644
index 0000000..ee211af
--- /dev/null
+++ b/lib/common/ViewManager.cpp
@@ -0,0 +1,190 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "ViewManager.h"
+
+#include <efl_assist.h>
+#include <ui-gadget-module.h>
+
+#include "phone.h"
+#include "View.h"
+
+namespace Common
+{
+ ViewManager::ViewManager()
+ : m_Layout(NULL)
+ {
+ PH_TRACE;
+ }
+
+ ViewManager::~ViewManager()
+ {
+ if(m_Layout)
+ {
+ evas_object_del(m_Layout);
+ m_Layout = NULL;
+ }
+ }
+
+ bool ViewManager::initialize(Evas_Object *win, Evas_Object *parent)
+ {
+ PH_TRACE;
+ if(!parent || m_Layout)
+ {
+ return false;
+ }
+
+ m_Layout = elm_layout_add(parent);
+ if(!m_Layout)
+ {
+ return false;
+ }
+
+ evas_object_size_hint_weight_set(m_Layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_layout_theme_set(m_Layout, "layout", "application", "default");
+ evas_object_show(m_Layout);
+
+ Evas_Object *bg = elm_bg_add(m_Layout);
+ if(!bg)
+ {
+ evas_object_del(m_Layout);
+ m_Layout = NULL;
+ return false;
+ }
+
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_content_set(m_Layout, "elm.swallow.bg", bg);
+
+ navi = elm_naviframe_add(m_Layout);
+ if(!navi)
+ {
+ evas_object_del(m_Layout);
+ m_Layout = NULL;
+ return false;
+ }
+
+ elm_naviframe_prev_btn_auto_pushed_set(navi, EINA_FALSE);
+ elm_object_part_content_set(m_Layout, "elm.swallow.content", navi);
+ evas_object_data_set(navi, "ViewManager", this);
+ ea_object_event_callback_add(navi, EA_CALLBACK_BACK, &Common::ViewManager::onBack, win);
+ ea_object_event_callback_add(navi, EA_CALLBACK_MORE, &Common::ViewManager::onMenu, NULL);
+
+ return true;
+ }
+
+ Evas_Object * ViewManager::getContent() const
+ {
+ return m_Layout;
+ }
+
+ void ViewManager::push(View &view)
+ {
+ PH_TRACE;
+ Elm_Object_Item *item = elm_naviframe_item_push(navi, view.getTitle().c_str(), NULL, NULL, view.getContent(), NULL);
+ elm_object_item_data_set(item, &view);
+ evas_object_event_callback_add(view.getContent(), EVAS_CALLBACK_DEL, onViewDestroy, &view);
+ }
+
+ void ViewManager::pop()
+ {
+ PH_TRACE;
+ elm_naviframe_item_pop(navi);
+ }
+
+ void ViewManager::onBack(void *data, Evas_Object *obj, void *event)
+ {
+ PH_TRACE;
+ if(!obj)
+ {
+ return;
+ }
+
+ Elm_Object_Item *top = elm_naviframe_top_item_get(obj);
+
+ if(!top)
+ {
+ //naviframe is empty, nothing to handle
+ return;
+ }
+
+ View *view = static_cast<View *>(elm_object_item_data_get(top));
+ DBG("view = %p", view);
+
+ if (view && view->onBack())
+ {
+ DBG("onBack handled");
+ return;
+ }
+
+ //naviframe has only one item
+ if (top == elm_naviframe_bottom_item_get(obj))
+ {
+ if(view && view->ug)
+ {
+ DBG("destroy self, removing view-callbacks");
+ ea_object_event_callback_del(view->navi, EA_CALLBACK_BACK, &Common::ViewManager::onBack);
+ ea_object_event_callback_del(view->navi, EA_CALLBACK_MORE, &Common::ViewManager::onMenu);
+ ug_destroy_me(view->ug);
+ }
+ else if(data)
+ {
+ DBG("lower win");
+ elm_win_lower(static_cast<Evas_Object *>(data));
+ return;
+ }
+ }
+ else
+ {
+ DBG("pop item");
+ elm_naviframe_item_pop(obj);
+ return;
+ }
+ }
+
+ void ViewManager::onMenu(void *data, Evas_Object *obj, void *event)
+ {
+ PH_TRACE;
+ if(!obj)
+ {
+ return;
+ }
+
+ Elm_Object_Item *top = elm_naviframe_top_item_get(obj);
+
+ if(!top)
+ {
+ //naviframe is empty, nothing to handle
+ return;
+ }
+
+ View *view = static_cast<View *>(elm_object_item_data_get(top));
+
+ if (view)
+ {
+ view->onMenu();
+ }
+ }
+
+ void ViewManager::onViewDestroy(void *data, Evas *e, Evas_Object *obj, void *event_info)
+ {
+ PH_TRACE;
+ if(data)
+ {
+ delete static_cast<View *>(data);
+ }
+ }
+}
diff --git a/lib/common/ct-group-assign-popup.cpp b/lib/common/ct-group-assign-popup.cpp
new file mode 100644
index 0000000..1ffc47d
--- /dev/null
+++ b/lib/common/ct-group-assign-popup.cpp
@@ -0,0 +1,431 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "ct-group-assign-popup.h"
+
+#include <contacts.h>
+#include "ct-list.h"
+#include "phone.h"
+#include "phone-text.h"
+
+typedef struct
+{
+ int id;
+ const char *name;
+ Eina_Bool is_assigned;
+ Eina_Bool prev_assigned;
+} ct_group_assign_item;
+
+typedef struct
+{
+ Evas_Object *win;
+ Evas_Object *navi;
+ Evas_Object *popup;
+ Evas_Object *genlist;
+
+ contacts_record_h contact;
+ ct_assign_result_cb assign_cb;
+ void *assign_cb_data;
+
+ unsigned group_count;
+ contacts_list_h group_list;
+ ct_group_assign_item *items;
+} ct_group_assign_data;
+
+static void grp_assign_popup_destroy(ct_group_assign_data *cgassign_d);
+
+static contacts_list_h grp_assign_get_groups();
+static ct_group_assign_item * grp_assign_create_items(contacts_list_h groups, contacts_record_h contact);
+static void grp_assign_add_to_group(contacts_record_h contact, int group_id);
+static void grp_assign_remove_from_group(contacts_record_h contact, int group_id);
+
+static Evas_Object * grp_assign_create_popup(ct_group_assign_data *cgassign_d);
+static Evas_Object * grp_assign_create_genlist(ct_group_assign_data *cgassign_d);
+
+static void grp_assign_gl_fill(ct_group_assign_data *cgassign_d);
+static void grp_assign_gl_sel_cb(void *data, Evas_Object *obj, void *event_info);
+static char * grp_assign_gl_label_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object * grp_assign_gl_icon_get(void *data, Evas_Object *obj, const char *part);
+
+static void grp_assign_ok_cb(void *data, Evas_Object *obj, void *event_info);
+static void grp_assign_create_cb(void *data, Evas_Object *obj, void *event_info);
+static void grp_assign_group_created_cb(int group_id, void *data, bool changed);
+static void grp_assign_popup_destroy_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+
+Evas_Object * ct_group_assign_popup_create(Evas_Object *win, Evas_Object *navi,
+ contacts_record_h contact, ct_assign_result_cb assign_cb, void *assign_cb_data)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == win, NULL, "win is NULL");
+ p_retvm_if(NULL == navi, NULL, "navi is NULL");
+ p_retvm_if(NULL == contact, NULL, "contact is NULL");
+
+ unsigned count = 0;
+ contacts_list_h groups = NULL;
+ ct_group_assign_item *items = NULL;
+ ct_group_assign_data *cgassign_d = NULL;
+
+ groups = grp_assign_get_groups();
+ items = grp_assign_create_items(groups, contact);
+ if(!items)
+ {
+ if(groups)
+ {
+ contacts_list_destroy(groups, true);
+ }
+
+ return NULL;
+ }
+
+ contacts_list_get_count(groups, &count);
+
+ cgassign_d = (ct_group_assign_data *) calloc(1, sizeof(ct_group_assign_data));
+ cgassign_d->win = win;
+ cgassign_d->navi = navi;
+ cgassign_d->contact = contact;
+ cgassign_d->assign_cb = assign_cb;
+ cgassign_d->assign_cb_data = assign_cb_data;
+ cgassign_d->group_count = count;
+ cgassign_d->group_list = groups;
+ cgassign_d->items = items;
+
+ cgassign_d->popup = grp_assign_create_popup(cgassign_d);
+ if(!cgassign_d->popup)
+ {
+ grp_assign_popup_destroy(cgassign_d);
+ return NULL;
+ }
+
+ cgassign_d->genlist = grp_assign_create_genlist(cgassign_d);
+ if(!cgassign_d->genlist)
+ {
+ evas_object_del(cgassign_d->popup);
+ return NULL;
+ }
+
+ grp_assign_gl_fill(cgassign_d);
+
+ return cgassign_d->popup;
+}
+
+static void grp_assign_popup_destroy(ct_group_assign_data *cgassign_d)
+{
+ p_retm_if(NULL == cgassign_d, "cgassign_d is NULL");
+
+ if(cgassign_d->items)
+ {
+ free(cgassign_d->items);
+ }
+
+ if(cgassign_d->group_list)
+ {
+ contacts_list_destroy(cgassign_d->group_list, true);
+ }
+
+ free(cgassign_d);
+}
+
+static contacts_list_h grp_assign_get_groups()
+{
+ PH_TRACE;
+ static unsigned props[] =
+ {
+ _contacts_group.id,
+ _contacts_group.name,
+ _contacts_group.extra_data
+ };
+
+ contacts_query_h query = NULL;
+ contacts_list_h list = NULL;
+ if(contacts_query_create(_contacts_group._uri, &query) == CONTACTS_ERROR_NONE)
+ {
+ contacts_query_set_projection(query, props, ARRAY_SIZE(props));
+ contacts_db_get_records_with_query(query, 0, 0, &list);
+ contacts_query_destroy(query);
+ }
+
+ return list;
+}
+
+static ct_group_assign_item * grp_assign_create_items(contacts_list_h groups, contacts_record_h contact)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == groups, NULL, "groups is NULL");
+ p_retvm_if(NULL == contact, NULL, "contact is NULL");
+
+ unsigned group_count = 0;
+ unsigned rel_count = 0;
+ contacts_record_h group = NULL;
+ ct_group_assign_item *items = NULL;
+ ct_group_assign_item *item = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_list_get_count(groups, &group_count);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_list_get_count() Failed(%d)", err);
+
+ err = contacts_record_get_child_record_count(contact,
+ _contacts_contact.group_relation, &rel_count);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_record_get_child_record_count() Failed(%d)", err);
+
+ items = (ct_group_assign_item *) calloc(group_count, sizeof(ct_group_assign_item));
+ item = items;
+
+ CONTACTS_LIST_FOREACH(groups, group)
+ {
+ contacts_record_get_int(group, _contacts_group.id, &item->id);
+ item->name = phone_get_group_name(group);
+
+ for(unsigned i = 0; i < rel_count; ++i)
+ {
+ contacts_record_h rel = NULL;
+ int group_id = 0;
+
+ contacts_record_get_child_record_at_p(contact, _contacts_contact.group_relation, i, &rel);
+ contacts_record_get_int(rel, _contacts_group_relation.group_id, &group_id);
+ if(group_id == item->id)
+ {
+ item->prev_assigned = item->is_assigned = true;
+ break;
+ }
+ }
+
+ ++item;
+ }
+ contacts_list_first(groups);
+
+ return items;
+}
+
+static void grp_assign_add_to_group(contacts_record_h contact, int group_id)
+{
+ PH_TRACE;
+ p_retm_if(NULL == contact, "contact is NULL");
+ p_retm_if(group_id < 1, "invalid group ID");
+
+ contacts_record_h record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_create(_contacts_group_relation._uri, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record, _contacts_group_relation.group_id,
+ group_id);
+ if(CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_set_int() Failed(%d)", err);
+ contacts_record_destroy(record, true);
+ return;
+ }
+
+ err = contacts_record_add_child_record(contact,
+ _contacts_contact.group_relation, record);
+ if(CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_add_child_record() Failed(%d)", err);
+ contacts_record_destroy(record, true);
+ return;
+ }
+}
+
+static void grp_assign_remove_from_group(contacts_record_h contact, int group_id)
+{
+ PH_TRACE;
+ p_retm_if(NULL == contact, "contact is NULL");
+ p_retm_if(group_id < 1, "invalid group ID");
+
+ unsigned rel_count = 0;
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_get_child_record_count(contact,
+ _contacts_contact.group_relation, &rel_count);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_child_record_count() Failed(%d)", err);
+
+ for(unsigned i = 0; i < rel_count; ++i)
+ {
+ contacts_record_h rel = NULL;
+ int id = 0;
+
+ contacts_record_get_child_record_at_p(contact, _contacts_contact.group_relation, i, &rel);
+ contacts_record_get_int(rel, _contacts_group_relation.group_id, &id);
+ if(id == group_id)
+ {
+ contacts_record_remove_child_record(contact, _contacts_contact.group_relation, rel);
+ break;
+ }
+ }
+}
+
+static Evas_Object * grp_assign_create_popup(ct_group_assign_data *cgassign_d)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == cgassign_d, NULL, "cgassign_d is NULL");
+
+ Evas_Object *popup = elm_popup_add(cgassign_d->navi);
+ p_retvm_if(NULL == popup, NULL, "elm_popup_add() failed");
+
+ bool success = phone_popup_add_button(popup, S_(PH_SYS_SK_CANCEL),
+ NULL, NULL) != NULL
+ && phone_popup_add_button(popup, S_(PH_SYS_SK_OK),
+ grp_assign_ok_cb, cgassign_d) != NULL
+ && phone_popup_add_button(popup, S_(CT_SYS_BODY_CREATE),
+ grp_assign_create_cb, cgassign_d) != NULL;
+
+ if(!success)
+ {
+ evas_object_del(popup);
+ return NULL;
+ }
+
+ elm_object_style_set(popup, "content_no_vhpad");
+ evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL,
+ grp_assign_popup_destroy_cb, cgassign_d);
+ evas_object_show(popup);
+
+ return popup;
+}
+
+static Evas_Object * grp_assign_create_genlist(ct_group_assign_data *cgassign_d)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == cgassign_d, NULL, "cgassign_d is NULL");
+
+ Evas_Object *genlist = elm_genlist_add(cgassign_d->popup);
+ p_retvm_if(NULL == genlist, NULL, "elm_genlist_add() failed");
+
+ elm_object_content_set(cgassign_d->popup, genlist);
+ evas_object_smart_callback_add(genlist, "selected", grp_assign_gl_sel_cb, cgassign_d);
+
+ return genlist;
+}
+
+static void grp_assign_gl_fill(ct_group_assign_data *cgassign_d)
+{
+ PH_TRACE;
+ Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
+ itc->item_style = "1text.1icon.2/popup";
+ itc->func.text_get = grp_assign_gl_label_get;
+ itc->func.content_get = grp_assign_gl_icon_get;
+
+ ct_group_assign_item *item = cgassign_d->items;
+ ct_group_assign_item *end = item + cgassign_d->group_count;
+ for(; item != end; ++item)
+ {
+ elm_genlist_item_append(cgassign_d->genlist, itc, item,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+
+ elm_genlist_item_class_free(itc);
+}
+
+static void grp_assign_gl_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == event_info, "event_info is NULL");
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ Evas_Object *check = elm_object_item_part_content_get(item, "elm.icon");
+
+ elm_check_state_set(check, !elm_check_state_get(check));
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+}
+
+static char * grp_assign_gl_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data, NULL, "data is NULL");
+ ct_group_assign_item *group = (ct_group_assign_item *) data;
+ return strdup(group->name);
+}
+
+static Evas_Object * grp_assign_gl_icon_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data, NULL, "data is NULL");
+ ct_group_assign_item *group = (ct_group_assign_item *) data;
+
+ Evas_Object *check = elm_check_add(obj);
+ evas_object_propagate_events_set(check, EINA_FALSE);
+ elm_check_state_set(check, group->is_assigned);
+ elm_check_state_pointer_set(check, &group->is_assigned);
+ return check;
+}
+
+static void grp_assign_ok_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ ct_group_assign_data *cgassign_d = (ct_group_assign_data *) data;
+
+ int contact_id = 0;
+ ct_group_assign_item *item = cgassign_d->items;
+ ct_group_assign_item *end = item + cgassign_d->group_count;
+
+ contacts_record_get_int(cgassign_d->contact, _contacts_contact.id, &contact_id);
+
+ for(; item != end; ++item)
+ {
+ if(item->is_assigned != item->prev_assigned)
+ {
+ if(item->is_assigned)
+ {
+ grp_assign_add_to_group(cgassign_d->contact, item->id);
+ }
+ else
+ {
+ grp_assign_remove_from_group(cgassign_d->contact, item->id);
+ }
+ }
+ }
+
+ if(cgassign_d->assign_cb)
+ {
+ cgassign_d->assign_cb(cgassign_d->assign_cb_data);
+ }
+}
+
+static void grp_assign_create_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ ct_group_assign_data *cgassign_d = (ct_group_assign_data *) data;
+
+ ctui_create_group_input_view(cgassign_d->win, cgassign_d->navi, NULL,
+ grp_assign_group_created_cb, cgassign_d);
+}
+
+static void grp_assign_group_created_cb(int group_id, void *data, bool changed)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ ct_group_assign_data *cgassign_d = (ct_group_assign_data *) data;
+
+ grp_assign_add_to_group(cgassign_d->contact, group_id);
+ if(cgassign_d->assign_cb)
+ {
+ cgassign_d->assign_cb(cgassign_d->assign_cb_data);
+ }
+}
+
+static void grp_assign_popup_destroy_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ ct_group_assign_data *cgassign_d = (ct_group_assign_data *) data;
+ grp_assign_popup_destroy(cgassign_d);
+}
diff --git a/lib/common/ct-group-input-view.cpp b/lib/common/ct-group-input-view.cpp
new file mode 100755
index 0000000..aae4615
--- /dev/null
+++ b/lib/common/ct-group-input-view.cpp
@@ -0,0 +1,1653 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <Ecore_X.h>
+#include <unicode/ucol.h>
+#include <app_service.h>
+#include "phone.h"
+#include "phone-common.h"
+#include "ui/genlist/genlist.h"
+#include "ui/genlist/item.h"
+
+#include "ct-list.h"
+#include "ct-group.h"
+
+static const char *ELM_TEXT = "elm.text";
+static const char *ELM_ICON = "elm.icon";
+
+typedef struct : public Common::View
+{
+ Evas_Object *genlist;
+ Evas_Object *entry;
+ Elm_Object_Item *ab_gen_item;
+ Elm_Object_Item *vibration_gen_item;
+ Elm_Object_Item *ringtone_gen_item;
+ Elm_Object_Item *image_item;
+ Elm_Object_Item *group_member_item;
+ Evas_Object *done_button;
+ Evas_Object *navi_it_pop_to;
+ Ecore_Event_Handler *win_prop_change;
+ bool camera_service_launched;
+ ct_group_input_result_cb result_cb;
+ void *result_cb_data;
+ void *crop_ug;
+ int id_ab;
+ char *ab_name;
+ char *gname_old;
+ char *gname;
+ char *img;
+ char *ringtone;
+ char *vibration;
+ int id_grp;
+ bool editgroup;
+ bool err;
+ bool is_read_only;
+ Eina_List *member_list;
+} ct_group_input_data;
+
+enum GINPUT_ITC_TYPE
+{
+ GINPUT_ITC_GROUP_IMAGE,
+ GINPUT_ITC_GROUP_CREATE,
+ GINPUT_ITC_GROUP_VIBRATION,
+ GINPUT_ITC_GROUP_RINGTON,
+ GINPUT_ITC_ADDRBOOK,
+ GINPUT_ITC_LINE,
+ GINPUT_ITC_GROUP_MEMBERS,
+ GINPUT_ITC_GROUP_LIST_ITEM,
+};
+
+static Elm_Genlist_Item_Class group_input_itcs[] =
+{
+ {
+ 0, 0, 1, "image_layout", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "dialogue/1icon", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "dialogue/2text.3", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "dialogue/2text.3", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "dialogue/2text.3", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "dialogue/separator/1/with_line", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "1text.1icon", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "dialogue/1text.1icon.2", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+};
+
+int group_input_get_member_list(int group_id, Eina_List **list);
+
+static int group_input_group_update(ct_group_input_data *cgroup_input_d)
+{
+ PH_TRACE;
+ int ret = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ contacts_record_h group_record = NULL;
+ contacts_list_h group_list = NULL;
+ unsigned int count = 0;
+
+ ret = phone_cts_get_list(_contacts_group._uri,
+ _contacts_group.address_book_id, cgroup_input_d->id_ab,
+ &group_list);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "phone_cts_get_list() Failed(%d)", ret);
+
+ ret = contacts_list_get_count(group_list, &count);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_list_get_count() Failed(%d)", ret);
+ if (count > 0)
+ { //when default group removed error
+ if (cgroup_input_d->editgroup == false)
+ {
+ ret = contacts_list_get_current_record_p(group_list, &record);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_list_get_current_record_p() Failed(%d)", ret);
+ while (record)
+ {
+ char* group_name = NULL;
+ ret = contacts_record_get_str_p(record, _contacts_group.name,
+ &group_name);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_record_get_str_p() Failed(%d)", ret);
+ if (strcmp(cgroup_input_d->gname, group_name) == 0)
+ {
+ ret = -1;
+ contacts_list_destroy(group_list, true);
+ PH_DBG("create group :cgroup_input_d->id_grp =&d",
+ cgroup_input_d->id_grp);
+ return ret;
+ }
+ ret = contacts_list_next(group_list);
+ if (CONTACTS_ERROR_NO_DATA == ret)
+ break;
+ else
+ {
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_list_next() Failed(%d)", ret);
+ }
+ ret = contacts_list_get_current_record_p(group_list, &record);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_list_get_current_record_p() Failed(%d)", ret);
+ }
+ }
+ else
+ {
+ ret = contacts_list_get_current_record_p(group_list, &record);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_list_get_current_record_p() Failed(%d)", ret);
+ while (record)
+ {
+ char* group_name;
+ ret = contacts_record_get_str(record, _contacts_group.name,
+ &group_name);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_record_get_str() Failed(%d)", ret);
+ if (strcmp(cgroup_input_d->gname, group_name) == 0)
+ {
+ int group_id;
+ ret = contacts_record_get_int(record, _contacts_group.id,
+ &group_id);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_record_get_int() Failed(%d)", ret);
+ if (group_id != cgroup_input_d->id_grp)
+ {
+ ret = -1;
+ contacts_list_destroy(group_list, true);
+ PH_DBG("group id = %d,cgroup_input_d->id_grp =&d",
+ group_id, cgroup_input_d->id_grp);
+ return ret;
+ }
+ }
+ ret = contacts_list_next(group_list);
+ if (CONTACTS_ERROR_NONE != ret)
+ break;
+ ret = contacts_list_get_current_record_p(group_list, &record);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_list_get_current_record_p() Failed(%d)", ret);
+
+ }
+ }
+ }
+ if (cgroup_input_d->editgroup == true)
+ {
+ ret = contacts_db_get_record(_contacts_group._uri,
+ cgroup_input_d->id_grp, &group_record);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_db_get_record() Failed(%d)", ret);
+ }
+ else
+ {
+ ret = contacts_record_create(_contacts_group._uri, &group_record);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_record_create() Failed(%d)", ret);
+ }
+
+ ret = contacts_record_set_str(group_record, _contacts_group.name,
+ cgroup_input_d->gname);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_record_set_str() Failed(%d)", ret);
+
+ ret = contacts_record_set_str(group_record, _contacts_group.image_path,
+ cgroup_input_d->img);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_record_set_str() Failed(%d)", ret);
+ PH_DBG("cgroup_input_d->img = %s", cgroup_input_d->img);
+
+ ret = contacts_record_set_str(group_record, _contacts_group.ringtone_path,
+ cgroup_input_d->ringtone);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_record_set_str() Failed(%d)", ret);
+
+ ret = contacts_record_set_str(group_record, _contacts_group.vibration,
+ cgroup_input_d->vibration);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_record_set_str() Failed(%d)", ret);
+
+ if (cgroup_input_d->editgroup == true)
+ {
+ ret = contacts_db_update_record(group_record);
+ PH_DBG("cgroup_input_d->id_grp = %d", cgroup_input_d->id_grp);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_db_update_record() Failed(%d)", ret);
+ }
+ else
+ {
+ ret = contacts_db_insert_record(group_record, &cgroup_input_d->id_grp);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_db_insert_record() Failed(%d)", ret);
+ }
+
+ Eina_List *remove_list = NULL;
+ group_input_get_member_list(cgroup_input_d->id_grp, &remove_list);
+
+ ctui_list_update_group_list_without_progressbar(cgroup_input_d->navi,
+ cgroup_input_d->id_grp, cgroup_input_d->member_list, remove_list);
+
+ ret = contacts_record_destroy(group_record, true);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_record_destroy() Failed(%d)", ret);
+
+ ret = contacts_list_destroy(group_list, true);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_list_destroy() Failed(%d)", ret);
+
+ return ret;
+
+}
+
+/**
+ * @brief handle error state when save button pressed
+ * @param[in] ret error code
+ * @param[in] text current text inside control.
+ * @param[out] cgroup_input_d structure with ui controls and current state, old text saved here.
+ */
+static void handle_save_btn_error(int ret, const char *text, ct_group_input_data *cgroup_input_d)
+{
+ PH_TRACE;
+ bool isCorrectParameters = (cgroup_input_d != NULL && cgroup_input_d->entry != NULL && text != NULL);
+
+ Evas_Object* entry = cgroup_input_d->entry ;
+
+ if (!isCorrectParameters)
+ {
+ PH_DBG("Error: incorrect parameters \n");
+ return;
+ }
+
+ std::string err_msg;
+
+ cgroup_input_d->err = true;
+ if (cgroup_input_d->gname_old)
+ {
+ FREEandSTRDUP(cgroup_input_d->gname_old, text);
+ }
+ else
+ {
+ cgroup_input_d->gname_old = strdup(text);
+ }
+
+ switch (ret)
+ {
+ case CONTACTS_ERROR_NO_DATA:
+ {
+ err_msg = T_(CT_GET_TEXT_ERR, CTTEXT_ERR_DB_LOCKED);
+ break;
+ }
+ case CONTACTS_ERROR_FILE_NO_SPACE:
+ {
+ err_msg = S_(CT_SYS_POP_NOT_ENOUGH_MEMORY);
+ break;
+ }
+ case -1:
+ {
+ err_msg = T_(CT_GET_TEXT_ERR, CTTEXT_ALREADY_EXIST);
+ break;
+ }
+ default:
+ {
+ err_msg = S_(PH_SYS_POP_FAILED);
+ break;
+ }
+ }
+
+
+ err_msg = "<color=#FF0000>" + err_msg + "</>";
+ elm_entry_entry_set(entry, err_msg.c_str());
+
+ if (NULL != cgroup_input_d->done_button)
+ {
+ elm_object_disabled_set(cgroup_input_d->done_button, EINA_TRUE);
+ }
+}
+
+
+static void group_input_save_btn_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+ bool isCorrectParameters = (NULL != cgroup_input_d && NULL != cgroup_input_d->entry);
+ p_retm_if(!isCorrectParameters, "incorrect parameters");
+
+ Evas_Object *entry = cgroup_input_d->entry;
+ char *text = ctui_entry_markup_to_utf8(elm_entry_entry_get(entry));
+ p_retm_if(NULL == text, "ctui_entry_markup_to_utf8() return NULL");
+ cgroup_input_d->gname = SAFE_STRDUP(text);
+
+ int ret = group_input_group_update(cgroup_input_d);
+ if (ret != CONTACTS_ERROR_NONE)
+ {
+ handle_save_btn_error(ret, text, cgroup_input_d);
+ free(text);
+ return;
+ }
+ free(text);
+
+ if (cgroup_input_d->result_cb)
+ cgroup_input_d->result_cb(cgroup_input_d->id_grp, cgroup_input_d->result_cb_data,
+ false);
+
+ Evas_Object *navi_it_pop_to = (Evas_Object *) evas_object_data_get(cgroup_input_d->navi, "navi_it_pop");
+ if (navi_it_pop_to)
+ { // group - create/edit - assign member
+ evas_object_data_del(cgroup_input_d->navi, "navi_it_pop");
+ }
+ else
+ { // group detail - add member
+ evas_object_data_del(cgroup_input_d->navi, "navi_it_pop");
+ }
+}
+
+static void group_input_popup_hide_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+ evas_object_del(cgroup_input_d->popup);
+ cgroup_input_d->popup = NULL;
+ elm_object_tree_focus_allow_set(cgroup_input_d->navi, EINA_TRUE);
+}
+
+static void group_input_ab_popup_item_sel_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+ ct_ab_popup_data *ab_popup_data;
+ char account_name[PH_TEXT_MAX_LEN + 1];
+ char temp[PH_TEXT_MAX_LEN + 1];
+
+ group_input_popup_hide_cb(cgroup_input_d, NULL, NULL);
+
+ ab_popup_data = (ct_ab_popup_data *) elm_object_item_data_get((const Elm_Object_Item *) event_info);
+ p_retm_if(NULL == ab_popup_data, "elm_object_item_data_get() return NULL");
+
+ if (cgroup_input_d->id_ab == ab_popup_data->id)
+ return;
+
+ cgroup_input_d->id_ab = ab_popup_data->id;
+
+ if (ab_popup_data->id)
+ {
+ ctui_get_addressbook_name(ab_popup_data->id, account_name,
+ sizeof(account_name));
+ snprintf(temp, sizeof(temp), "%s(%s)", account_name,
+ ab_popup_data->name);
+ }
+ else
+ {
+ snprintf(temp, sizeof(temp), "%s", T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE));
+ }
+ free(cgroup_input_d->ab_name);
+ cgroup_input_d->ab_name = strdup(temp);
+ elm_genlist_item_update(cgroup_input_d->ab_gen_item);
+
+ // FIXME : push contact list view to select contacts added to the created group
+}
+
+static void group_input_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *popup;
+ Evas_Object *btn;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+
+ if (elm_genlist_item_flip_get(item))
+ return;
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ popup = ctui_addrbook_popup(cgroup_input_d->win,
+ group_input_ab_popup_item_sel_cb, cgroup_input_d,
+ CT_AB_POPUP_TYPE_GINPUT_VIEW);
+ p_retm_if(NULL == popup, "ctui_addrbook_popup() return NULL");
+ elm_object_part_text_set(popup, "title,text",
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_SAVE_TO));
+
+ btn = elm_button_add(popup);
+ elm_object_text_set(btn, S_(PH_SYS_POP_CLOSE));
+ elm_object_part_content_set(popup, "button1", btn);
+ elm_object_style_set(btn, "popup_button/default");
+ evas_object_smart_callback_add(btn, CLICKED, group_input_popup_hide_cb,
+ cgroup_input_d);
+
+ elm_object_tree_focus_allow_set(cgroup_input_d->navi, EINA_FALSE);
+ cgroup_input_d->popup = popup;
+}
+static void group_input_setting_ringtone_result(ui_gadget_h ug, service_h service, void *data)
+{
+ PH_TRACE;
+ assert(ug);
+ assert(data);
+ if (NULL != ug && NULL != data)
+ {
+ ct_group_input_data *cgroup_input_d = static_cast<ct_group_input_data *>(data);
+
+ if (NULL != cgroup_input_d->done_button)
+ {
+ elm_object_disabled_set(cgroup_input_d->done_button, EINA_FALSE);
+ }
+
+ if (service)
+ {
+ char *val = NULL;
+ service_get_extra_data(service, "result", &val);
+ if (NULL != val)
+ {
+ FREEandSTRDUP(cgroup_input_d->ringtone, val);
+ free(val);
+ }
+ else
+ {
+ ERR("group_input_setting_ringtone_result() Failed: %s", "return value is NULL");
+ return;
+ }
+ }
+ elm_genlist_item_update(cgroup_input_d->ringtone_gen_item);
+ }
+ else
+ {
+ ERR("group_input_setting_ringtone_result() Failed: %s", "ug or data is NULL");
+ }
+}
+static void group_input_child_ug_destroy(ui_gadget_h ug, void *priv)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) priv;
+
+ p_retm_if(NULL == ug, "ug is NULL");
+
+ elm_object_tree_focus_allow_set(cgroup_input_d->navi, EINA_TRUE);
+
+ if (cgroup_input_d->child_ug)
+ {
+ ug_destroy(cgroup_input_d->child_ug);
+ cgroup_input_d->child_ug = NULL;
+ }
+}
+
+/*
+ static void group_input_gl_vibration_sel(void *data, Evas_Object *obj, void *event_info)
+ {
+ PH_TRACE;
+ //ToDo can not use a setting vibration view yet
+ return;
+ }
+ */
+
+static void group_input_gl_ringtone_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+
+ if(cgroup_input_d->entry)
+ {
+ char* text = NULL;
+ text = ctui_entry_markup_to_utf8(elm_entry_entry_get(cgroup_input_d->entry));
+ if(text)
+ {
+ free(cgroup_input_d->gname);
+ cgroup_input_d->gname = text;
+ }
+ }
+
+ if (elm_genlist_item_flip_get(item))
+ return;
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ struct ug_cbs cbs = { 0 };
+
+ service_h service;
+
+ service_create(&service);
+ service_add_extra_data(service, "path", "/opt/share/settings/Ringtones");
+ service_add_extra_data(service, "select_type", "SINGLE_FILE");
+ service_add_extra_data(service, "file_type", "SOUND");
+ if (cgroup_input_d->ringtone)
+ service_add_extra_data(service, "marked_mode",
+ cgroup_input_d->ringtone);
+
+ cbs.result_cb = group_input_setting_ringtone_result;
+ cbs.destroy_cb = group_input_child_ug_destroy;
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.priv = cgroup_input_d;
+
+ cgroup_input_d->child_ug = ug_create(cgroup_input_d->ug, MYFILES_UG,
+ UG_MODE_FULLVIEW, service, &cbs);
+ p_warn_if(NULL == cgroup_input_d->child_ug, "ug_create() Failed");
+ elm_object_tree_focus_allow_set(cgroup_input_d->navi, EINA_FALSE);
+ service_destroy(service);
+}
+
+static void group_input_gl_group_list_item_on_realized(ui_genlist_item *item)
+{
+ PH_TRACE;
+ p_retm_if(NULL == item, "parameter(item) is NULL");
+ elm_object_item_signal_emit(item->object_item, "elm,state,edit,enabled", "");
+}
+
+static ui_genlist_item *group_input_gl_group_list_item_create(ct_person_list *person_info, Eina_List **group_list, Evas_Object *save_button)
+{
+ PH_TRACE;
+ bool isCorrectParameters = (NULL != person_info && NULL != group_list && NULL != *group_list);
+ p_retvm_if(!isCorrectParameters, NULL, "incorrect parameters");
+
+ ui_genlist_item *item = ui_genlist_item_create();
+ p_retvm_if(NULL == item, NULL, "item is NULL");
+ item->on_realized = group_input_gl_group_list_item_on_realized;
+ item->item_list = group_list;
+ item->data = person_info;
+ item->save_button = save_button;
+
+ return item;
+}
+
+static int group_input_list_sort_cb(const void *data1, const void *data2)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data1, UCOL_LESS, "parameter(data1) is NULL");
+ p_retvm_if(NULL == data2, UCOL_GREATER, "parameter(data2) is NULL");
+ ct_person_list *person_info = (ct_person_list *) data1;
+ ct_person_list *person_info2 = (ct_person_list *) data2;
+ p_retvm_if(NULL == person_info->display, UCOL_LESS, "person_info->display is NULL");
+ p_retvm_if(NULL == person_info2->display, UCOL_GREATER, "person_info2->display is NULL");
+
+ UErrorCode status = U_ZERO_ERROR;
+ int res = 0;
+ UCollator* collator = ucol_open("", &status);
+ if (U_SUCCESS(status))
+ {
+ UCharIterator iterA;
+ UCharIterator iterB;
+ uiter_setUTF8(&iterA, person_info->display, strlen(person_info->display));
+ uiter_setUTF8(&iterB, person_info2->display, strlen(person_info2->display));
+
+ res = ucol_strcollIter(collator, &iterA, &iterB, &status);
+ ucol_close(collator);
+ }
+ return res;
+}
+
+static Eina_Bool group_input_add_member_cb(void *data, Elm_Object_Item *it)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data, false, "data is NULL");
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+
+ Elm_Object_Item *last_item = elm_genlist_last_item_get(cgroup_input_d->genlist);
+ while(cgroup_input_d->group_member_item != last_item)
+ {
+ elm_object_item_del(last_item);
+ last_item = elm_genlist_last_item_get(cgroup_input_d->genlist);
+ }
+
+ PH_DBG("cgroup_input_d->member_list = %p", cgroup_input_d->member_list);
+ if (cgroup_input_d->member_list)
+ {
+ cgroup_input_d->member_list = eina_list_sort(cgroup_input_d->member_list,
+ eina_list_count(cgroup_input_d->member_list), group_input_list_sort_cb);
+
+ Eina_List* l = NULL;
+ void *p_info = NULL;
+ EINA_LIST_FOREACH(cgroup_input_d->member_list, l, p_info)
+ {
+ ct_person_list *person_info = (ct_person_list *) p_info;
+ ui_genlist_item *item = group_input_gl_group_list_item_create(person_info,
+ &cgroup_input_d->member_list, cgroup_input_d->done_button);
+ item->object_item = elm_genlist_item_append(cgroup_input_d->genlist,
+ &group_input_itcs[GINPUT_ITC_GROUP_LIST_ITEM], item,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(item->object_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+ }
+
+ if (cgroup_input_d->gname)
+ {
+ if (*cgroup_input_d->gname)
+ {
+ elm_object_disabled_set(cgroup_input_d->done_button, false);
+ }
+ }
+ return true;
+}
+
+static void group_input_fill_genlist(ct_group_input_data *cgroup_input_d)
+{
+ PH_TRACE;
+ Elm_Object_Item * item;
+
+ item = elm_genlist_item_append(cgroup_input_d->genlist,
+ &group_input_itcs[GINPUT_ITC_GROUP_IMAGE], cgroup_input_d, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ cgroup_input_d->image_item = item;
+
+ item = elm_genlist_item_append(cgroup_input_d->genlist,
+ &group_input_itcs[GINPUT_ITC_LINE], cgroup_input_d, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ item = elm_genlist_item_append(cgroup_input_d->genlist,
+ &group_input_itcs[GINPUT_ITC_GROUP_CREATE], cgroup_input_d, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+// item = elm_genlist_item_append(cgroup_input_d->genlist, &group_input_itcs[GINPUT_ITC_GROUP_VIBRATION], cgroup_input_d, NULL,
+// ELM_GENLIST_ITEM_NONE, group_input_gl_sel, cgroup_input_d);
+// cgroup_input_d->vibration_gen_item = item; can not use a setting vibration view yet.
+
+ item = elm_genlist_item_append(cgroup_input_d->genlist,
+ &group_input_itcs[GINPUT_ITC_GROUP_RINGTON], cgroup_input_d, NULL,
+ ELM_GENLIST_ITEM_NONE, group_input_gl_ringtone_sel, cgroup_input_d);
+ cgroup_input_d->ringtone_gen_item = item;
+
+ item = elm_genlist_item_append(cgroup_input_d->genlist,
+ &group_input_itcs[GINPUT_ITC_ADDRBOOK], cgroup_input_d, NULL,
+ ELM_GENLIST_ITEM_NONE, group_input_gl_sel, cgroup_input_d);
+ cgroup_input_d->ab_gen_item = item;
+ if (cgroup_input_d->is_read_only == true)
+ elm_object_item_disabled_set(item, EINA_TRUE);
+
+ cgroup_input_d->group_member_item = elm_genlist_item_append(cgroup_input_d->genlist,
+ &group_input_itcs[GINPUT_ITC_GROUP_MEMBERS], cgroup_input_d, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(cgroup_input_d->group_member_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ group_input_add_member_cb(cgroup_input_d, NULL);
+}
+
+static char* group_input_gl_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+ const char *display;
+
+ if (!strcmp(part, "elm.text.1"))
+ return strdup(T_(CT_GET_TEXT_BASE_OP, CTTEXT_SAVE_TO));
+ else if (!strcmp(part, "elm.text.2"))
+ {
+ if (cgroup_input_d && 0 == cgroup_input_d->id_ab)
+ display = S_(CT_SYS_BODY_PHONE);
+ else if (cgroup_input_d && cgroup_input_d->ab_name)
+ display = cgroup_input_d->ab_name;
+ else
+ display = S_(PH_SYS_BODY_UNKNOWN);
+ return SAFE_STRDUP(display);
+ }
+ return NULL;
+}
+static char* group_input_gl_vibration_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+ const char *display;
+
+ if (!strcmp(part, "elm.text.1"))
+ return strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_VIBRATION_PATTERN));
+ else if (!strcmp(part, "elm.text.2"))
+ {
+ if (cgroup_input_d && 0 == cgroup_input_d->id_ab)
+ display = T_(CT_GET_TEXT_BASIC, CTTEXT_DEFAULT);
+ else if (cgroup_input_d && cgroup_input_d->vibration)
+ display = strrchr(cgroup_input_d->vibration, '/') + 1;
+ else
+ display = S_(PH_SYS_BODY_UNKNOWN);
+ return SAFE_STRDUP(display);
+ }
+ return NULL;
+}
+static char* group_input_gl_ringtone_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+ const char *display;
+
+ if (!strcmp(part, "elm.text.1"))
+ return strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_RINGTONE));
+ else if (!strcmp(part, "elm.text.2"))
+ {
+ if (cgroup_input_d && cgroup_input_d->ringtone == NULL)
+ display = T_(CT_GET_TEXT_BASIC, CTTEXT_DEFAULT);
+ else if (cgroup_input_d && cgroup_input_d->ringtone)
+ {
+ display = strrchr(cgroup_input_d->ringtone, '/') + 1;
+ }
+ else
+ display = S_(PH_SYS_BODY_UNKNOWN);
+ return SAFE_STRDUP(display);
+ }
+ return NULL;
+}
+static void group_input_entry_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char *text;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+
+ p_retm_if(NULL == cgroup_input_d || NULL == obj, "group_input_entry_changed_cb incorrect params");
+
+ text = ctui_entry_markup_to_utf8(elm_entry_entry_get(obj));
+ p_retm_if(NULL == text, "ctui_entry_markup_to_utf8() return NULL");
+
+ if (cgroup_input_d->err)
+ {
+ elm_entry_entry_set(cgroup_input_d->entry, "");
+ cgroup_input_d->err = false;
+ free(text);
+ return;
+ }
+
+ if (*text)
+ {
+ elm_object_disabled_set(cgroup_input_d->done_button, EINA_FALSE);
+ }
+ else
+ {
+ elm_object_disabled_set(cgroup_input_d->done_button, EINA_TRUE);
+ }
+ free(text);
+}
+
+static void group_input_entry_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+
+ if (NULL != cgroup_input_d->child_ug)
+ elm_object_tree_focus_allow_set(cgroup_input_d->navi, EINA_FALSE);
+ p_retm_if(NULL == cgroup_input_d->gname_old,
+ "cgroup_input_d->gname_old is NULL");
+
+ if (cgroup_input_d->err == true)
+ {
+ ctui_entry_entry_set(obj, cgroup_input_d->gname_old);
+ cgroup_input_d->err = false;
+ }
+
+ elm_entry_cursor_end_set(obj);
+}
+
+static void group_input_src_ug_destroy(ui_gadget_h ug, void *priv)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) priv;
+
+ p_retm_if(NULL == ug, "ug is NULL");
+
+ elm_object_tree_focus_allow_set(cgroup_input_d->navi, EINA_TRUE);
+
+ if (NULL == cgroup_input_d->crop_ug)
+ {
+ ug_destroy(cgroup_input_d->child_ug);
+ cgroup_input_d->child_ug = NULL;
+ }
+}
+
+static void group_input_crop_ug_destroy(ui_gadget_h ug, void *priv)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) priv;
+
+ p_retm_if(NULL == ug, "ug is NULL");
+
+ elm_object_tree_focus_allow_set(cgroup_input_d->navi, EINA_TRUE);
+
+ if (cgroup_input_d->crop_ug)
+ {
+ ug_destroy(ug);
+ cgroup_input_d->crop_ug = NULL;
+ }
+ if (cgroup_input_d->child_ug)
+ {
+ ug_destroy(cgroup_input_d->child_ug);
+ cgroup_input_d->child_ug = NULL;
+ }
+}
+
+static void group_input_image_crop_result(ui_gadget_h ug, service_h service,
+ void *data)
+{
+ PH_TRACE;
+ char *img = NULL;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+
+ p_retm_if(NULL == ug || NULL == data, "ug or data is NULL");
+
+ if (service)
+ {
+ service_get_extra_data(service, "crop_image_path", &img);
+ p_retm_if(!img, "return value is NULL.\n");
+ PH_DBG("img = %s", img);
+ FREEandSTRDUP(cgroup_input_d->img, img);
+ free(img);
+ elm_genlist_item_update(cgroup_input_d->image_item);
+ }
+
+ elm_object_tree_focus_allow_set(cgroup_input_d->navi, EINA_TRUE);
+}
+
+static void group_input_image_delete_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_group_input_data *cgroup_input_d = static_cast<ct_group_input_data *>(data);
+ if (NULL != cgroup_input_d->done_button)
+ {
+ elm_object_disabled_set(cgroup_input_d->done_button, EINA_FALSE);
+ }
+ group_input_popup_hide_cb(cgroup_input_d, NULL, NULL);
+ free(cgroup_input_d->img);
+ cgroup_input_d->img = NULL;
+ elm_genlist_item_update(cgroup_input_d->image_item);
+ }
+ else
+ {
+ ERR("group_input_image_delete_cb() Failed: %s", "data is NULL");
+ }
+}
+
+static void group_input_image_gallery_result(ui_gadget_h ug, service_h service, void *data)
+{
+ PH_TRACE;
+ assert(ug);
+ assert(data);
+ if (NULL != ug && NULL != data)
+ {
+ ct_group_input_data *cgroup_input_d = static_cast<ct_group_input_data *>(data);
+
+ if (NULL != cgroup_input_d->done_button)
+ {
+ elm_object_disabled_set(cgroup_input_d->done_button, EINA_FALSE);
+ }
+
+ if (service)
+ {
+ char *val = NULL;
+ service_get_extra_data(service, "path", &val);
+ if (NULL != val)
+ {
+ struct ug_cbs cbs = { 0 };
+ cbs.result_cb = group_input_image_crop_result;
+ cbs.destroy_cb = group_input_crop_ug_destroy;
+ cbs.priv = cgroup_input_d;
+ cgroup_input_d->crop_ug = phone_image_crop_ug(cgroup_input_d->ug, val, &cbs);
+ free(val);
+ }
+ else
+ {
+ ERR("group_input_image_gallery_result() Failed: %s", "return value is NULL");
+ return;
+ }
+ }
+ }
+ else
+ {
+ ERR("group_input_image_gallery_result() Failed: %s", "ug or data is NULL");
+ }
+}
+
+static void group_input_camera_result(service_h service, service_h reply, service_result_e result, void* user_data)
+{
+ PH_TRACE;
+ assert(user_data);
+ if (NULL != user_data)
+ {
+ ct_group_input_data *cgroup_input_d = static_cast<ct_group_input_data *>(user_data);
+ cgroup_input_d->camera_service_launched = false;
+ elm_object_tree_focus_allow_set(cgroup_input_d->navi, EINA_TRUE);
+
+ if (NULL != cgroup_input_d->done_button)
+ {
+ elm_object_disabled_set(cgroup_input_d->done_button, EINA_FALSE);
+ }
+
+ if (reply)
+ {
+ char *img = NULL;
+ service_get_extra_data(reply, "crop_image_path", &img);
+ if (NULL != img)
+ {
+ FREEandSTRDUP(cgroup_input_d->img, img);
+ free(img);
+ }
+ else
+ {
+ ERR("group_input_camera_result() Failed: %s", "return value is NULL");
+ return;
+ }
+ elm_genlist_item_update(cgroup_input_d->image_item);
+ }
+ }
+ else
+ {
+ ERR("group_input_camera_result() Failed: %s", "user_data is NULL");
+ }
+}
+
+static void __group_input_gallery(ct_group_input_data *cgroup_input_d)
+{
+ PH_TRACE;
+ service_h service;
+ struct ug_cbs cbs = { 0 };
+
+ group_input_popup_hide_cb(cgroup_input_d, NULL, NULL);
+ elm_object_tree_focus_allow_set(cgroup_input_d->navi, EINA_FALSE);
+
+ service_create(&service);
+ service_add_extra_data(service, "launch-type", "select-one");
+ service_add_extra_data(service, "file-type", "image");
+
+ cbs.result_cb = group_input_image_gallery_result;
+ cbs.destroy_cb = group_input_src_ug_destroy;
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.priv = cgroup_input_d;
+
+ cgroup_input_d->child_ug = ug_create(cgroup_input_d->ug, GALLERY_UG,
+ UG_MODE_FULLVIEW, service, &cbs);
+ p_warn_if(NULL == cgroup_input_d->child_ug, "ug_create() Failed");
+
+ service_destroy(service);
+}
+
+static void __group_input_camera(ct_group_input_data *cgroup_input_d)
+{
+ PH_TRACE;
+ service_h service;
+ p_ret_if(cgroup_input_d->camera_service_launched);
+ group_input_popup_hide_cb(cgroup_input_d, NULL, NULL);
+ elm_object_tree_focus_allow_set(cgroup_input_d->navi, EINA_FALSE);
+
+ service_create(&service);
+ service_set_window(service, elm_win_xwindow_get(cgroup_input_d->win));
+ service_set_operation(service, SERVICE_OPERATION_CREATE_CONTENT);
+ service_set_mime(service, "image/jpg");
+ service_add_extra_data(service, "CALLER", "contacts");
+ service_send_launch_request(service, group_input_camera_result,
+ cgroup_input_d);
+ cgroup_input_d->camera_service_launched = true;
+ service_destroy(service);
+}
+
+static void __group_input_gallery_mouse_up(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+
+ Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
+ if (ev == NULL)
+ {
+ ERR("ev is null!!!");
+ return;
+ }
+
+ int x, y, w, h;
+
+ if (cgroup_input_d->img && *cgroup_input_d->img)
+ {
+ elm_image_file_set(obj, cgroup_input_d->img, NULL);
+ }
+ else
+ elm_image_file_set(obj, CTUI_IMG_INPUT_GALLERY, NULL);
+
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+ if (ev->output.y < y || y + h < ev->output.y)
+ return;
+
+ __group_input_gallery(cgroup_input_d);
+}
+
+static void __group_input_gallery_mouse_down(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+
+ if (cgroup_input_d->img && *cgroup_input_d->img)
+ {
+ elm_image_file_set(obj, cgroup_input_d->img, NULL);
+ }
+ else
+ elm_image_file_set(obj, CTUI_IMG_INPUT_GALLERY_PRESSED, NULL);
+}
+
+static void __group_input_camera_mouse_up(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+ int x, y, w, h;
+ Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
+ if (ev == NULL)
+ {
+ ERR("ev is null!!!");
+ return;
+ }
+ elm_image_file_set(obj, CTUI_IMG_INPUT_CAMERA, NULL);
+
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+ if (ev->output.y < y || y + h < ev->output.y)
+ return;
+
+ __group_input_camera(cgroup_input_d);
+
+}
+static void __group_input_camera_mouse_down(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ elm_image_file_set(obj, CTUI_IMG_INPUT_CAMERA_PRESSED, NULL);
+}
+
+static Evas_Object* group_input_gl_create_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+ p_retvm_if(NULL== data, NULL, "The parameter(data) is NULL");
+
+ if (0 == strcmp(part, ELM_ICON))
+ {
+ static Elm_Entry_Filter_Limit_Size limit_filter_data;
+ Evas_Object *edit_field;
+ Evas_Object *entry;
+
+ edit_field = ctui_create_editfield(obj,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_GROUP_NAME), NULL, false);
+ evas_object_propagate_events_set(edit_field, EINA_FALSE);
+
+ entry = elm_object_part_content_get(edit_field, "elm.swallow.content");
+ elm_object_signal_emit(edit_field, "elm,state,guidetext,hide", "elm");
+ evas_object_data_set(obj, "entry", entry);
+ cgroup_input_d->entry = entry;
+
+ limit_filter_data.max_char_count = CT_EDITFIELD_MAX_CHAR;
+ elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size,
+ &limit_filter_data);
+ evas_object_smart_callback_add(entry, "changed,user",
+ group_input_entry_changed_cb, cgroup_input_d);
+ evas_object_smart_callback_add(entry, "preedit,changed",
+ group_input_entry_changed_cb, cgroup_input_d);
+ evas_object_smart_callback_add(entry, CLICKED,
+ group_input_entry_clicked_cb, cgroup_input_d);
+
+ if (cgroup_input_d->editgroup == true)
+ ctui_entry_entry_set(entry, cgroup_input_d->gname);
+
+ if (cgroup_input_d->is_read_only == true)
+ elm_object_disabled_set(entry, EINA_TRUE);
+
+ if(cgroup_input_d->gname)
+ {
+ elm_entry_entry_set(entry, cgroup_input_d->gname);
+ }
+
+ evas_object_show(entry);
+
+ return edit_field;
+ }
+ return NULL;
+}
+
+static Evas_Object* group_input_gl_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+ p_retvm_if(NULL== data, NULL, "The parameter(data) is NULL");
+
+ if (0 == strcmp(part, ELM_ICON))
+ {
+ Evas_Object *icon;
+ if (cgroup_input_d->img && *cgroup_input_d->img)
+ {
+ PH_DBG("img : %s", cgroup_input_d->img);
+ icon = elm_icon_add(obj);
+ p_retvm_if(NULL == icon, NULL, "elm_icon_add() return NULL");
+ elm_image_file_set(icon, cgroup_input_d->img, NULL);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_NONE, 1,
+ 1);
+ evas_object_size_hint_align_set(icon, 0.5, EVAS_HINT_FILL);
+ }
+ else
+ {
+ icon = elm_icon_add(obj);
+ p_retvm_if(NULL == icon, NULL, "elm_icon_add() return NULL");
+ elm_image_file_set(icon, CTUI_IMG_INPUT_GALLERY, NULL);
+ elm_image_resizable_set(icon, EINA_FALSE, EINA_FALSE);
+ }
+ evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_DOWN,
+ __group_input_gallery_mouse_down, cgroup_input_d);
+ evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_UP,
+ __group_input_gallery_mouse_up, cgroup_input_d);
+ return icon;
+ }
+ if (0 == strcmp(part, "elm.icon3"))
+ {
+ Evas_Object *icon = NULL;
+
+ icon = elm_icon_add(obj);
+ p_retvm_if(NULL == icon, NULL, "elm_icon_add() return NULL");
+ elm_image_file_set(icon, CTUI_IMG_INPUT_CAMERA, NULL);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_NONE, 1, 1);
+ evas_object_size_hint_align_set(icon, 0.5, EVAS_HINT_FILL);
+ evas_object_propagate_events_set(icon, EINA_FALSE);
+ evas_object_color_set(icon, 255, 255, 255, 255);
+ evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_DOWN,
+ __group_input_camera_mouse_down, cgroup_input_d);
+ evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_UP,
+ __group_input_camera_mouse_up, cgroup_input_d);
+ //evas_object_smart_callback_add(icon, CLICKED, group_input_image_camera_cb, cgroup_input_d);
+ return icon;
+ }
+ if (0 == strcmp(part, "elm.icon4"))
+ {
+ Evas_Object *btn_minus;
+ if (cgroup_input_d->img && *cgroup_input_d->img)
+ {
+ btn_minus = elm_button_add(obj);
+ p_retvm_if(NULL == btn_minus, NULL, "elm_button_add() return NULL");
+ elm_object_style_set(btn_minus, "icon_minus");
+ evas_object_size_hint_aspect_set(btn_minus,
+ EVAS_ASPECT_CONTROL_NONE, 1, 1);
+ evas_object_size_hint_align_set(btn_minus, 0.5, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(btn_minus, CLICKED,
+ group_input_image_delete_cb, cgroup_input_d);
+ return btn_minus;
+ }
+ else
+ return NULL;
+ }
+ return NULL;
+}
+
+int group_input_get_member_list(int group_id, Eina_List **list)
+{
+ PH_TRACE;
+ int ret;
+ int person_id;
+ contacts_record_h record = NULL;
+ contacts_list_h person_list = NULL;
+
+ ret = phone_cts_get_list(_contacts_person_grouprel._uri,
+ _contacts_person_grouprel.group_id, group_id, &person_list);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "phone_cts_get_list() Failed(%d)", ret);
+ ret = contacts_list_get_current_record_p(person_list, &record);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_list_get_current_record_p() Failed(%d)", ret);
+ while (record)
+ {
+ ct_person_list *person_info;
+ char *display_name = NULL;
+ char *addressbook_ids = NULL;
+
+ ret = contacts_record_get_int(record, _contacts_person.id, &person_id);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_record_get_int() Failed(%d)", ret);
+
+ person_info = (ct_person_list *) calloc(1, sizeof(ct_person_list));
+ person_info->id = person_id;
+ ret = contacts_record_get_str_p(record, _contacts_person.display_name,
+ &display_name);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_record_get_str_p() Failed(%d)", ret);
+ person_info->display = SAFE_STRDUP(display_name);
+
+ ret = contacts_record_get_int(record, _contacts_person.link_count,
+ &(person_info->link_count));
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_record_get_int() Failed(%d)", ret);
+
+ ret = contacts_record_get_str(record, _contacts_person.addressbook_ids,
+ &addressbook_ids);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_record_get_int() Failed(%d)", ret);
+ person_info->addressbook_id_list = ctui_get_addressbook_id_list(
+ addressbook_ids, " ");
+
+ *list = eina_list_append(*list, person_info);
+
+ ret = contacts_list_next(person_list);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_list_next() Failed(%d)", ret);
+ ret = contacts_list_get_current_record_p(person_list, &record);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_list_get_current_record_p() Failed(%d)", ret);
+ }
+ ret = contacts_list_destroy(person_list, true);
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, ret,
+ "contacts_list_destroy() Failed(%d)", ret);
+
+ return ret;
+}
+
+void group_input_group_name_set(ct_group_input_data *cgroup_input_d)
+{
+ PH_TRACE;
+ bool isCorrectParameters = (NULL != cgroup_input_d && NULL != cgroup_input_d->entry);
+ p_retm_if(!isCorrectParameters, "incorrect parameters");
+
+ Evas_Object *entry = cgroup_input_d->entry;
+ char *text = ctui_entry_markup_to_utf8(elm_entry_entry_get(entry));
+ p_retm_if(NULL == text, "ctui_entry_markup_to_utf8() return NULL");
+ PH_DBG("text = %s", text);
+
+ FREEandSTRDUP(cgroup_input_d->gname, text);
+ free(text);
+}
+
+static void group_input_add_member_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "parameter(data) is NULL");
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+
+ group_input_group_name_set(cgroup_input_d);
+ Elm_Object_Item *navi_item = ctui_create_gadd_list_select_view(cgroup_input_d->win, cgroup_input_d->navi,
+ cgroup_input_d->id_grp, cgroup_input_d->id_ab,
+ &cgroup_input_d->member_list, false);
+ elm_naviframe_item_pop_cb_set(navi_item, group_input_add_member_cb, cgroup_input_d);
+}
+
+static char *group_input_gl_group_list_item_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data, NULL, "parameter(data) is NULL");
+ p_retvm_if(NULL == part, NULL, "parameter(part) is NULL");
+
+ ui_genlist_item *item = (ui_genlist_item *) data;
+ ct_person_list *person_info = (ct_person_list *)item->data;
+ p_retvm_if(NULL == person_info, NULL, "person_info is NULL");
+
+ if (0 == strcmp(part, ELM_TEXT))
+ {
+ PH_DBG("person_info->display = %s", person_info->display);
+ return SAFE_STRDUP(person_info->display);
+ }
+ return NULL;
+}
+
+void group_input_gl_group_list_item_remove_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "parameter(data) is NULL");
+ ui_genlist_item *item = (ui_genlist_item *) data;
+
+ if (item->item_list && *item->item_list)
+ {
+ *item->item_list = eina_list_remove(*item->item_list, (void *) item->data);
+ free(item->data);
+ item->data = NULL;
+ }
+
+ if (item->save_button)
+ {
+ elm_object_disabled_set(item->save_button, false);
+ }
+
+ if (item->object_item)
+ {
+ elm_object_item_del(item->object_item);
+ item->object_item = NULL;
+ }
+}
+
+static char *group_input_gl_group_members_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == part, NULL, "parameter(part) is NULL");
+ const char *GROUP_MEMBERS = "Group members";
+
+ if (0 == strcmp(part, ELM_TEXT))
+ {
+ return SAFE_STRDUP(GROUP_MEMBERS);
+ }
+ return NULL;
+}
+
+static Evas_Object *group_input_gl_group_members_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == part, NULL, "parameter(part) is NULL");
+ p_retvm_if(NULL == data, NULL, "parameter(data) is NULL");
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+ Evas_Object *ret_obj = NULL;
+
+ const char *BUTTON_STYLE_PLUS = "plus";
+ const char *BUTTON_PART_ICON = "icon";
+
+ if (0 == strcmp(part, ELM_ICON))
+ {
+ Evas_Object *btn = elm_button_add(obj);
+ p_retvm_if(NULL == btn, NULL, "ctui_create_btn() return NULL");
+ elm_object_style_set(btn, BUTTON_STYLE_PLUS);
+ evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ evas_object_smart_callback_add(btn, CLICKED, group_input_add_member_clicked_cb, cgroup_input_d);
+
+ Evas_Object *icon = elm_icon_add(obj);
+ elm_icon_standard_set(icon, PH_IMG_ICON_ADD);
+ elm_object_part_content_set(btn, BUTTON_PART_ICON, icon);
+
+ ret_obj = btn;
+ }
+ return ret_obj;
+}
+
+static Evas_Object *group_input_gl_group_list_item_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data, NULL, "parameter(data) is NULL");
+ p_retvm_if(NULL == part, NULL, "parameter(part) is NULL");
+
+ Evas_Object *ret_obj = NULL;
+ ui_genlist_item *item = (ui_genlist_item *) data;
+ ct_person_list *person_info = (ct_person_list *)item->data;
+ p_retvm_if(NULL == person_info, NULL, "person_info is NULL");
+
+ const char *BUTTON_STYLE_MINUS = "minus";
+ const char *ELM_ICON_EDIT = "elm.icon.edit";
+
+ if (0 == strcmp(part, ELM_ICON))
+ {
+ if (person_info->id)
+ {
+ contacts_record_h record = NULL;
+
+ int err = contacts_db_get_record(_contacts_person._uri, person_info->id, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() Failed(%d)", err);
+
+ free(person_info->img_path);
+ err = contacts_record_get_str(record, _contacts_person.image_thumbnail_path,
+ &(person_info->img_path));
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_str() Failed(%d)", err);
+
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_destroy() Failed(%d)", err);
+ }
+
+ Evas_Object *icon = elm_icon_add(obj);
+ p_retvm_if(NULL == icon, NULL, "elm_icon_add() return NULL");
+ elm_image_prescale_set(icon, CT_LIST_ICON_SIZE);
+ if (NULL != person_info->img_path)
+ {
+ elm_image_file_set(icon, person_info->img_path, NULL);
+ }
+ else
+ {
+ elm_image_file_set(icon, IMG_DEFAULT, NULL);
+ }
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ evas_object_show(icon);
+ ret_obj = icon;
+ }
+ else if (0 == strcmp(part, ELM_ICON_EDIT))
+ {
+ Evas_Object *btn = elm_button_add(obj);
+ p_retvm_if(NULL == btn, NULL, "elm_button_add() return NULL");
+ elm_object_style_set(btn, BUTTON_STYLE_MINUS);
+ evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_smart_callback_add(btn, CLICKED, group_input_gl_group_list_item_remove_cb, item);
+ evas_object_show(btn);
+
+ ret_obj = btn;
+ }
+ return ret_obj;
+}
+
+static void group_input_genlist_style_set(void)
+{
+ PH_TRACE;
+ group_input_itcs[GINPUT_ITC_GROUP_IMAGE].func.content_get =
+ group_input_gl_icon_get;
+ group_input_itcs[GINPUT_ITC_GROUP_CREATE].func.content_get =
+ group_input_gl_create_icon_get;
+ group_input_itcs[GINPUT_ITC_GROUP_VIBRATION].func.text_get =
+ group_input_gl_vibration_label_get;
+ group_input_itcs[GINPUT_ITC_GROUP_RINGTON].func.text_get =
+ group_input_gl_ringtone_label_get;
+ group_input_itcs[GINPUT_ITC_ADDRBOOK].func.text_get =
+ group_input_gl_label_get;
+
+ group_input_itcs[GINPUT_ITC_GROUP_MEMBERS].func.text_get =
+ group_input_gl_group_members_label_get;
+ group_input_itcs[GINPUT_ITC_GROUP_MEMBERS].func.content_get =
+ group_input_gl_group_members_icon_get;
+
+ group_input_itcs[GINPUT_ITC_GROUP_LIST_ITEM].func.text_get =
+ group_input_gl_group_list_item_label_get;
+ group_input_itcs[GINPUT_ITC_GROUP_LIST_ITEM].func.content_get =
+ group_input_gl_group_list_item_icon_get;
+ group_input_itcs[GINPUT_ITC_GROUP_LIST_ITEM].func.del =
+ ui_genlist_item_destroy;
+}
+
+static void group_input_view_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d = (ct_group_input_data *) data;
+
+ if (cgroup_input_d->popup)
+ evas_object_del(cgroup_input_d->popup);
+ if (cgroup_input_d->th)
+ {
+ elm_theme_extension_del(cgroup_input_d->th, IMAGE_LAYOUT_EDJ);
+ elm_theme_free(cgroup_input_d->th);
+ }
+
+ if (cgroup_input_d->child_ug)
+ ug_destroy(cgroup_input_d->child_ug);
+
+ if (cgroup_input_d->crop_ug)
+ ug_destroy((ui_gadget_h) cgroup_input_d->crop_ug);
+
+ if (cgroup_input_d->win_prop_change)
+ ecore_event_handler_del(cgroup_input_d->win_prop_change);
+
+ evas_object_data_del(cgroup_input_d->navi, "navi_it_pop_to");
+ ctui_list_free_contacts(cgroup_input_d->member_list);
+ free(cgroup_input_d->ab_name);
+ free(cgroup_input_d->gname_old);
+ free(cgroup_input_d->gname);
+ free(cgroup_input_d->img);
+ free(cgroup_input_d->ringtone);
+ free(cgroup_input_d->vibration);
+ free(cgroup_input_d);
+}
+
+static void group_input_get_data(ct_group_input_data *cgroup_input_d)
+{
+ PH_TRACE;
+ char *img = NULL;
+ char *vibration = NULL;
+ char *ringtone = NULL;
+ bool is_read_only = false;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = (contacts_error_e) contacts_db_get_record(_contacts_group._uri, cgroup_input_d->id_grp,
+ &record);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() Failed(%d)",
+ err);
+ err = (contacts_error_e) contacts_record_get_str_p(record, _contacts_group.image_path, &img);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ cgroup_input_d->img = SAFE_STRDUP(img);
+
+ err = (contacts_error_e) contacts_record_get_str_p(record, _contacts_group.vibration,
+ &vibration);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ cgroup_input_d->vibration = SAFE_STRDUP(vibration);
+
+ err = (contacts_error_e) contacts_record_get_str_p(record, _contacts_group.ringtone_path,
+ &ringtone);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ cgroup_input_d->ringtone = SAFE_STRDUP(ringtone);
+
+ cgroup_input_d->gname = SAFE_STRDUP(phone_get_group_name(record));
+ cgroup_input_d->gname_old = SAFE_STRDUP(cgroup_input_d->gname_old);
+
+ err = (contacts_error_e) contacts_record_get_bool(record, _contacts_group.is_read_only,
+ &is_read_only);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_bool() Failed(%d)", err);
+ cgroup_input_d->is_read_only = is_read_only;
+
+ err = (contacts_error_e) contacts_record_destroy(record, true);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+}
+
+void ctui_create_group_input_view(Evas_Object *win, Evas_Object *navi,
+ ct_group_list *info, ct_group_input_result_cb result_cb, void *cb_data)
+{
+ PH_TRACE;
+ ct_group_input_data *cgroup_input_d;
+ Evas_Object *layout;
+ Evas_Object *bg;
+ Elm_Theme *th;
+
+ cgroup_input_d = (ct_group_input_data *) calloc(1, sizeof(ct_group_input_data));
+ p_retm_if(NULL == cgroup_input_d, "calloc() return NULL");
+
+ if (info != NULL)
+ {
+ cgroup_input_d->id_grp = info->id_grp;
+
+ cgroup_input_d->id_ab = info->id_ab;
+ group_input_get_data(cgroup_input_d);
+ cgroup_input_d->editgroup = true;
+ group_input_get_member_list(cgroup_input_d->id_grp,
+ &cgroup_input_d->member_list);
+ PH_DBG("cgroup_input_d->id_grp : %d", cgroup_input_d->id_grp);
+ }
+ else
+ {
+ cgroup_input_d->editgroup = false;
+ cgroup_input_d->id_ab = 0;
+ }
+ cgroup_input_d->win = win;
+ cgroup_input_d->navi = navi;
+ cgroup_input_d->result_cb = result_cb;
+ cgroup_input_d->result_cb_data = cb_data;
+
+ layout = phone_create_base_layout(cgroup_input_d->navi, false);
+ bg = phone_create_bg(layout);
+ if (NULL == bg)
+ {
+ ERR("phone_create_bg() return NULL");
+ free(cgroup_input_d);
+ evas_object_del(layout);
+ return;
+ }
+
+ if (cgroup_input_d->editgroup == true)
+ {
+ cgroup_input_d->navi_item = elm_naviframe_item_push(cgroup_input_d->navi,
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_EDIT_GROUP), NULL, NULL,
+ layout, NULL);
+ }
+ else
+ {
+ cgroup_input_d->navi_item = elm_naviframe_item_push(cgroup_input_d->navi,
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_CREATE_GROUP), NULL, NULL,
+ layout, NULL);
+ }
+
+ evas_object_data_set(cgroup_input_d->navi, "navi_it_pop",
+ cgroup_input_d->navi_item);
+
+ phone_navi_item_reset(cgroup_input_d->navi_item, cgroup_input_d);
+
+ cgroup_input_d->done_button = elm_button_add(cgroup_input_d->navi);
+ elm_object_style_set(cgroup_input_d->done_button, "naviframe/title_text");
+ elm_object_text_set(cgroup_input_d->done_button, "Save");
+ evas_object_smart_callback_add(cgroup_input_d->done_button, "clicked",
+ group_input_save_btn_cb, cgroup_input_d);
+ elm_object_item_part_content_set(cgroup_input_d->navi_item, "title_right_btn",
+ cgroup_input_d->done_button);
+
+ elm_win_conformant_set(cgroup_input_d->win, EINA_TRUE);
+ cgroup_input_d->genlist = elm_genlist_add(layout);
+ elm_object_style_set(cgroup_input_d->genlist, "dialogue");
+ elm_object_style_set(cgroup_input_d->genlist, "no_effect");
+ evas_object_smart_callback_add(cgroup_input_d->genlist, "realized", ui_genlist_on_realized, cgroup_input_d);
+ th = elm_theme_new();
+ elm_theme_ref_set(th, NULL);
+ elm_theme_extension_add(th, IMAGE_LAYOUT_EDJ);
+ cgroup_input_d->th = th;
+ elm_object_theme_set(cgroup_input_d->genlist, cgroup_input_d->th);
+ group_input_genlist_style_set();
+ evas_object_size_hint_weight_set(cgroup_input_d->genlist, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(cgroup_input_d->genlist, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ evas_object_show(cgroup_input_d->genlist);
+ elm_object_part_content_set(layout, "elm.swallow.content",
+ cgroup_input_d->genlist);
+ group_input_fill_genlist(cgroup_input_d);
+
+ elm_object_disabled_set(cgroup_input_d->done_button, EINA_TRUE);
+
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL,
+ group_input_view_delete_cb, cgroup_input_d);
+}
diff --git a/lib/common/ct-list-detail.cpp b/lib/common/ct-list-detail.cpp
new file mode 100755
index 0000000..372cecc
--- /dev/null
+++ b/lib/common/ct-list-detail.cpp
@@ -0,0 +1,631 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <aul.h>
+#include <ui-gadget-module.h>
+
+#include "phone.h"
+#include "phone-common.h"
+
+#include "ct-list.h"
+
+void ctui_ld_to_dd(ct_list_data *clist_d, ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ cdetail_d->win = clist_d->win;
+ cdetail_d->navi = clist_d->navi;
+ cdetail_d->base_grp = clist_d->base_grp;
+ cdetail_d->base_ab = clist_d->base_ab;
+ cdetail_d->ug = clist_d->ug;
+ cdetail_d->prev_navi_item = clist_d->navi_item;
+ cdetail_d->prev_view_data = clist_d;
+}
+
+void ctui_get_number_type_str(contacts_record_h record, int number_type,
+ char *dest, int dest_len)
+{
+ PH_TRACE;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ const char* type_str;
+ char *custom = NULL;
+
+ if (number_type & CONTACTS_NUMBER_TYPE_CUSTOM)
+ {
+ err = (contacts_error_e) contacts_record_get_str_p(record,
+ _contacts_number.label, &custom);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ if (NULL == custom || '\0' == custom[0])
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_OTHER);
+ else
+ {
+ snprintf(dest, dest_len, "%s", custom);
+ return;
+ }
+ }
+ else if (number_type & CONTACTS_NUMBER_TYPE_CELL)
+ {
+ if (number_type & CONTACTS_NUMBER_TYPE_HOME)
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_HOME2);
+ else if (number_type & CONTACTS_NUMBER_TYPE_WORK)
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_WORK2);
+ else
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_MOBILE);
+ }
+ else if (number_type & CONTACTS_NUMBER_TYPE_VOICE)
+ {
+ if (number_type & CONTACTS_NUMBER_TYPE_HOME)
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_HOME);
+ else if (number_type & CONTACTS_NUMBER_TYPE_WORK)
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_WORK);
+ else
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_TELEPHONE);
+ }
+ else if (number_type & CONTACTS_NUMBER_TYPE_FAX)
+ {
+ if (number_type & CONTACTS_NUMBER_TYPE_HOME)
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_FAX_HOME);
+ else if (number_type & CONTACTS_NUMBER_TYPE_WORK)
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_FAX_WORK);
+ else
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_FAX);
+ }
+ else if (number_type & CONTACTS_NUMBER_TYPE_PAGER)
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_PAGER);
+ else if (number_type & CONTACTS_NUMBER_TYPE_CAR)
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_CAR);
+ else if (number_type & CONTACTS_NUMBER_TYPE_ASSISTANT)
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_ASSISTANT);
+ else
+ {
+ if (number_type == CONTACTS_NUMBER_TYPE_HOME)
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_HOME);
+ else if (number_type == CONTACTS_NUMBER_TYPE_WORK)
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_WORK);
+ else
+ type_str = T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_OTHER);
+ }
+
+ snprintf(dest, dest_len, "%s", type_str);
+}
+
+const char* ctui_get_default_contact_img(int view_type)
+{
+ PH_TRACE;
+ switch (view_type)
+ {
+ case CT_VIEW_DETAIL:
+ return CTUI_IMG_DEFAULT_PHOTO_BIG;
+
+ case CT_VIEW_INPUT:
+ return CTUI_IMG_PHOTO_EDIT;
+
+ case CT_VIEW_ETC:
+ default:
+ return CTUI_IMG_DEFAULT_PHOTO_SMALL;
+ }
+}
+
+Evas_Object* ctui_create_btn(Evas_Object *parent, const char *label)
+{
+ PH_TRACE;
+ Evas_Object *btn;
+
+ btn = elm_button_add(parent);
+ p_retvm_if(NULL == btn, NULL, "elm_button_add() return NULL");
+
+ elm_object_text_set(btn, label);
+ evas_object_propagate_events_set(btn, EINA_FALSE);
+ evas_object_show(btn);
+
+ return btn;
+}
+
+void ctui_destroy_child_ug(void *data)
+{
+ PH_TRACE;
+ void **child = (void **) data;
+ *child = NULL;
+}
+
+ui_gadget_h ctui_msg_ug(ui_gadget_h parent, const char *number,
+ const char *attach, void (*destroy_cb)(void*), void *cb_param)
+{
+ PH_TRACE;
+ struct ug_cbs cbs = { 0 };
+ ui_gadget_h ug;
+ struct ug_priv_data *priv_data;
+ service_h service;
+
+ priv_data = (ug_priv_data *) calloc(1, sizeof(struct ug_priv_data));
+ p_retvm_if(NULL == priv_data, NULL, "calloc is failed");
+ priv_data->destroy_cb = destroy_cb;
+ priv_data->cb_param = cb_param;
+
+ service_create(&service);
+
+ if (number)
+ {
+ service_add_extra_data(service, "TO", number);
+ }
+
+ if (attach)
+ {
+ service_add_extra_data(service, "ATTACHFILE", attach);
+ service_add_extra_data(service, "SUBJECT", "Contacts name card");
+ }
+
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = ug_common_destroy_cb;
+ cbs.priv = priv_data;
+
+ ug = ug_create(parent, MSG_COMPOSER_UG, UG_MODE_FULLVIEW, service, &cbs);
+ p_warn_if(NULL == ug, "ug_create() Failed");
+
+ service_destroy(service);
+ return ug;
+}
+
+ui_gadget_h ctui_predefined_body_msg_ug(ui_gadget_h parent, const char *number, const int person_id, const char *bodyText, void (*destroy_cb)(void*), void *cb_param)
+{
+ PH_TRACE;
+ ui_gadget_h ug = NULL;
+ struct ug_priv_data *priv_data;
+ priv_data = (ug_priv_data *) calloc(1, sizeof(struct ug_priv_data));
+ if (NULL != priv_data)
+ {
+ priv_data->destroy_cb = destroy_cb;
+ priv_data->cb_param = cb_param;
+
+ service_h service;
+ service_create(&service);
+
+ if (number && person_id)
+ {
+ char temp[PH_TEXT_MAX_LEN + 1] = { 0, };
+ snprintf(temp, sizeof(temp), "%s/%d", number, person_id);
+ service_add_extra_data(service, "number/index", temp);
+ }
+ else if (number)
+ {
+ service_add_extra_data(service, "TO", number);
+ }
+
+ if (bodyText)
+ {
+ service_add_extra_data(service, "BODY", bodyText);
+ }
+
+ struct ug_cbs cbs = { 0 };
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = ug_common_destroy_cb;
+ cbs.priv = priv_data;
+
+ ug = ug_create(parent, MSG_COMPOSER_UG, UG_MODE_FULLVIEW, service, &cbs);
+ if (NULL != ug)
+ service_destroy(service);
+ else
+ ERR("ug_create() Failed");
+ }
+ else
+ {
+ ERR("%s", "calloc is failed");
+ }
+ return ug;
+}
+
+void ctui_entry_limit_size_set(Evas_Object *entry)
+{
+ PH_TRACE;
+ static Elm_Entry_Filter_Limit_Size filter;
+ p_retm_if(NULL == entry, "parameter(entry) is NULL");
+
+ filter.max_char_count = CT_EDITFIELD_MAX_CHAR;
+ elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &filter);
+}
+
+void ctui_genlist_append_separator_10px(Evas_Object *genlist)
+{
+ PH_TRACE;
+ static Elm_Genlist_Item_Class itc;
+ itc.item_style = "dialogue/separator/10";
+
+ Elm_Object_Item * item;
+ item = elm_genlist_item_append(genlist, &itc, NULL, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+}
+
+void ctui_genlist_append_separator_20px(Evas_Object *genlist)
+{
+ PH_TRACE;
+ static Elm_Genlist_Item_Class itc;
+ itc.item_style = "dialogue/separator/20";
+
+ Elm_Object_Item * item;
+ item = elm_genlist_item_append(genlist, &itc, NULL, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+}
+
+void ctui_navi_btn_disabled_set(Evas_Object *navi, Eina_Bool disabled)
+{
+ PH_TRACE;
+ Evas_Object *done_button, *delete_item, *share_button;
+
+ p_retm_if(NULL == navi, "parameter(navi) is NULL");
+
+ done_button = (Evas_Object *) evas_object_data_get(navi, "done_button");
+ delete_item = (Evas_Object *) evas_object_data_get(navi, "delete_button");
+ share_button = (Evas_Object *) evas_object_data_get(navi, "share_button");
+
+ if (done_button)
+ elm_object_disabled_set(done_button, disabled);
+ if (delete_item )
+ elm_object_disabled_set(delete_item, disabled);
+ if (share_button)
+ elm_object_disabled_set(share_button, disabled);
+}
+
+char* ctui_entry_markup_to_utf8_without_spaces(const char *s)
+{
+ PH_TRACE;
+ unsigned int i;
+ char *ret = elm_entry_markup_to_utf8(s);
+
+ if (ret)
+ {
+ unsigned int size = strlen(ret);
+ if (!size)
+ {
+ ret[0] = '\0';
+ return ret;
+ }
+
+ if (isspace(ret[0]))
+ {
+ std::string number_display;
+ for (i = 1; i < size; ++i)
+ {
+ if (!isspace(ret[i]) || !isspace(ret[i - 1]))
+ {
+ number_display.push_back(ret[i]);
+ }
+ }
+ free(ret);
+ ret = strdup(number_display.c_str());
+ }
+ }
+ return ret;
+}
+
+char* ctui_entry_markup_to_utf8(const char *s)
+{
+ PH_TRACE;
+ unsigned int i;
+ char *ret;
+
+ ret = elm_entry_markup_to_utf8(s);
+ p_retvm_if(NULL == ret, NULL, "elm_entry_markup_to_utf8() return NULL");
+
+ for (i = 0; i < strlen(ret); i++)
+ if (' ' != ret[i])
+ return ret;
+
+ ret[0] = '\0';
+ return ret;
+}
+
+void ctui_entry_entry_set(Evas_Object *entry, const char *s)
+{
+ PH_TRACE;
+ char *s_markup;
+ s_markup = elm_entry_utf8_to_markup(s);
+ elm_entry_entry_set(entry, s_markup);
+ free(s_markup);
+}
+
+enum LIST_DETAIL_ITC_TYPE
+{
+ LIST_DETAIL_ITC_ADDRBOOK,
+ LIST_DETAIL_ITC_ADDRBOOK_EDIT,
+ LIST_DETAIL_ITC_ADDRBOOK_NAME,
+ LIST_DETAIL_ITC_ADDRBOOK_NAME_EDIT,
+ LIST_DETAIL_ITC_MAX,
+};
+
+static Elm_Genlist_Item_Class list_detail_itcs[] =
+{
+ {
+ 0, 0, 1, "2text.1icon.9", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "2text.2icon.5", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "1text.1icon.2", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "1text.2icon.2", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+};
+
+static void list_detail_addrbook_gl_del(void *data, Evas_Object *obj)
+{
+ PH_TRACE;
+ ct_ab_popup_data *info = (ct_ab_popup_data *) data;
+ p_retm_if(NULL == info, "data is NULL");
+ free(info->name);
+ free(info);
+}
+
+static char* list_detail_addrbook_gl_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ct_ab_popup_data *ab_popup_data = (ct_ab_popup_data *) data;
+ p_retvm_if(NULL == ab_popup_data, NULL, "parameter(ab_popup_data) is NULL");
+
+ if (0 == strcmp(part, "elm.text") || 0 == strcmp(part, "elm.text.2"))
+ {
+ if (0 == ab_popup_data->id)
+ return strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE));
+ else
+ return SAFE_STRDUP(ab_popup_data->name);
+ }
+ else if (0 == strcmp(part, "elm.text.1"))
+ {
+ char buf[PH_TEXT_MAX_LEN + 1];
+ buf[0] = '\0';
+ ctui_get_account_name_by_address_book_id(ab_popup_data->id, buf,
+ sizeof(buf));
+ if (*buf)
+ return strdup(buf);
+ }
+ return NULL;
+}
+
+static Evas_Object* list_detail_addrbook_gl_icon_get(void *data,
+ Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ int selected_id;
+ Evas_Object *radio;
+ Evas_Object *radio_main;
+
+ ct_ab_popup_data *ab_popup_data = (ct_ab_popup_data *) data;
+ p_retvm_if(NULL == ab_popup_data, NULL, "parameter(ab_popup_data) is NULL");
+
+ if (0 == strcmp(part, "elm.icon.1")
+ || ab_popup_data->all_contacts_item == true)
+ {
+ radio = elm_radio_add(obj);
+ p_retvm_if(NULL == radio, NULL, "elm_radio_add() return NULL");
+
+ selected_id = (int) evas_object_data_get(obj, "selected_id");
+ if (-1 == ab_popup_data->id)
+ {
+ evas_object_data_set(obj, "radio_main", radio);
+ }
+ else
+ {
+ radio_main = (Evas_Object *) evas_object_data_get(obj,
+ "radio_main");
+ p_retvm_if(NULL == radio_main, NULL,
+ "evas_object_data_get() return NULL");
+ elm_radio_group_add(radio, radio_main);
+ }
+
+ elm_radio_state_value_set(radio, ab_popup_data->id);
+ if (selected_id == ab_popup_data->id)
+ elm_radio_value_set(radio, selected_id);
+
+ evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_propagate_events_set(radio, EINA_FALSE);
+
+ return radio;
+ }
+ else if (0 == strcmp(part, "elm.icon") || 0 == strcmp(part, "elm.icon.2"))
+ {
+ char *icon_path;
+ Evas_Object *icon;
+ icon_path = ctui_get_addressbook_icon_path(ab_popup_data->id);
+
+ if (icon_path && *icon_path)
+ {
+ icon = elm_icon_add(obj);
+ p_retvm_if(NULL == icon, NULL, "elm_icon_add() return NULL");
+
+ elm_image_file_set(icon, icon_path, NULL);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL,
+ 1, 1);
+ free(icon_path);
+ return icon;
+ }
+ }
+ return NULL;
+}
+
+static inline void list_detail_create_itcs()
+{
+ PH_TRACE;
+ list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK].func.text_get =
+ list_detail_addrbook_gl_label_get;
+ list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK].func.content_get =
+ list_detail_addrbook_gl_icon_get;
+ list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK].func.del =
+ list_detail_addrbook_gl_del;
+
+ list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK_EDIT].func.text_get =
+ list_detail_addrbook_gl_label_get;
+ list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK_EDIT].func.content_get =
+ list_detail_addrbook_gl_icon_get;
+ list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK_EDIT].func.del =
+ list_detail_addrbook_gl_del;
+
+ list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK_NAME].func.text_get =
+ list_detail_addrbook_gl_label_get;
+ list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK_NAME].func.content_get =
+ list_detail_addrbook_gl_icon_get;
+ list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK_NAME].func.del =
+ list_detail_addrbook_gl_del;
+
+ list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK_NAME_EDIT].func.text_get =
+ list_detail_addrbook_gl_label_get;
+ list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK_NAME_EDIT].func.content_get =
+ list_detail_addrbook_gl_icon_get;
+ list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK_NAME_EDIT].func.del =
+ list_detail_addrbook_gl_del;
+}
+
+Evas_Object* ctui_addrbook_popup(Evas_Object *parent, Evas_Smart_Cb item_sel_cb,
+ void *sel_cb_data, ct_addrbook_popup_type ab_type)
+{
+ PH_TRACE;
+ int addressbook_id;
+ int addressbook_mode;
+ char *addressbook_name;
+ Evas_Object *genlist;
+ Evas_Object *popup;
+ Elm_Object_Item * item = NULL;
+ ct_ab_popup_data *ab_popup_data;
+ Elm_Genlist_Item_Class *itc, *itc_name, *itc_all_contacts;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_list_h list = NULL;
+
+ list_detail_create_itcs();
+
+ popup = elm_popup_add(parent);
+ p_retvm_if(NULL == popup, NULL, "elm_popup_add() return NULL");
+ elm_object_style_set(popup, "liststyle");
+
+ genlist = elm_genlist_add(popup);
+ p_retvm_if(NULL == genlist, NULL, "elm_genlist_add() return NULL");
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ if (CT_AB_POPUP_TYPE_LIST_VIEW == ab_type)
+ {
+ ct_list_data *clist_d = (ct_list_data *) sel_cb_data;
+
+ itc = &list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK_EDIT];
+ itc_name = &list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK_NAME_EDIT];
+ itc_all_contacts = &list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK_NAME];
+
+ if (CT_GET_LIST_PERSON_OF_ADDRBOOK_ID == clist_d->list_op)
+ evas_object_data_set(genlist, "selected_id",
+ (void *) clist_d->base_ab);
+ else
+ evas_object_data_set(genlist, "selected_id", (void *) -1);
+
+ /* All contacts */
+ ab_popup_data = (ct_ab_popup_data *) calloc(1,
+ sizeof(ct_ab_popup_data));
+ p_retvm_if(NULL == ab_popup_data, NULL, "calloc() return NULL");
+ ab_popup_data->id = -1;
+ ab_popup_data->name = strdup(
+ T_(CT_GET_TEXT_BASIC, CTTEXT_ALL_CONTACTS));
+ ab_popup_data->all_contacts_item = true;
+
+ item = elm_genlist_item_append(genlist, itc_all_contacts, ab_popup_data,
+ NULL, ELM_GENLIST_ITEM_NONE, item_sel_cb, sel_cb_data);
+ ab_popup_data->item = item;
+
+ }
+ else
+ {
+ itc = &list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK];
+ itc_name = &list_detail_itcs[LIST_DETAIL_ITC_ADDRBOOK_NAME];
+ }
+
+ err = (contacts_error_e) contacts_db_get_all_records(
+ _contacts_address_book._uri, 0, 0, &list);
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ phone_cts_get_int_from_list(list, _contacts_address_book.mode,
+ &addressbook_mode);
+ if (addressbook_mode == CONTACTS_ADDRESS_BOOK_MODE_READONLY
+ && CT_AB_POPUP_TYPE_LIST_VIEW != ab_type)
+ {
+ err = (contacts_error_e) contacts_list_next(list);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_next() Failed(%d)", err);
+ continue;
+ }
+
+ ab_popup_data = (ct_ab_popup_data *) calloc(1,
+ sizeof(ct_ab_popup_data));
+ if (NULL == ab_popup_data)
+ {
+ ERR("calloc() return NULL");
+ continue;
+ }
+
+ err = phone_cts_get_int_from_list(list, _contacts_address_book.id,
+ &addressbook_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_int_from_list() Failed(%d)", err);
+ err = phone_cts_get_str_from_list(list, _contacts_address_book.name,
+ &addressbook_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_int_from_list() Failed(%d)", err);
+
+ ab_popup_data->id = addressbook_id;
+ ab_popup_data->mode = addressbook_mode;
+ ab_popup_data->name = addressbook_name;
+
+ if (0 == ab_popup_data->id)
+ {
+ item = elm_genlist_item_append(genlist, itc_name, ab_popup_data,
+ NULL, ELM_GENLIST_ITEM_NONE, item_sel_cb, sel_cb_data);
+ }
+ else
+ {
+ item = elm_genlist_item_append(genlist, itc, ab_popup_data, NULL,
+ ELM_GENLIST_ITEM_NONE, item_sel_cb, sel_cb_data);
+ }
+
+ ab_popup_data->item = item;
+
+ err = (contacts_error_e) contacts_list_next(list);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_next() Failed(%d)",
+ err);
+ }
+
+ err = (contacts_error_e) contacts_list_destroy(list, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_destroy() Failed(%d)",
+ err);
+
+ elm_object_content_set(popup, genlist);
+ evas_object_show(popup);
+ return popup;
+}
+
+void ctui_list_ug_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ug_destroy_me((ui_gadget_h) data);
+}
+
diff --git a/lib/common/ct-list-view-common.cpp b/lib/common/ct-list-view-common.cpp
new file mode 100755
index 0000000..5f3898c
--- /dev/null
+++ b/lib/common/ct-list-view-common.cpp
@@ -0,0 +1,5523 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE // for strcasestr
+#endif
+
+#include <aul.h>
+#include <string.h>
+#include <ui-gadget-module.h>
+#include <unicode/ulocdata.h>
+#include <unicode/uset.h>
+#include <unicode/ustring.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <efl_assist.h>
+#include "ct-list.h"
+
+#include "ct-list-view-common.h"
+#include "ct-group-assign-popup.h"
+#include "phone.h"
+#include "phone-common.h"
+#include "ct-list.h"
+#include <string>
+
+
+#define DEFAULT "default"
+#define NUMBER_LIST "number list"
+#define PERSON_INFO "person_info"
+#define DEFAULT_NUMBER "Default number"
+#define SEND_NAMECARD "Send namecard"
+#define CHANGED "changed"
+#define CONTACTS_NAME_CARD "Contacts name card"
+#define SCROLL_DRAG_START "scroll,drag,start"
+#define SCROLL_DRAG_STOP "scroll,drag,stop"
+#define LONGPRESSED "longpressed"
+#define NO_INIT 0
+
+#define POPUP_CLOSING_DELAY 0.5
+
+static char pre_search_str[CT_LIST_MAX_SEARCH_STR];
+
+static void list_get_number_str(int id, char *buf, int buf_len);
+void list_searchbar_data_set(void *data);
+void list_searchbar_back_button_cb(void *data);
+bool find_number_person_list(ct_person_list *person_info,const std::string &search_str);
+static void list_update_person_info_check_status(Eina_List *list,Eina_List *list_check);
+void ctui_list_searchbar_cancel_cb(void *data, Evas_Object *obj,void *event_info);
+void disable_count_item(ct_list_data *clist_d);
+void clear_genlist_info(ct_list_data &clist_d);
+static void ct_clear_contacts_text_data(ct_send_as_text_data* p_contact_text_data);
+void show_fast_index(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ if (clist_d->fast_index)
+ {
+ evas_object_show(clist_d->fast_index);
+ elm_object_disabled_set(clist_d->fast_index, EINA_FALSE);
+ }
+}
+void hide_fast_index(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ if (clist_d->fast_index)
+ {
+ evas_object_hide(clist_d->fast_index);
+ elm_object_disabled_set(clist_d->fast_index, EINA_TRUE);
+ }
+}
+void clear_fast_index(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ elm_index_item_clear(clist_d->fast_index);
+}
+
+ct_person_list *find_info_in_list_by_id(Eina_List *check_list, int person_id)
+{
+ PH_TRACE;
+ Eina_List *l = NULL;
+ void *v_person_info = NULL;
+
+ EINA_LIST_FOREACH(check_list, l, v_person_info)
+ {
+ ct_person_list *person_info = (ct_person_list *) v_person_info;
+ if (NULL != person_info && person_info->id == person_id)
+ {
+ return person_info;
+ }
+ }
+ return NULL;
+}
+
+static void ctui_list_free_person_info(ct_person_list *person_info)
+{
+ PH_TRACE;
+
+ p_retm_if(!person_info, "person_info is NULL");
+ eina_list_free(person_info->addressbook_id_list);
+ free(person_info->img_path);
+ free(person_info->display);
+ free(person_info->display_index);
+ free(person_info->number);
+ free(person_info->status_str);
+ if (person_info->number_list)
+ {
+ ctui_free_record_list(person_info->number_list);
+ }
+ if (person_info->email_list)
+ {
+ ctui_free_record_list(person_info->email_list);
+ }
+ if (person_info->contact)
+ {
+ contacts_record_destroy(person_info->contact, true);
+ }
+ free(person_info);
+}
+
+void ctui_list_free_contacts(Eina_List* list)
+{
+ PH_TRACE;
+
+ Eina_List* l;
+ void *info;
+ if (!list)
+ {
+ return;
+ }
+
+ EINA_LIST_FOREACH(list, l, info)
+ {
+ ct_person_list *person_info = (ct_person_list *) info;
+ if (person_info)
+ {
+ ctui_list_free_person_info(person_info);
+ }
+ }
+ eina_list_free(list);
+}
+
+void list_set_person_info(Eina_List* list, Eina_List ** list_search)
+{
+ PH_TRACE;
+ if (list == NULL || list_search == NULL)
+ {
+ return;
+ }
+
+ Eina_List* l;
+ void *info;
+
+ EINA_LIST_FOREACH(list, l, info)
+ {
+ ct_person_list *person_info_list = (ct_person_list *) info;
+ if (person_info_list != NULL)
+ {
+ *list_search = eina_list_append(*list_search,(void *) person_info_list);
+ }
+ }
+}
+
+void ctui_list_free_index(Eina_List* list)
+{
+ PH_TRACE;
+ Eina_List* l;
+ void *v_data;
+
+ EINA_LIST_FOREACH(list, l, v_data)
+ {
+ ct_list_index_data *data = (ct_list_index_data *) v_data;
+ if (data)
+ {
+ free(data);
+ }
+ }
+ eina_list_free(list);
+}
+
+static inline int list_get_grp_person_id(Eina_List *list)
+{
+ PH_TRACE;
+ ct_person_list *person_info;
+ if (NULL == list)
+ return 0;
+ person_info = (ct_person_list *) list->data;
+ return person_info->id;
+}
+
+static contacts_filter_h list_create_filter_int(contacts_filter_h filter,
+ const char *view_uri, int property_id, contacts_match_int_flag_e flag,
+ int match_value)
+{
+ PH_TRACE;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ if (NULL == filter)
+ {
+ err = (contacts_error_e) contacts_filter_create(view_uri, &filter);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_filter_create() Failed(%d)", err);
+ }
+ else
+ {
+ err = (contacts_error_e) contacts_filter_add_operator(filter,
+ CONTACTS_FILTER_OPERATOR_AND);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_add_operator() Failed(%d)", err);
+ }
+
+ err = (contacts_error_e) contacts_filter_add_int(filter, property_id, flag,
+ match_value);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_add_int() Failed(%d)", err);
+
+ return filter;
+}
+
+static contacts_filter_h list_create_filter_bool(contacts_filter_h filter,
+ const char *view_uri, int property_id, contacts_match_int_flag_e flag,
+ bool match_value)
+{
+ PH_TRACE;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ if (NULL == filter)
+ {
+ err = (contacts_error_e) contacts_filter_create(view_uri, &filter);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_filter_create() Failed(%d)", err);
+ }
+ else
+ {
+ err = (contacts_error_e) contacts_filter_add_operator(filter,
+ CONTACTS_FILTER_OPERATOR_AND);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_add_operator() Failed(%d)", err);
+ }
+
+ err = (contacts_error_e) contacts_filter_add_bool(filter, property_id,
+ match_value);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_add_int() Failed(%d)", err);
+
+ return filter;
+}
+
+//TODO: requires decomposition
+int ct_list_get_contacts(ct_list_data *clist_d, Eina_List **list_out)
+{
+ PH_TRACE;
+ unsigned int count = 0;
+ int person_id;
+ int grp_person_id;
+
+ unsigned int person_contact_projection[] = {
+ _contacts_person_contact.person_id, _contacts_person_contact.status,
+ _contacts_person_contact.display_name,
+ _contacts_person_contact.display_name_index,
+ _contacts_person_contact.addressbook_ids, };
+ unsigned int person_grouprel_projection[] = {
+ _contacts_person_grouprel.person_id,
+ _contacts_person_grouprel.status,
+ _contacts_person_grouprel.display_name,
+ _contacts_person_grouprel.display_name_index,
+ _contacts_person_grouprel.addressbook_ids, };
+ unsigned int person_projection[] = { _contacts_person.id,
+ _contacts_person.status, _contacts_person.display_name,
+ _contacts_person.display_name_index,
+ _contacts_person.addressbook_ids, };
+
+ const char *view_uri = NULL;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_list_h list = NULL;
+ contacts_query_h query = NULL;
+ contacts_filter_h filter = NULL;
+ contacts_filter_h filter2 = NULL;
+
+ Eina_List *result = NULL;
+
+ p_retvm_if(NULL == list_out, CONTACTS_ERROR_INTERNAL,
+ "parameter(list_out) is NULL");
+ *list_out = NULL;
+
+ PH_DBG("clist_d->list_op : %d", clist_d->list_op);
+ switch (clist_d->list_op)
+ {
+ case CT_GET_LIST_ALL_PERSON:
+ view_uri = _contacts_person._uri;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ err = (contacts_error_e) contacts_db_search_records(
+ _contacts_person._uri, clist_d->search_str, 0, 0,
+ &list);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_search_records() Failed(%d)", err);
+ }
+ else
+ {
+ err = (contacts_error_e) contacts_db_get_all_records(
+ _contacts_person._uri, 0, 0, &list);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_all_records() Failed(%d)", err);
+ }
+ break;
+ case CT_GET_LIST_ALL_PERSON_HAD_NUMBER:
+ view_uri = _contacts_person._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+ do
+ {
+ filter = list_create_filter_bool(filter, _contacts_person._uri,
+ _contacts_person.has_phonenumber, CONTACTS_MATCH_EQUAL,
+ true);
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_projection,
+ sizeof(person_projection) / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ break;
+ case CT_GET_LIST_ALL_PERSON_HAD_EMAIL:
+ view_uri = _contacts_person._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_bool(filter, _contacts_person._uri,
+ _contacts_person.has_email, CONTACTS_MATCH_EQUAL, true);
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_projection,
+ sizeof(person_projection) / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ break;
+
+ case CT_GET_LIST_ALL_PERSON_HAD_NUMBER_OR_EMAIL:
+ view_uri = _contacts_person._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_bool(filter, _contacts_person._uri,
+ _contacts_person.has_phonenumber, CONTACTS_MATCH_EQUAL,
+ true);
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_filter_add_operator(
+ filter, CONTACTS_FILTER_OPERATOR_OR)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_bool(
+ filter, _contacts_person.has_email, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_projection,
+ sizeof(person_projection) / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ break;
+ case CT_GET_LIST_PERSON_OF_ADDRBOOK_ID:
+ view_uri = _contacts_person_contact._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person_contact._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_int(NULL,
+ _contacts_person_contact._uri,
+ _contacts_person_contact.address_book_id,
+ CONTACTS_MATCH_EQUAL, clist_d->base_ab);
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_distinct(
+ query, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_contact_projection,
+ sizeof(person_contact_projection)
+ / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ break;
+
+ case CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID:
+ view_uri = _contacts_person_contact._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person_contact._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_int(NULL,
+ _contacts_person_contact._uri,
+ _contacts_person_contact.address_book_mode,
+ CONTACTS_MATCH_EQUAL, CONTACTS_ADDRESS_BOOK_MODE_NONE);
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_distinct(
+ query, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_contact_projection,
+ sizeof(person_contact_projection)
+ / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ break;
+
+ case CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID:
+ view_uri = _contacts_person_contact._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person_contact._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_int(NULL,
+ _contacts_person_contact._uri,
+ _contacts_person_contact.address_book_id,
+ CONTACTS_MATCH_EQUAL, clist_d->base_ab);
+ filter = list_create_filter_bool(filter,
+ _contacts_person_contact._uri,
+ _contacts_person_contact.has_phonenumber,
+ CONTACTS_MATCH_EQUAL, true);
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_distinct(
+ query, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_contact_projection,
+ sizeof(person_contact_projection)
+ / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ break;
+ case CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID:
+ view_uri = _contacts_person_contact._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person_contact._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_int(NULL,
+ _contacts_person_contact._uri,
+ _contacts_person_contact.address_book_id,
+ CONTACTS_MATCH_EQUAL, clist_d->base_ab);
+ filter = list_create_filter_bool(filter,
+ _contacts_person_contact._uri,
+ _contacts_person_contact.has_email,
+ CONTACTS_MATCH_EQUAL, true);
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_distinct(
+ query, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_contact_projection,
+ sizeof(person_contact_projection)
+ / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+ break;
+ case CT_GET_LIST_PERSON_HAD_NUMBER_OR_EMAIL_OF_ADDRBOOK_ID:
+ view_uri = _contacts_person_contact._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person_contact._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_int(NULL,
+ _contacts_person_contact._uri,
+ _contacts_person_contact.address_book_id,
+ CONTACTS_MATCH_EQUAL, clist_d->base_ab);
+ filter2 = list_create_filter_bool(NULL,
+ _contacts_person_contact._uri,
+ _contacts_person_contact.has_phonenumber,
+ CONTACTS_MATCH_EQUAL, true);
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_filter_add_operator(
+ filter2, CONTACTS_FILTER_OPERATOR_OR)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_bool(
+ filter2, _contacts_person_contact.has_email,
+ true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_filter_add_operator(
+ filter, CONTACTS_FILTER_OPERATOR_AND)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_filter(
+ filter, filter2)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_contact_projection,
+ sizeof(person_contact_projection)
+ / sizeof(int))))
+ break;
+
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+ contacts_filter_destroy(filter);
+ contacts_filter_destroy(filter2);
+ contacts_query_destroy(query);
+
+ break;
+ case CT_GET_LIST_PERSON_OF_GROUP_ID:
+ view_uri = _contacts_person_grouprel._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person_grouprel._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_int(filter,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.group_id,
+ CONTACTS_MATCH_EQUAL, clist_d->base_grp);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_distinct(
+ query, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_grouprel_projection,
+ sizeof(person_grouprel_projection)
+ / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ break;
+
+ case CT_GET_LIST_PERSON_HAD_NUMBER_OF_GROUP_ID:
+ view_uri = _contacts_person_grouprel._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person_grouprel._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_int(NULL,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.group_id,
+ CONTACTS_MATCH_EQUAL, clist_d->base_grp);
+ filter = list_create_filter_bool(filter,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.has_phonenumber,
+ CONTACTS_MATCH_EQUAL, true);
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_distinct(
+ query, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_grouprel_projection,
+ sizeof(person_grouprel_projection)
+ / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ break;
+ case CT_GET_LIST_PERSON_HAD_EMAIL_OF_GROUP_ID:
+ view_uri = _contacts_person_grouprel._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person_grouprel._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_int(NULL,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.group_id,
+ CONTACTS_MATCH_EQUAL, clist_d->base_grp);
+ filter = list_create_filter_bool(filter,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.has_email,
+ CONTACTS_MATCH_EQUAL, true);
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_distinct(
+ query, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_grouprel_projection,
+ sizeof(person_grouprel_projection)
+ / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ break;
+
+ case CT_GET_LIST_PERSON_HAD_NUMBER_OR_EMAIL_OF_GROUP_ID:
+ view_uri = _contacts_person_grouprel._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person_grouprel._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_int(NULL,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.group_id,
+ CONTACTS_MATCH_EQUAL, clist_d->base_grp);
+ filter2 = list_create_filter_bool(NULL,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.has_phonenumber,
+ CONTACTS_MATCH_EQUAL, true);
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_filter_add_operator(
+ filter2, CONTACTS_FILTER_OPERATOR_OR)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_bool(
+ filter2, _contacts_person_grouprel.has_email,
+ true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_filter_add_operator(
+ filter, CONTACTS_FILTER_OPERATOR_AND)))
+ break;
+
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_filter(
+ filter, filter2)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_distinct(
+ query, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_grouprel_projection,
+ sizeof(person_grouprel_projection)
+ / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_filter_destroy(filter);
+ contacts_filter_destroy(filter2);
+ contacts_query_destroy(query);
+
+ break;
+
+ case CT_GET_LIST_PERSON_NOT_ASSIGNED_OF_ADDRBOOK_ID:
+ view_uri = _contacts_person_grouprel._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person_grouprel._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_int(NULL,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.address_book_id,
+ CONTACTS_MATCH_EQUAL, clist_d->base_ab);
+ filter = list_create_filter_int(filter,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.group_id, CONTACTS_MATCH_NONE,
+ 0);
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_distinct(
+ query, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_grouprel_projection,
+ sizeof(person_grouprel_projection)
+ / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+ break;
+
+ case CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OR_EMAIL_OF_ADDRBOOK_ID:
+ view_uri = _contacts_person_grouprel._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person_grouprel._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_int(NULL,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.address_book_id,
+ CONTACTS_MATCH_EQUAL, clist_d->base_ab);
+ filter = list_create_filter_int(filter,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.group_id, CONTACTS_MATCH_NONE,
+ 0);
+ filter2 = list_create_filter_bool(NULL,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.has_phonenumber,
+ CONTACTS_MATCH_EQUAL, true);
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_filter_add_operator(
+ filter2, CONTACTS_FILTER_OPERATOR_OR)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_bool(
+ filter2, _contacts_person_grouprel.has_email,
+ true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_filter_add_operator(
+ filter, CONTACTS_FILTER_OPERATOR_AND)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_filter(
+ filter, filter2)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_distinct(
+ query, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_grouprel_projection,
+ sizeof(person_grouprel_projection)
+ / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_filter_destroy(filter);
+ contacts_filter_destroy(filter2);
+ contacts_query_destroy(query);
+
+ break;
+ case CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_EMAIL_OF_ADDRBOOK_ID:
+ view_uri = _contacts_person_grouprel._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person_grouprel._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_int(NULL,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.address_book_id,
+ CONTACTS_MATCH_EQUAL, clist_d->base_ab);
+ filter = list_create_filter_int(filter,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.group_id, CONTACTS_MATCH_NONE,
+ 0);
+ filter = list_create_filter_bool(filter,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.has_email,
+ CONTACTS_MATCH_EQUAL, true);
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_distinct(
+ query, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_grouprel_projection,
+ sizeof(person_grouprel_projection)
+ / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ break;
+ case CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OF_ADDRBOOK_ID:
+ view_uri = _contacts_person_grouprel._uri;
+
+ err = (contacts_error_e) contacts_query_create(
+ _contacts_person_grouprel._uri, &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ do
+ {
+ filter = list_create_filter_int(NULL,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.address_book_id,
+ CONTACTS_MATCH_EQUAL, clist_d->base_ab);
+ filter = list_create_filter_int(filter,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.group_id, CONTACTS_MATCH_NONE,
+ 0);
+ filter = list_create_filter_bool(filter,
+ _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.has_phonenumber,
+ CONTACTS_MATCH_EQUAL, true);
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(
+ query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_distinct(
+ query, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_query_set_projection(
+ query, person_grouprel_projection,
+ sizeof(person_grouprel_projection)
+ / sizeof(int))))
+ break;
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_search_records_with_query(
+ query, clist_d->search_str, 0, 0,
+ &list)))
+ break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ }
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+ break;
+ default:
+ ERR("Invalid op");
+ return CONTACTS_ERROR_INTERNAL;
+ }
+ PH_DBG("end cotnacts_db_get_list, start while");
+
+ clist_d->cnt_list_total = 0;
+
+ // group - add member
+ p_retvm_if(NULL == list, CONTACTS_ERROR_INTERNAL, "list is NULL");
+
+ err = (contacts_error_e) contacts_list_get_count(list, &count);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, CONTACTS_ERROR_INTERNAL,
+ "contacts_list_get_count() Failed(%d)", err);
+ p_retvm_if(0 == count, CONTACTS_ERROR_NO_DATA, "list is empty");
+
+ while (err == (contacts_error_e) CONTACTS_ERROR_NONE)
+ {
+ ct_person_list *person_info;
+ char *temp_addressbooks = NULL;
+
+ if (0 == strcmp(_contacts_person_contact._uri, view_uri))
+ err = (contacts_error_e) phone_cts_get_int_from_list(list,
+ _contacts_person_contact.person_id, &person_id);
+ else
+ err = (contacts_error_e) phone_cts_get_int_from_list(list,
+ _contacts_person.id, &person_id);
+
+ if (person_id == clist_d->selected_person_id)
+ {
+ contacts_list_next(list);
+ continue;
+ }
+
+ Eina_List *l = NULL;
+ Eina_List *list_grp_person = NULL;
+ if (clist_d->list_grp_person && *clist_d->list_grp_person)
+ {
+ list_grp_person = *clist_d->list_grp_person;
+ }
+ bool check = false;
+ void *v_data = NULL;
+
+ EINA_LIST_FOREACH(list_grp_person, l, v_data)
+ {
+ ct_person_list *data = (ct_person_list *) v_data;
+ if (data)
+ {
+ grp_person_id = data->id;
+ PH_DBG("add member : grp_person_id =%d,person_id =%d",
+ grp_person_id, person_id);
+ if (grp_person_id && grp_person_id == person_id)
+ {
+ contacts_list_next(list);
+ check = true;
+ break;
+ }
+ }
+ else
+ ERR("list_grp_person' data is null");
+ }
+ if (check)
+ continue;
+
+ person_info = (ct_person_list*) calloc(1, sizeof(ct_person_list));
+ if (NULL == person_info)
+ {
+ ERR("calloc() return NULL");
+ break;
+ }
+ person_info->id = person_id;
+ if (0 == strcmp(_contacts_person_contact._uri, view_uri))
+ {
+ err = (contacts_error_e) phone_cts_get_str_from_list(list,
+ _contacts_person_contact.status,
+ &(person_info->status_str));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() Failed(%d)", err);
+ err = (contacts_error_e) phone_cts_get_str_from_list(list,
+ _contacts_person_contact.display_name,
+ &(person_info->display));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() Failed(%d)", err);
+ err = (contacts_error_e) phone_cts_get_str_from_list(list,
+ _contacts_person_contact.display_name_index,
+ &(person_info->display_index));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() Failed(%d)", err);
+ err = (contacts_error_e) phone_cts_get_str_from_list(list,
+ _contacts_person_contact.addressbook_ids,
+ &temp_addressbooks);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() Failed(%d)", err);
+ person_info->addressbook_id_list = ctui_get_addressbook_id_list(
+ temp_addressbooks, " ");
+ }
+ else
+ {
+ err = (contacts_error_e) phone_cts_get_str_from_list(list,
+ _contacts_person.status, &(person_info->status_str));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() Failed(%d)", err);
+ err = (contacts_error_e) phone_cts_get_str_from_list(list,
+ _contacts_person.display_name, &(person_info->display));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() Failed(%d)", err);
+ err = (contacts_error_e) phone_cts_get_int_from_list(list,
+ _contacts_person.link_count, &(person_info->link_count));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_int_from_list() Failed(%d)", err);
+ err = (contacts_error_e) phone_cts_get_str_from_list(list,
+ _contacts_person.display_name_index,
+ &(person_info->display_index));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() Failed(%d)", err);
+ err = (contacts_error_e) phone_cts_get_str_from_list(list,
+ _contacts_person.addressbook_ids, &temp_addressbooks);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() Failed(%d)", err);
+ person_info->addressbook_id_list = ctui_get_addressbook_id_list(
+ temp_addressbooks, " ");
+ err = (contacts_error_e) phone_cts_get_bool_from_list(list,
+ _contacts_person.is_favorite, &person_info->is_favourite);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_bool_from_list() Failed(%d)", err);
+ }
+
+ result = eina_list_append(result, person_info);
+ clist_d->cnt_list_total++;
+ err = (contacts_error_e) contacts_list_next(list);
+ }
+ *list_out = result;
+ if (CONTACTS_ERROR_NO_DATA != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ return err;
+ }
+ return 0;
+}
+
+static inline int list_check_utf8(char c)
+{
+ PH_TRACE;
+ if (c < 128)
+ return 1;
+ else if ((c & 0xe0) == 0xc0)
+ return 2;
+ else if ((c & 0xf0) == 0xe0)
+ return 3;
+ else if ((c & 0xf8) == 0xf0)
+ return 4;
+ else if ((c & 0xfc) == 0xf8)
+ return 5;
+ else if ((c & 0xfe) == 0xfc)
+ return 6;
+ else
+ return CONTACTS_ERROR_INTERNAL;
+}
+
+void ct_list_init_account_data(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ int i = 0;
+ int addressbook_id = 0;
+ bool addressbook_exist = false;
+ ct_ab_map acc_types[CT_MAX_ADDRBOOK];
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_list_h list = NULL;
+ char addressbook_name[PH_TEXT_MAX_LEN] = { 0, };
+
+ addressbook_id = ctui_get_view_mode();
+
+ err = (contacts_error_e) contacts_db_get_all_records(
+ _contacts_address_book._uri, 0, 0, &list);
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ err = phone_cts_get_int_from_list(list, _contacts_address_book.id,
+ &(acc_types[i].id));
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_int_from_list() Failed(%d)", err);
+ break;
+ }
+ err = phone_cts_get_int_from_list(list,
+ _contacts_address_book.account_id, &(acc_types[i].account_id));
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_int_from_list() Failed(%d)", err);
+ break;
+ }
+
+ acc_types[i].icon_path = ctui_get_addressbook_icon_path(
+ acc_types[i].id);
+ PH_DBG("icon_path = %s", acc_types[i].icon_path);
+ if (acc_types[i].id == addressbook_id)
+ addressbook_exist = true;
+
+ ctui_get_addressbook_name(acc_types[i].id, addressbook_name,
+ sizeof(addressbook_name));
+ acc_types[i].addressbook_name = strdup(addressbook_name);
+
+ if (++i == sizeof(acc_types) / sizeof(*acc_types))
+ break;
+
+ err = (contacts_error_e) contacts_list_next(list);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ }
+ err = (contacts_error_e) contacts_list_destroy(list, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_destroy() Failed(%d)",
+ err);
+
+ if (addressbook_exist == false)
+ ctui_set_view_mode(-1);
+
+ if (!clist_d->ug /*&& CT_GET_LIST_ALL_PERSON != clist_d->list_op*/)
+ {
+ addressbook_id = ctui_get_view_mode();
+ if (addressbook_id == -1 && clist_d->list_op > CT_GET_LIST_ALL_PERSON)
+ {
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON;
+ clist_d->base_ab = -1;
+ }
+ }
+
+ if (i == sizeof(acc_types) / sizeof(*acc_types))
+ {
+ ERR("addressbook are too many");
+ i--;
+ }
+ clist_d->acc_types = (ct_ab_map *) realloc(clist_d->acc_types, i * sizeof(ct_ab_map));
+ p_retm_if(NULL == clist_d->acc_types, "realloc() return NULL");
+
+ memcpy(clist_d->acc_types, acc_types, i * sizeof(ct_ab_map));
+ clist_d->acc_count = i;
+}
+
+void ct_list_get_addrbook_icon_path(ct_list_data *clist_d, int addressbook_id,
+ char *dest, int dest_len)
+{
+ PH_TRACE;
+ int i = 0;
+ bool not_found;
+
+ p_retm_if(NULL == dest, "parameter(dest) is NULL");
+ dest[0] = '\0';
+ if (0 == addressbook_id)
+ return;
+ p_retm_if(NULL == clist_d->acc_types, "clist_d->acc_types is NULL");
+
+ not_found = true;
+
+ int count = clist_d->acc_count;
+ for (i = 0; i < count; i++)
+ {
+ if (addressbook_id == clist_d->acc_types[i].account_id)
+ {
+ not_found = false;
+ break;
+ }
+ }
+ p_retm_if(not_found, "invalid id_ab(%d)", addressbook_id);
+
+ if (clist_d->acc_types[i].icon_path && *clist_d->acc_types[i].icon_path)
+ snprintf(dest, dest_len, "%s", clist_d->acc_types[i].icon_path);
+}
+
+static inline void list_clean_ecore_task(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ if (clist_d->list_idler)
+ {
+ ecore_idler_del(clist_d->list_idler);
+ clist_d->list_idler = NULL;
+ }
+
+}
+
+static void list_searchbar_entry_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL");
+
+ ctui_list_set_unsweep(clist_d);
+}
+
+static void list_searchbar_clicked_cb(void *data, Evas_Object *obj,
+ const char *emission, const char *source)
+{
+ PH_TRACE;
+ ct_list_data *clist = static_cast<ct_list_data *>(data);
+
+ if (clist == NULL)
+ {
+ return;
+ }
+ list_searchbar_entry_clicked_cb(clist, NULL, NULL);
+}
+
+static char *list_group_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ char *group_index = (char *) data;
+ if (0 == strcmp(part, "elm.text") && group_index && *group_index)
+ return strdup(group_index);
+ else
+ return NULL;
+}
+
+static Elm_Genlist_Item_Class group_index =
+{
+ group_index.version,
+ group_index.refcount,
+ group_index.delete_me,
+ group_index.item_style = "grouptitle",
+ group_index.decorate_item_style,
+ group_index.decorate_all_item_style,
+ {group_index.func.text_get = list_group_label_get, },
+};
+
+static Elm_Object_Item *create_item_fast_index(ct_list_data *clist_d,ct_person_list *person_info)
+{
+ PH_TRACE;
+ if (person_info)
+ {
+ ct_list_index_data * index_data = (ct_list_index_data *) calloc(1, sizeof(ct_list_index_data));
+ snprintf(index_data->index, sizeof(index_data->index), "%s", person_info->display_index);
+ index_data->item = elm_index_item_append(clist_d->fast_index, index_data->index, NULL, NULL);
+ clist_d->list_index = eina_list_append(clist_d->list_index, index_data);
+ elm_index_level_go(clist_d->fast_index, 0);
+ return index_data->item;
+ }
+ return NULL;
+}
+void create_fast_index_list_index(ct_list_data *clist_d, ct_person_list *person_info)
+{
+ PH_TRACE;
+ if (person_info)
+ {
+ char cur_index[10] = { 0, };
+
+ if (!person_info->display)
+ snprintf(cur_index, sizeof(cur_index), "#");
+ else
+ snprintf(cur_index, sizeof(cur_index), "%s",person_info->display_index);
+
+ if (strcmp(clist_d->group_index, cur_index))
+ {
+ strcpy(clist_d->group_index, cur_index);
+ Elm_Object_Item *item = elm_genlist_item_append(clist_d->genlist, &group_index, strdup(cur_index), NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+ elm_genlist_item_select_mode_set(item,ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ snprintf(clist_d->group_index, sizeof(clist_d->group_index), "%s",cur_index);
+ clist_d->group_item = item;
+
+ Elm_Object_Item * item_index_data = create_item_fast_index(clist_d,person_info);
+ elm_object_item_data_set(item_index_data, item);
+ }
+ }
+}
+static void list_append_item(ct_list_data *clist_d, ct_person_list *person_info)
+{
+ PH_TRACE;
+ Elm_Object_Item * item = NULL;
+
+ if (CT_GET_LIST_VCARD != clist_d->list_op && !(clist_d->search_str && *clist_d->search_str))
+ create_fast_index_list_index(clist_d, person_info);
+
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ bool has_phonenumber = false;
+
+ if (!clist_d->vcard_path)
+ {
+ err = (contacts_error_e) contacts_db_get_record(_contacts_person._uri,
+ person_info->id, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed(%d)", err);
+ err = (contacts_error_e) contacts_record_get_bool(record,
+ _contacts_person.has_phonenumber, &has_phonenumber);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_bool() Failed(%d)", err);
+ err = (contacts_error_e) contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ }
+
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (person_info->phone_number_found == false)
+ item = elm_genlist_item_append(clist_d->genlist,
+ &clist_d->itcs[CT_LIST_ITEM_SEARCH_NO_NUMBER], person_info,
+ NULL, ELM_GENLIST_ITEM_NONE, clist_d->gl_sel,
+ clist_d->gl_sel_data);
+ else
+ item = elm_genlist_item_append(clist_d->genlist,
+ &clist_d->itcs[CT_LIST_ITEM_SEARCH], person_info, NULL,
+ ELM_GENLIST_ITEM_NONE, clist_d->gl_sel,
+ clist_d->gl_sel_data);
+ }
+ else
+ {
+
+ if (person_info->phone_number_found == false)
+ {
+ item = elm_genlist_item_append(clist_d->genlist,
+ &clist_d->itcs[CT_LIST_ITEM_NO_NUMBER], person_info,
+ clist_d->group_item, ELM_GENLIST_ITEM_NONE, clist_d->gl_sel,
+ clist_d->gl_sel_data);
+ }
+ else
+ {
+ item = elm_genlist_item_append(clist_d->genlist,
+ &clist_d->itcs[CT_LIST_ITEM], person_info,
+ clist_d->group_item, ELM_GENLIST_ITEM_NONE, clist_d->gl_sel,
+ clist_d->gl_sel_data);
+ }
+ }
+ person_info->item = item;
+}
+
+#define N 20
+static Eina_Bool list_append_part(void *user_data)
+{
+ PH_TRACE;
+ int i = 0;
+ Eina_List *cursor;
+ ct_list_data *clist_d = (ct_list_data *) user_data;
+ void *info;
+
+ cursor = eina_list_nth_list(clist_d->list, clist_d->readed_n);
+ EINA_LIST_FOREACH(cursor, cursor, info)
+ {
+ ct_person_list *person_info = (ct_person_list *) info;
+ if (i++ == N)
+ break;
+ list_append_item(clist_d, person_info);
+ }
+ if (N < i)
+ {
+ clist_d->readed_n += N;
+ return ECORE_CALLBACK_RENEW;
+ }
+ else
+ {
+ clist_d->list_idler = NULL;
+ disable_count_item(clist_d);
+ clist_d->list_idler = NULL;
+ return ECORE_CALLBACK_CANCEL;
+ }
+}
+
+static bool __list_get_addressbook_name(int addressbook_id, char *buf,
+ int buf_size)
+{
+ PH_TRACE;
+ int addressbook_mode = CONTACTS_ADDRESS_BOOK_MODE_NONE;
+ char *cur_ab;
+ char cur_account_name[200] = { 0, };
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ p_retvm_if(buf == NULL, false, "out_name in null");
+
+ ctui_get_account_name_by_address_book_id(addressbook_id, cur_account_name,
+ sizeof(cur_account_name));
+ if (addressbook_id > 0)
+ {
+ err = (contacts_error_e) contacts_db_get_record(
+ _contacts_address_book._uri, addressbook_id, &record);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ err = (contacts_error_e) contacts_record_get_str_p(record,
+ _contacts_address_book.name, &cur_ab);
+ if (err != CONTACTS_ERROR_NONE)
+ {
+ err = (contacts_error_e) contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ return false;
+ }
+
+ err = (contacts_error_e) contacts_record_get_int(record,
+ _contacts_address_book.mode, &addressbook_mode);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if (CONTACTS_ADDRESS_BOOK_MODE_READONLY == addressbook_mode)
+ snprintf(buf, buf_size, "%s", cur_account_name);
+ else
+ snprintf(buf, buf_size, "%s %s", cur_account_name, cur_ab);
+
+ err = (contacts_error_e) contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ }
+ else
+ {
+ snprintf(buf, buf_size, "%s", T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE));
+ }
+
+ return true;
+}
+
+void ctui_list_handle_search(ct_list_data &clist_d)
+{
+ PH_TRACE;
+ int i = 0;
+ int readed = 0;
+ Eina_List *cursor;
+ char group_title[PH_TEXT_MAX_LEN];
+ char addressbook_name[PH_TEXT_MAX_LEN];
+ void *info;
+
+ clear_genlist_info(clist_d);
+
+ if (clist_d.list_idler)
+ {
+ ecore_idler_del(clist_d.list_idler);
+ clist_d.list_idler = NULL;
+ }
+
+ if (__list_get_addressbook_name(clist_d.base_ab, addressbook_name,
+ sizeof(addressbook_name)) == true)
+ snprintf(group_title, sizeof(group_title), "%s (%d)", addressbook_name,
+ eina_list_count(clist_d.list));
+ else
+ snprintf(group_title, sizeof(group_title), "%s (%d)",
+ S_(PH_SYS_BODY_CONTACTS), eina_list_count(clist_d.list));
+ DBG("addressbook_name = %s,group_title = %s",addressbook_name,group_title);
+ clist_d.search_group_item = elm_genlist_item_append(clist_d.genlist,
+ &group_index, strdup(group_title), NULL, ELM_GENLIST_ITEM_GROUP,
+ NULL, NULL);
+ elm_genlist_item_select_mode_set(clist_d.search_group_item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ list_update_person_info_check_status(clist_d.list,clist_d.list_check_info);
+ clist_d.cnt_checked = eina_list_count(clist_d.list_check_info);
+
+ EINA_LIST_FOREACH(clist_d.list, cursor, info)
+ {
+ ct_person_list *person_info = (ct_person_list *) info;
+
+ if ((clist_d.search_str && *clist_d.search_str))
+ {
+ std::string search_str(clist_d.search_str);
+ person_info->phone_number_found = find_number_person_list(person_info,search_str);
+ }
+
+ if (i++ == N)
+ break;
+ list_append_item(&clist_d, person_info);
+ readed++;
+ }
+ if (N < i)
+ {
+ clist_d.readed_n = readed;
+ clist_d.list_idler = ecore_idler_add(list_append_part, &clist_d);
+ }
+ else
+ {
+ if (!(clist_d.search_str && *clist_d.search_str))
+ disable_count_item(&clist_d);
+ }
+}
+
+static void list_append_all(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ int i = 0;
+ Eina_List *cursor;
+ void *info;
+
+ if (clist_d->list_idler)
+ {
+ ecore_idler_del(clist_d->list_idler);
+ clist_d->list_idler = NULL;
+ }
+
+ if (clist_d->base_ab > -1)
+ {
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ Elm_Object_Item * item;
+ int addressbook_mode;
+ char title[400] = { 0, };
+ char cur_account_name[200] = { 0, };
+ char *cur_ab;
+
+ ctui_get_account_name_by_address_book_id(clist_d->base_ab,
+ cur_account_name, sizeof(cur_account_name));
+ if (clist_d->base_ab > 0)
+ {
+ err = (contacts_error_e) contacts_db_get_record(
+ _contacts_address_book._uri, clist_d->base_ab, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ err = (contacts_error_e) contacts_record_get_str_p(record,
+ _contacts_address_book.name, &cur_ab);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ err = (contacts_error_e) contacts_record_get_int(record,
+ _contacts_address_book.mode, &addressbook_mode);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if (CONTACTS_ADDRESS_BOOK_MODE_READONLY == addressbook_mode)
+ snprintf(title, sizeof(title), "%s", cur_account_name);
+ else
+ snprintf(title, sizeof(title), "%s %s", cur_account_name,
+ cur_ab);
+
+ err = (contacts_error_e) contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ }
+ else
+ {
+ snprintf(title, sizeof(title), "%s",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE));
+ }
+
+ item = elm_genlist_item_append(clist_d->genlist, &group_index,
+ strdup(title), NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+ elm_genlist_item_select_mode_set(item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+ list_update_person_info_check_status(clist_d->list,clist_d->list_check_info);
+ clist_d->cnt_checked = eina_list_count(clist_d->list_check_info);
+ EINA_LIST_FOREACH(clist_d->list, cursor, info)
+ {
+ ct_person_list *person_info = (ct_person_list *) info;
+ if (i++ == N)
+ break;
+ list_append_item(clist_d, person_info);
+ }
+ if (N < i)
+ {
+ clist_d->readed_n = N;
+ clist_d->list_idler = ecore_idler_add(list_append_part, clist_d);
+ }
+ else
+ disable_count_item(clist_d);
+}
+#undef N
+void clear_genlist_info(ct_list_data &clist_d)
+{
+ elm_genlist_clear(clist_d.genlist);
+ clear_fast_index(&clist_d);
+ clist_d.group_index[0] = '\0';
+ clist_d.group_item = NULL;
+}
+
+void ctui_list_refresh_genlist(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ clear_genlist_info(*clist_d);
+ list_append_all(clist_d);
+}
+
+static void remove_favorite_contacts(Eina_List **list)
+{
+ PH_TRACE;
+ Eina_List *l = NULL;
+ void *info = NULL;
+
+ if (list && *list)
+ {
+ EINA_LIST_FOREACH(*list, l, info)
+ {
+ ct_person_list *person_info = (ct_person_list *) info;
+ if (person_info != NULL && person_info->is_favourite == EINA_TRUE)
+ {
+ *list = eina_list_remove(*list, (void *) person_info);
+ free(person_info);
+ }
+ }
+ }
+}
+
+static void list_update_person_info_check_status(Eina_List *list,
+ Eina_List *list_check)
+{
+ PH_TRACE;
+ void *data = NULL;
+ Eina_List *l = NULL;
+ Eina_List *l_temp = NULL;
+ void *info = NULL;
+
+ p_retm_if(NULL == list, "parameter(list_person) is NULL");
+ p_retm_if(NULL == list_check, "parameter(list_check) is NULL");
+
+ EINA_LIST_FOREACH(list, l, info)
+ {
+ ct_person_list *person_search = (ct_person_list *) info;
+
+ EINA_LIST_FOREACH(list_check, l_temp, data)
+ {
+ ct_person_list *person_info = (ct_person_list *) data;
+ if (person_search != NULL && person_info != NULL && person_search->id == person_info->id)
+ {
+ person_search->checked = true;
+ break;
+ }
+ }
+ }
+}
+
+bool find_number_person_list(ct_person_list *person_info,const std::string &search_str)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ contacts_record_h record_number = NULL;
+ int recort_id = 0;
+ char *number = NULL;
+ std::string number_display;
+
+ if(person_info == NULL)
+ {
+ return false;
+ }
+
+ if(CONTACTS_ERROR_NONE == (contacts_error_e)contacts_db_get_record(_contacts_person._uri,person_info->id, &record))
+ {
+ if(CONTACTS_ERROR_NONE == (contacts_error_e)contacts_record_get_int(record, _contacts_person.display_contact_id, &recort_id))
+ {
+ contacts_record_destroy(record, true);
+ record = NULL;
+
+ if(CONTACTS_ERROR_NONE == (contacts_error_e)contacts_db_get_record(_contacts_contact._uri, recort_id, &record))
+ {
+ int index = 0;
+ while (CONTACTS_ERROR_NONE == (contacts_error_e)contacts_record_get_child_record_at_p(record,_contacts_contact.number,index++, &record_number))
+ {
+ if(CONTACTS_ERROR_NONE == (contacts_error_e)contacts_record_get_str_p(record_number,_contacts_number.number, &number))
+ {
+ if(number != NULL)
+ {
+ number_display.assign(number);
+ if(number_display.find(search_str) != std::string::npos)
+ {
+ person_info->number_display = strdup(number_display.c_str());
+ contacts_record_destroy(record, true);
+ record = NULL;
+ return true;
+ }
+ }
+ }
+ }
+ }
+ contacts_record_destroy(record, true);
+ record = NULL;
+ }
+ }
+
+ return false;
+}
+
+static void list_searchbar_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *en;
+ Evas_Object *sb = (Evas_Object *) data;
+ ct_list_data *clist_d;
+ char *search_str;
+
+ clist_d = (ct_list_data *) evas_object_data_get(sb, "clist_d");
+ p_retm_if(NULL == sb, "evas_object_data_get() return NULL");
+
+ en = elm_object_part_content_get(sb, "elm.swallow.content");
+ p_retm_if(NULL == en, "elm_object_part_content_get() return NULL");
+
+ p_retm_if(NULL == clist_d->navi, "clist_d->navi() return NULL");
+ ct_list_data *clist_favorite = (ct_list_data *) evas_object_data_get(
+ clist_d->navi, "favor_list_d");
+
+ if (!elm_entry_is_empty(en))
+ elm_object_signal_emit(sb, "elm,state,guidetext,hide", "elm");
+
+ if (elm_object_focus_get(sb))
+ {
+ if (elm_entry_is_empty(en))
+ elm_object_signal_emit(sb, "elm,state,eraser,hide", "elm");
+ else
+ elm_object_signal_emit(sb, "elm,state,eraser,show", "elm");
+ }
+ else
+ {
+ if (elm_entry_is_empty(en))
+ {
+ elm_object_signal_emit(sb, "elm,state,guidetext,show", "elm");
+ elm_object_signal_emit(sb, "elm,state,eraser,hide", "elm");
+ }
+ }
+ search_str = ctui_entry_markup_to_utf8_without_spaces(elm_entry_entry_get(en));
+ p_retm_if(NULL == search_str, "ctui_entry_markup_to_utf8_without_spaces() return NULL");
+
+ if (strlen(search_str) > 0)
+ {
+ if (NULL != clist_d->select_all_layout)
+ {
+ elm_box_unpack(clist_d->box, clist_d->select_all_layout);
+ evas_object_del(clist_d->select_all_layout);
+ clist_d->select_all_layout = NULL;
+ }
+ }
+ else
+ {
+ ctui_list_set_selectall(clist_d);
+ }
+ if (search_str && clist_d->search_str)
+ {
+ if (pre_search_str[0] == '\0' && search_str[0] == '\0')
+ {
+ ct_list_get_contacts(clist_d, &clist_d->list);
+ if (clist_favorite && clist_favorite->list)
+ {
+ remove_favorite_contacts(&clist_d->list);
+ }
+ clist_d->search_str = NULL;
+ elm_genlist_homogeneous_set(clist_d->genlist, EINA_TRUE);
+ elm_genlist_mode_set(clist_d->genlist, ELM_LIST_SCROLL);
+ ctui_list_refresh_genlist(clist_d);
+ }
+ else
+ {
+ if (0 == strcmp(search_str, clist_d->search_str))
+ {
+ free(search_str);
+ return;
+ }
+ }
+ }
+ if ('\0' == search_str[0] && NULL == clist_d->search_str)
+ {
+ if (elm_genlist_decorate_mode_get(clist_d->genlist)&& clist_d->edit_sel_update)
+ clist_d->edit_sel_update(clist_d);
+ free(search_str);
+ return;
+ }
+
+ free(clist_d->search_str);
+ clist_d->search_str = search_str;
+
+ if (strcmp(pre_search_str, search_str))
+ {
+ ct_list_get_contacts(clist_d, &clist_d->list);
+ if (clist_favorite && clist_favorite->list)
+ {
+ remove_favorite_contacts(&clist_d->list);
+ }
+ if (*search_str)
+ {
+ elm_genlist_mode_set(clist_d->genlist, ELM_LIST_COMPRESS);
+ ctui_list_handle_search(*clist_d);
+ }
+ else
+ {
+ elm_genlist_homogeneous_set(clist_d->genlist, EINA_TRUE);
+ elm_genlist_mode_set(clist_d->genlist, ELM_LIST_SCROLL);
+ ctui_list_refresh_genlist(clist_d);
+ }
+
+ }
+
+ snprintf(pre_search_str, sizeof(pre_search_str), "%s", search_str);
+
+ if (elm_genlist_decorate_mode_get(clist_d->genlist)
+ && clist_d->edit_sel_update)
+ clist_d->edit_sel_update(clist_d);
+
+}
+
+void list_searchbar_back_button_cb(void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist = static_cast<ct_list_data *>(data);
+ if (clist && clist->search_layout && clist->genlist)
+ {
+ Evas_Object *entry = elm_object_part_content_get(clist->search_layout,"elm.swallow.content");
+ if (entry && clist->navi)
+ {
+ free(clist->search_str);
+ clist->search_str = NULL;
+ const char * text = elm_entry_entry_get(entry);
+ if (text && *text)
+ {
+ elm_entry_entry_set(entry, NULL);
+ }
+ elm_object_focus_set(entry, EINA_FALSE);
+ pre_search_str[0] = '\0';
+ elm_genlist_homogeneous_set(clist->genlist, EINA_TRUE);
+ elm_genlist_mode_set(clist->genlist, ELM_LIST_SCROLL);
+ elm_object_focus_set(clist->genlist, EINA_TRUE);
+ ct_list_get_contacts(clist, &clist->list);
+ ct_list_data *clist_favorite = (ct_list_data *) evas_object_data_get(clist->navi,"favor_list_d");
+ if (clist_favorite && clist_favorite->list)
+ {
+ remove_favorite_contacts(&clist->list);
+ }
+ ctui_list_refresh_genlist(clist);
+ ctui_list_update_selection_info(clist);
+ }
+ }
+}
+
+void list_searchbar_data_set(void *data)
+{
+ PH_TRACE;
+ ct_list_data * pClistD = static_cast<ct_list_data *>(data);
+ if (pClistD)
+ {
+ pClistD->widget_back_cb = list_searchbar_back_button_cb;
+ }
+}
+
+static void list_searchbar_focused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+
+ if(data != NULL)
+ {
+ Evas_Object *pLayout = static_cast<Evas_Object *>(data);
+ evas_object_smart_callback_add((Evas_Object *) evas_object_data_get(pLayout, "button_cancel"), CLICKED,ctui_list_searchbar_cancel_cb, pLayout);
+ elm_object_focus_set(pLayout, EINA_TRUE);
+ elm_object_signal_emit(pLayout, "elm,state,guidetext,hide","elm");
+ elm_object_signal_emit(pLayout, "cancel,show", "");
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(pLayout, "elm,state,eraser,hide","elm");
+ else
+ elm_object_signal_emit(pLayout, "elm,state,eraser,show","elm");
+ list_searchbar_data_set(evas_object_data_get(pLayout, "clist_d"));
+ }
+}
+
+static void list_searchbar_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+
+ if(data != NULL)
+ {
+ Evas_Object *pLayout = static_cast<Evas_Object *>(data);
+ evas_object_smart_callback_del((Evas_Object *) evas_object_data_get(pLayout, "button_cancel"), CLICKED,ctui_list_searchbar_cancel_cb);
+ if (elm_entry_is_empty(obj))
+ {
+ elm_object_signal_emit(pLayout, "elm,state,guidetext,show","elm");
+ }
+ else
+ elm_object_signal_emit(pLayout, "elm,state,guidetext,hide","elm");
+ elm_object_signal_emit(pLayout, "elm,state,eraser,hide","elm");
+ elm_object_signal_emit(pLayout, "cancel,hide", "");
+ }
+}
+
+int ctui_list_checked_cnt_get(Eina_List *list)
+{
+ PH_TRACE;
+ int cnt = 0;
+ Eina_List *l;
+ void *info;
+
+ EINA_LIST_FOREACH(list, l, info)
+ {
+ ct_person_list *person_info = (ct_person_list *) info;
+ if (NULL == person_info)
+ continue;
+ if (person_info->checked)
+ cnt++;
+ }
+ return cnt;
+}
+
+void ctui_list_update_selection_info(void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ int checked_cnt = 0;
+ char buf[PH_TEXT_SHORT_LEN];
+
+ if (CT_LIST_MODE_EDIT != clist_d->list_mode)
+ return;
+
+ if (clist_d->ug_request && NULL == clist_d->select_all_layout)
+ {
+ checked_cnt = ctui_list_checked_cnt_get(clist_d->list);
+ }
+ else
+ {
+ Evas_Object *check = elm_object_part_content_get(
+ clist_d->select_all_layout, "elm.icon");
+ if (check)
+ {
+ if (0 != clist_d->cnt_list_total
+ && clist_d->cnt_checked == clist_d->cnt_list_total)
+ elm_check_state_set(check, EINA_TRUE);
+ else if (0 == clist_d->cnt_list_total
+ || clist_d->cnt_checked != clist_d->cnt_list_total)
+ elm_check_state_set(check, EINA_FALSE);
+ }
+ checked_cnt = clist_d->cnt_checked;
+ }
+ if (0 == clist_d->cnt_list_total)
+ {
+ phone_hide_notify(clist_d->base_layout);
+ ctui_navi_btn_disabled_set(clist_d->navi, EINA_TRUE);
+ }
+ else
+ {
+ if (0 == checked_cnt)
+ {
+ phone_show_notify(clist_d->base_layout,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_SELECT_CONTACTS));
+ ctui_navi_btn_disabled_set(clist_d->navi, EINA_TRUE);
+ }
+ else
+ {
+ ctui_navi_btn_disabled_set(clist_d->navi, EINA_FALSE);
+ if (clist_d->cnt_max_check)
+ snprintf(buf, sizeof(buf), "%s (%d/%d)",
+ S_(PH_SYS_POP_SELECTED), clist_d->cnt_checked,
+ clist_d->cnt_max_check);
+ else
+ snprintf(buf, sizeof(buf), "%s (%d)", S_(PH_SYS_POP_SELECTED),
+ clist_d->cnt_checked);
+ phone_show_notify(clist_d->base_layout, buf);
+ }
+ }
+}
+
+void ctui_list_searchbar_cancel_cb(void *data, Evas_Object *obj,void *event_info)
+{
+ PH_TRACE;
+ ct_list_data *clist = (ct_list_data *) evas_object_data_get((Evas_Object *) data, "clist_d");
+ if (clist && clist->search_layout && clist->genlist)
+ {
+ Evas_Object *entry = elm_object_part_content_get(clist->search_layout,"elm.swallow.content");
+ if (entry && clist->navi)
+ {
+ free(clist->search_str);
+ clist->search_str = NULL;
+ const char * text = elm_entry_entry_get(entry);
+ if (text && *text)
+ {
+ elm_entry_entry_set(entry, NULL);
+ }
+ elm_object_focus_set(entry, EINA_FALSE);
+ pre_search_str[0] = '\0';
+ elm_genlist_homogeneous_set(clist->genlist, EINA_TRUE);
+ elm_genlist_mode_set(clist->genlist, ELM_LIST_SCROLL);
+ elm_object_focus_set(clist->genlist, EINA_TRUE);
+ ct_list_get_contacts(clist, &clist->list);
+ ct_list_data *clist_favorite = (ct_list_data *) evas_object_data_get(clist->navi,"favor_list_d");
+ if (clist_favorite && clist_favorite->list)
+ {
+ remove_favorite_contacts(&clist->list);
+ }
+ ctui_list_refresh_genlist(clist);
+ ctui_list_update_selection_info(clist);
+ }
+ }
+}
+
+static void list_searchbar_eraser_cb(void *data, Evas_Object *obj,
+ const char *emission, const char *source)
+{
+ PH_TRACE;
+ elm_entry_entry_set((Evas_Object *) data, "");
+ pre_search_str[0] = '\0';
+ elm_entry_text_style_user_push((Evas_Object *) data, "DEFAULT='align=left font=Tizen:style=Thin text_class=tizen font_size=36 color=#5D61BC'");
+ elm_entry_entry_set((Evas_Object *) data, T_(PH_GET_TEXT_BASIC,CTTEXT_ENTRY_SEARCH));
+}
+static bool message_mode_state(int ug_request, int list_mode)
+{
+ PH_TRACE;
+ bool state = (CT_LIST_MODE_EDIT == list_mode)
+ || (CT_UG_REQUEST_CHECK == ug_request)
+ || (CT_UG_REQUEST_CHECK_FOR_NUMBER == ug_request)
+ || (CT_UG_REQUEST_CHECK_FOR_EMAIL == ug_request)
+ || (CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == ug_request);
+ return state;
+}
+
+void ctui_list_create_searchbar(Evas_Object* parent,
+ ct_list_data *clist_d)
+{
+ PH_TRACE;
+
+ if (parent == NULL || clist_d == NULL)
+ {
+ return;
+ }
+ Evas_Object *pLayout_search = elm_layout_add(parent);
+ if (pLayout_search == NULL)
+ {
+ return;
+ }
+ elm_layout_file_set(pLayout_search, CONTACTS_EDJ, "search_layout_list");
+ evas_object_size_hint_weight_set(pLayout_search, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pLayout_search, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ clist_d->searchbar = pLayout_search;
+
+ Evas_Object *pLayout = elm_layout_add(pLayout_search);
+ if (pLayout == NULL)
+ {
+ return;
+ }
+ if (message_mode_state(clist_d->ug_request, clist_d->list_mode))
+ elm_object_part_content_set(pLayout_search,
+ "add_button_hide_swall_search", pLayout);
+ else
+ elm_object_part_content_set(pLayout_search,
+ "add_button_show_swall_search", pLayout);
+ evas_object_data_set(pLayout, "clist_d", clist_d);
+ evas_object_size_hint_weight_set(pLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pLayout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_layout_theme_set(pLayout, "layout", "searchbar", "cancel_button");
+ clist_d->search_layout = pLayout;
+ evas_object_show(pLayout);
+
+ Evas_Object * pSearchBar = ea_editfield_add(pLayout,EA_EDITFIELD_SEARCHBAR);
+ if (pSearchBar != NULL)
+ {
+ elm_object_part_content_set(pLayout, "elm.swallow.content", pSearchBar);
+ elm_object_domain_translatable_part_text_set(pSearchBar, "elm.guide", NULL, T_(PH_GET_TEXT_BASIC,CTTEXT_ENTRY_SEARCH));
+ clist_d->m_Widget = pSearchBar;
+ }
+
+ Evas_Object *pCancelBtn = elm_button_add(pLayout);
+ if (pCancelBtn != NULL)
+ {
+ elm_object_part_content_set(pLayout, "button_cancel", pCancelBtn);
+ elm_object_style_set(pCancelBtn, "searchbar/default");
+ elm_object_text_set(pCancelBtn, S_(PH_SYS_SK_CANCEL));
+ }
+
+ evas_object_smart_callback_add(pSearchBar, "focused",
+ list_searchbar_focused_cb, pLayout);
+ evas_object_smart_callback_add(pSearchBar, "unfocused",
+ list_searchbar_unfocused_cb, pLayout);
+ evas_object_smart_callback_add(pSearchBar, CHANGED,
+ list_searchbar_changed_cb, pLayout);
+ evas_object_smart_callback_add(pSearchBar, "preedit,changed",
+ list_searchbar_changed_cb, pLayout);
+ elm_object_signal_callback_add(pLayout, "elm,bg,clicked", "elm",
+ list_searchbar_clicked_cb, clist_d);
+ elm_object_signal_callback_add(pLayout, "elm,eraser,clicked", "elm",
+ list_searchbar_eraser_cb, pSearchBar);
+ evas_object_smart_callback_add(pCancelBtn, CLICKED,
+ ctui_list_searchbar_cancel_cb, pLayout);
+
+ elm_object_part_content_set(clist_d->layout, "searchbar_layout", pLayout_search);
+ evas_object_show(pLayout_search);
+ clist_d->searchbar = pLayout_search;
+}
+
+static Evas_Object* list_create_navi_content_genlist(Evas_Object* parent)
+{
+ PH_TRACE;
+ Evas_Object *genlist = elm_genlist_add(parent);
+
+ elm_scroller_policy_set(genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+ elm_genlist_block_count_set(genlist, 20);
+ elm_genlist_homogeneous_set(genlist, EINA_TRUE);
+
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ return genlist;
+}
+
+static void list_fast_delayed_changed(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ // called on a change but delayed in case multiple changes happen in a
+ // short timespan
+ elm_genlist_item_bring_in(
+ (Elm_Object_Item *) elm_object_item_data_get(
+ (const Elm_Object_Item *) event_info),
+ ELM_GENLIST_ITEM_SCROLLTO_TOP);
+}
+
+static void list_fast_selected(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ // called on final select
+ elm_genlist_item_bring_in(
+ (Elm_Object_Item *) elm_object_item_data_get(
+ (const Elm_Object_Item *) event_info),
+ ELM_GENLIST_ITEM_SCROLLTO_TOP);
+}
+
+static void list_get_number_str(int id, char *buf, int buf_len)
+{
+ PH_TRACE;
+ contacts_record_h record_default_number;
+ int err = phone_cts_get_default_number(id, &record_default_number);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ char *number = NULL;
+ contacts_record_get_str(record_default_number, _contacts_number.number, &number);
+ {
+ if (number && *number)
+ {
+ strncpy(buf, number, buf_len);
+ }
+ }
+ free(number);
+ err = contacts_record_destroy(record_default_number, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_destroy() Failed(%d)", err);
+ }
+}
+
+static void list_gl_sweep(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ assert(event_info);
+ if (NULL != data && NULL != event_info)
+ {
+ ct_list_data *clist_d = static_cast<ct_list_data*>(data);
+
+ Elm_Object_Item *item = static_cast<Elm_Object_Item*>(event_info);
+ p_ret_if(!item);
+ p_ret_if(CT_GET_LIST_VCARD == clist_d->list_op);
+ p_ret_if(CT_LIST_MODE_EDIT == clist_d->list_mode);
+
+ Elm_Genlist_Item_Type type = elm_genlist_item_type_get(item);
+ p_ret_if(ELM_GENLIST_ITEM_GROUP == type);
+ p_ret_if( &clist_d->itcs[CT_LIST_ITEM_COUNT] == elm_genlist_item_item_class_get(item));
+
+ ct_person_list *person_info = NULL;
+ person_info = static_cast<ct_person_list*>(elm_object_item_data_get(item));
+ p_retm_if(NULL == person_info, "ct_person_list is null");
+ if (!person_info->number_loaded)
+ {
+ char buf[PH_TEXT_MAX_LEN];
+ buf[0] = '\0';
+ list_get_number_str(person_info->id, buf, sizeof(buf));
+ if (*buf)
+ person_info->number = strdup(buf);
+ person_info->number_loaded = true;
+ }
+
+ Elm_Genlist_Item_Class *itc = NULL;
+ itc = (Elm_Genlist_Item_Class *) elm_genlist_item_item_class_get(item);
+ p_retm_if(NULL == itc, "item class is null");
+
+ if ((NULL == person_info->number || '\0' == *person_info->number) && strcmp(itc->decorate_item_style, clist_d->itcs[CT_LIST_ITEM].decorate_item_style))
+ {
+ if (clist_d->search_str && *clist_d->search_str)
+ elm_genlist_item_item_class_update(item, &clist_d->itcs[CT_LIST_ITEM_SEARCH]);
+ else
+ elm_genlist_item_item_class_update(item, &clist_d->itcs[CT_LIST_ITEM]);
+ }
+ else if ((person_info->number && *person_info->number) && strcmp(itc->decorate_item_style, clist_d->itcs[CT_LIST_ITEM_NO_NUMBER].decorate_item_style))
+ {
+ if (clist_d->search_str && *clist_d->search_str)
+ elm_genlist_item_item_class_update(item, &clist_d->itcs[CT_LIST_ITEM_SEARCH_NO_NUMBER]);
+ else
+ elm_genlist_item_item_class_update(item, &clist_d->itcs[CT_LIST_ITEM_NO_NUMBER]);
+ }
+
+ hide_fast_index(clist_d);
+
+ // hide sweeped item
+ Elm_Object_Item *lastItem = clist_d->last_sweep_item;
+
+ if (NULL != lastItem)
+ {
+ elm_genlist_item_decorate_mode_set(lastItem, "slide", EINA_FALSE);
+ elm_genlist_item_select_mode_set(lastItem, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ clist_d->last_sweep_item = NULL;
+ }
+
+ clist_d->last_sweep_item = item;
+ elm_genlist_item_decorate_mode_set(item, "slide", EINA_TRUE);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE);
+ }
+}
+
+static void list_gl_unsweep(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_list_data *clist_d = static_cast<ct_list_data*>(data);
+ if (NULL != clist_d->last_sweep_item)
+ {
+ elm_genlist_item_decorate_mode_set(clist_d->last_sweep_item, "slide", EINA_FALSE);
+ elm_genlist_item_select_mode_set(clist_d->last_sweep_item, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ show_fast_index(clist_d);
+ clist_d->last_sweep_item = NULL;
+ }
+ }
+}
+
+void ctui_list_set_unsweep(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ assert(clist_d);
+ if (NULL != clist_d)
+ {
+ elm_genlist_item_decorate_mode_set(clist_d->last_sweep_item, "slide", EINA_FALSE);
+ elm_genlist_item_select_mode_set(clist_d->last_sweep_item, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ show_fast_index(clist_d);
+ }
+}
+
+void list_destroy_child_ug(void *data)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_list_data *pListData = static_cast<ct_list_data *>(data);
+ ug_destroy(pListData->child_ug);
+ pListData->child_ug = NULL;
+}
+
+Eina_Bool list_hide_popup_cb(void *data)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data, ECORE_CALLBACK_CANCEL, "data is null");
+ ct_list_data *pListData = static_cast<ct_list_data *>(data);
+
+ if (pListData->popup)
+ {
+ evas_object_del(pListData->popup);
+ pListData->popup = NULL;
+ }
+ return ECORE_CALLBACK_CANCEL;
+}
+
+char* list_get_person_name(int id)
+{
+ p_retvm_if(NO_INIT >= id, NULL, "incorrect id");
+ char* contact_name = NULL;
+ contacts_record_h person = NULL;
+
+ if (contacts_db_get_record(_contacts_person._uri, id, &person) == CONTACTS_ERROR_NONE)
+ {
+ if(contacts_record_get_str(person, _contacts_person.display_name, &contact_name) != CONTACTS_ERROR_NONE)
+ {
+ ERR("getting contact name failed");
+ free(contact_name);
+ contact_name = NULL;
+ }
+ contacts_record_destroy(person, true);
+ }
+ PH_DBG("contact_name: %s", contact_name);
+ return contact_name;
+}
+
+void list_hide_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ list_hide_popup_cb(data);
+}
+
+void list_edit_item_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_list_data *pListData = static_cast<ct_list_data *>(data);
+ list_hide_popup_cb(data);
+ pListData->child_ug = phone_launch_contact_edit_ug(pListData->ug, pListData->personId,
+ list_destroy_child_ug, pListData);
+}
+
+Elm_Genlist_Item_Class *list_create_class(const char *style, Elm_Gen_Item_Text_Get_Cb getText)
+{
+ PH_TRACE;
+ Elm_Genlist_Item_Class *itemClass = elm_genlist_item_class_new();
+ p_retvm_if(NULL == itemClass, NULL, "itemClass is null");
+
+ itemClass->item_style = style;
+ itemClass->func.text_get = getText;
+ itemClass->func.content_get = NULL;
+ itemClass->func.state_get = NULL;
+ itemClass->func.del = NULL;
+ return itemClass;
+}
+
+char *list_get_item_text_cb(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data, NULL, "data is null");
+ return strdup((const char *) data);
+}
+
+bool list_make_vcard(ct_list_data &pListData, char *filePath, int length)
+{
+ PH_TRACE;
+ p_retvm_if((NULL == pListData.genlist), FALSE, "pListData->genlist is null");
+
+ if (!ctui_list_make_vcard(pListData.personId, filePath, length))
+ {
+ ERR("detail_make_vcard() Failed");
+ if (pListData.win)
+ {
+ phone_show_popup(pListData.win, T_(CT_GET_TEXT_ERR,
+ CTTEXT_UNABLE_TO_SEND_NAME_CARDS), 1.5);
+ }
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void list_send_namecard_via_msg(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_list_data *pListData = static_cast<ct_list_data *>(data);
+ char filePath[FILENAME_MAX];
+
+ list_hide_popup_cb(pListData);
+ if(list_make_vcard(*pListData, filePath, FILENAME_MAX))
+ {
+ pListData->child_ug = ctui_msg_ug(pListData->ug, NULL,
+ filePath, list_destroy_child_ug, pListData);
+ }
+}
+
+void list_send_namecard_via_email(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_list_data *pListData = static_cast<ct_list_data *>(data);
+ char filePath[FILENAME_MAX];
+
+ list_hide_popup_cb(pListData);
+ if (list_make_vcard(*pListData, filePath, FILENAME_MAX))
+ {
+ service_h service;
+ Ecore_X_Window win_id = elm_win_xwindow_get(pListData->win);
+ service_create(&service);
+ service_set_operation(service, SERVICE_OPERATION_SEND);
+ service_set_uri(service, filePath);
+ service_set_app_id(service, EMAIL_COMPOSER_PKG);
+ service_add_extra_data(service, SERVICE_DATA_SUBJECT, CONTACTS_NAME_CARD);
+
+ service_set_window(service, win_id);
+ service_send_launch_request(service, NULL, NULL);
+ service_destroy(service);
+ }
+}
+
+void list_send_namecard_via_bluetooth(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_list_data *pListData = static_cast<ct_list_data *>(data);
+ char filePath[FILENAME_MAX];
+
+ list_hide_popup_cb(pListData);
+ if (list_make_vcard(*pListData, filePath, FILENAME_MAX))
+ {
+ pListData->child_ug = phone_launch_bluetooth_ug(pListData->ug,
+ filePath, list_destroy_child_ug, pListData);
+ }
+}
+
+void list_create_popup_with_cancel_button(ct_list_data &pListData, const char *label)
+{
+ PH_TRACE;
+
+ list_hide_popup_cb(&pListData);
+
+ Evas_Object *pPopup = elm_popup_add(pListData.navi);
+ p_retm_if(NULL == pPopup, "pPopup is null");
+ p_retm_if(NULL == label, "label is null");
+ pListData.popup = pPopup;
+ elm_object_style_set(pPopup, "content_no_vhpad");
+ elm_object_part_text_set(pPopup,TITLE_TEXT, label);
+ evas_object_size_hint_weight_set(pPopup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ Evas_Object *pCancelButton = elm_button_add(pPopup);
+ p_retm_if(NULL == pCancelButton, "pCancelButton is null");
+ elm_object_style_set(pCancelButton, "popup_button/default");
+ elm_object_text_set(pCancelButton, S_(PH_SYS_SK_CANCEL));
+ elm_object_part_content_set(pPopup, BUTTON1, pCancelButton);
+ evas_object_smart_callback_add(pCancelButton, CLICKED, list_hide_popup_cb, &pListData);
+
+ evas_object_show(pPopup);
+}
+
+void list_send_namecard_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_list_data *pListData = static_cast<ct_list_data *>(data);
+
+ list_create_popup_with_cancel_button(*pListData, SEND_NAMECARD);
+ Elm_Genlist_Item_Class *namecard_itc = list_create_class("1text/popup", list_get_item_text_cb);
+
+ Evas_Object *pGenlist = elm_genlist_add(pListData->popup);
+ p_retm_if(NULL == pGenlist, "pGenlist is null");
+ evas_object_size_hint_weight_set(pGenlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pGenlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ elm_genlist_item_append(pGenlist, namecard_itc, S_(PH_SYS_BODY_MESSAGE), NULL,
+ ELM_GENLIST_ITEM_NONE, list_send_namecard_via_msg, pListData);
+ elm_genlist_item_append(pGenlist, namecard_itc, S_(CT_SYS_BODY_EMAIL), NULL,
+ ELM_GENLIST_ITEM_NONE, list_send_namecard_via_email, pListData);
+ elm_genlist_item_append(pGenlist, namecard_itc, S_(CT_SYS_BODY_BLUETOOTH), NULL,
+ ELM_GENLIST_ITEM_NONE, list_send_namecard_via_bluetooth, pListData);
+
+ elm_object_content_set(pListData->popup, pGenlist);
+
+ elm_genlist_item_class_free(namecard_itc);
+}
+
+void list_radio_check_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_list_data *pListData = static_cast<ct_list_data *>(data);
+
+ int err = contacts_person_set_default_property(CONTACTS_PERSON_PROPERTY_NUMBER, pListData->personId,
+ pListData->radioGroupValue);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_person_set_default_property() Failed(%d)", err);
+
+ ecore_timer_add(POPUP_CLOSING_DELAY, list_hide_popup_cb, static_cast<void *>(pListData));
+}
+
+Evas_Object *list_create_radio_button(ct_list_data &pListData, contacts_record_h record,
+ int defaultNumberId)
+{
+ PH_TRACE;
+
+ int numberId = 0;
+ int type = 0;
+ char *number = NULL;
+ char buf[PH_TEXT_MAX_LEN + 1] = { 0, };
+
+ contacts_record_h recordNumber = record;
+
+ int err = contacts_record_get_int(recordNumber, _contacts_number.id, &numberId);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_get_int(recordNumber, _contacts_number.type, &type);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int() Failed(%d)", err);
+
+ ctui_get_number_type_str(recordNumber, type, buf, (PH_TEXT_MAX_LEN + 1));
+
+ err = contacts_record_get_str_p(recordNumber, _contacts_number.number, &number);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_str_p() Failed(%d)", err);
+
+ std::string numberAndType;
+ numberAndType.append(number);
+ numberAndType.append(" (");
+ numberAndType.append(buf);
+ numberAndType.append(")");
+
+ Evas_Object *pRadio = elm_radio_add(pListData.popup);
+ elm_object_text_set(pRadio, numberAndType.c_str());
+ elm_radio_state_value_set(pRadio, numberId);
+ elm_radio_value_pointer_set(pRadio, &pListData.radioGroupValue);
+ evas_object_size_hint_weight_set(pRadio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pRadio, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pRadio);
+ evas_object_smart_callback_add(pRadio, CHANGED, list_radio_check_cb, &pListData);
+ return pRadio;
+}
+
+void list_default_number_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+
+ ct_list_data *pListData = static_cast<ct_list_data *>(data);
+ contacts_record_h recordDefaultNumber = NULL;
+ int defaultNumberId = 0;
+ Eina_List *pCursor = NULL;
+ void *pVRecordNumber = NULL;
+ Evas_Object* pGroup = NULL;
+
+ list_create_popup_with_cancel_button(*pListData, DEFAULT_NUMBER);
+
+ Evas_Object *pScroller = elm_scroller_add(pListData->popup);
+ elm_scroller_policy_set(pScroller, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_AUTO);
+ evas_object_show (pScroller);
+
+ Evas_Object *pBox = elm_box_add(pScroller);
+ evas_object_size_hint_weight_set(pBox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pBox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_win_resize_object_add(pListData->popup, pBox);
+
+ int err = phone_cts_get_default_number(pListData->personId, &recordDefaultNumber);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "phone_cts_get_default_number() Failed(%d)", err);
+
+ err = contacts_record_get_int(recordDefaultNumber, _contacts_number.id, &defaultNumberId);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_destroy(recordDefaultNumber, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_destroy() Failed(%d)", err);
+
+ Eina_List *pListNumber = static_cast<Eina_List *>( evas_object_data_get(
+ pListData->genlist, NUMBER_LIST));
+ EINA_LIST_FOREACH(pListNumber, pCursor, pVRecordNumber)
+ {
+
+ Evas_Object * pRadio = list_create_radio_button(*pListData, static_cast<contacts_record_h>(pVRecordNumber),
+ defaultNumberId);
+
+ elm_box_pack_end(pBox, pRadio);
+ elm_radio_group_add(pRadio, pGroup);
+
+ if (!pGroup)
+ {
+ pGroup = pRadio;
+ elm_radio_value_set(pGroup, defaultNumberId);
+ }
+ }
+
+ elm_object_content_set(pScroller, pBox);
+ elm_object_content_set(pListData->popup, pScroller);
+ evas_object_show(pBox);
+}
+
+/**
+ * @brief Gets count of multiple child tables for contact record
+ * @param[in] contact_record Handle to record
+ * @return Count of records if success, max size_t value if failed
+ */
+static size_t ct_get_field_count(contacts_record_h contact_record)
+{
+ PH_TRACE;
+ size_t count(0);
+ size_t temp_count(0);
+ unsigned int array_of_ids[] =
+ {
+ _contacts_contact.name,
+ _contacts_contact.nickname,
+ _contacts_contact.company,//company
+ _contacts_contact.company,//job title
+ _contacts_contact.number,
+ _contacts_contact.email,
+ _contacts_contact.address,
+ _contacts_contact.messenger,
+ _contacts_contact.url,
+ _contacts_contact.relationship,
+ _contacts_contact.event,
+ _contacts_contact.note
+ };
+ if(contact_record)
+ {
+ size_t array_size = (sizeof(array_of_ids) / sizeof(unsigned int));
+ for(size_t i = 0; i < array_size; ++i)
+ {
+ if(contacts_record_get_child_record_count(contact_record, array_of_ids[i], &temp_count)
+ == CONTACTS_ERROR_NONE)
+ {
+ count += temp_count;
+ }
+ else
+ {
+ ERR("error getting child count");
+ count = -1;
+ break;
+ }
+ }
+ }
+ return count;
+}
+
+/**
+ * @brief Convert date as integer to string
+ * @remark The returned value must be destroyed with free by you
+ * @param[in] formatter Represent format of the date
+ * @param[in] date Date as integer
+ * @return new string on success, otherwise NULL
+ */
+static char* ct_convert_int_date_to_str(UDateFormat* formatter, int date)
+{
+ PH_TRACE;
+ char* result = NULL;
+ if(formatter)
+ {
+ int day, month, year;
+ day = date % 100;
+ month = (date % 10000) / 100;
+ year = date / 10000;
+ result = phone_get_datetime_str(formatter, year, month, day);
+ }
+ return result;
+}
+
+/**
+ * @brief Gets field "type" as string for multiple child tables
+ * @remark If type is custom, function return value from field "label"
+ * @remark The return value must not be destroyed by you
+ * @param[in] child_record Child record of contact table
+ * @param[in] type_field_id ID of field "type"
+ * @param[in] label_field_id ID of field "label"
+ * @param[in] table_type CT_GET_TEXT_NUM_TYPE, CT_GET_TEXT_EMAIL_TYPE etc
+ * @return Type as string on success, otherwise NULL
+ */
+static char* ct_get_type_as_str(contacts_record_h child_record, unsigned int type_field_id,
+ unsigned int label_field_id, int table_type)
+{
+ PH_TRACE;
+ const int custom_type = 1;
+ char* result = NULL;
+ int temp_type = 0;
+ bool is_custom_field(false);
+ char* temp_label = NULL;
+ if(child_record)
+ {
+ int type_of_field = 0;
+ if(contacts_record_get_int(child_record, type_field_id, &type_of_field)
+ == CONTACTS_ERROR_NONE)
+ {
+ switch(table_type)
+ {
+ case CT_GET_TEXT_NUM_TYPE:
+ {
+ for (temp_type = CTTEXT_TYPE_CUSTOM; temp_type <= CTTEXT_TYPE_OTHER; temp_type++)
+ {
+ if (type_of_field == phone_get_number_type_index(temp_type))
+ break;
+ }
+ is_custom_field = (CONTACTS_NUMBER_TYPE_CUSTOM == type_of_field);
+ break;
+ }
+ case CT_GET_TEXT_EMAIL_TYPE:
+ {
+ temp_type = ctui_get_email_type_index(type_of_field);
+ is_custom_field = (custom_type == temp_type);
+ break;
+ }
+ case CT_GET_TEXT_POSTAL_TYPE:
+ {
+ temp_type = phone_get_address_type_index(type_of_field);
+ is_custom_field = (custom_type == temp_type);
+ break;
+ }
+ case CT_GET_TEXT_WEBSITE_TYPE:
+ {
+ temp_type = phone_get_website_type_index(type_of_field);
+ is_custom_field = (custom_type == temp_type);
+ break;
+ }
+ case CT_GET_TEXT_IM_TYPE:
+ {
+ temp_type = type_of_field;
+ is_custom_field = (CONTACTS_MESSENGER_TYPE_CUSTOM == temp_type);
+ break;
+ }
+ case CT_GET_TEXT_RELATIONSHIP_TYPE:
+ {
+ temp_type = type_of_field;
+ is_custom_field = (CTTEXT_REL_CUSTOM == temp_type);
+ break;
+ }
+ case CT_GET_TEXT_EVENT_TYPE:
+ {
+ temp_type = type_of_field;
+ is_custom_field = (CONTACTS_EVENT_TYPE_CUSTOM == temp_type);
+ break;
+ }
+ default:
+ {
+ ERR("unknown type of table");
+ return NULL;
+ }
+ }
+ if( is_custom_field
+ && (contacts_record_get_str_p(child_record, label_field_id, &temp_label) == CONTACTS_ERROR_NONE)
+ && (temp_label)
+ && (*temp_label))
+ {
+ result = temp_label;
+ }
+ else
+ {
+ result = (char*)T_(table_type, temp_type);
+ }
+ }
+ }
+ return result;
+}
+
+/**
+ * @brief Gets string from one of child record of _contacts_contact table
+ * @remark The returned value must be destroyed with free by you
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[in] child_table_id ID of child table. E.g. _contacts_contact.number
+ * @param[in] record_index Index of record
+ * @param[in] str_field_id ID of field. E.g. _contacts_number.number
+ */
+static char* ct_get_str_from_child_record(ct_send_as_text_data* p_contact_text_data, unsigned int child_table_id,
+ int record_index, unsigned int str_field_id)
+{
+ PH_TRACE;
+ char* temp_str = NULL;
+ contacts_record_h child_record = NULL;
+ if(p_contact_text_data && p_contact_text_data->contact_record)
+ {
+ if(contacts_record_get_child_record_at_p(p_contact_text_data->contact_record, child_table_id, record_index, &child_record)
+ == CONTACTS_ERROR_NONE)
+ {
+ if(contacts_record_get_str(child_record, str_field_id, &temp_str)
+ != CONTACTS_ERROR_NONE)
+ {
+ free(temp_str);
+ temp_str = NULL;
+ }
+ }
+ }
+ return temp_str;
+}
+
+/**
+ * @brief Gets event as string from _contacts_event
+ * @remark The returned value must be destroyed with free by you
+ * @remark Some parameters are not using. Function interface just match p_get_str_from_child_record
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[in] child_table_id Not using.
+ * @param[in] record_index Index of record
+ * @param[in] field_id Not using.
+ */
+static char* ct_get_event_from_child_record(ct_send_as_text_data* p_contact_text_data, unsigned int child_table_id,
+ int record_index, unsigned int field_id)
+{
+ PH_TRACE;
+ char* result = NULL;
+ contacts_record_h child_record = NULL;
+ if(p_contact_text_data)
+ {
+ if(contacts_record_get_child_record_at_p(p_contact_text_data->contact_record, _contacts_contact.event, record_index, &child_record)
+ == CONTACTS_ERROR_NONE)
+ {
+ int temp_date = 0;
+ if(contacts_record_get_int(child_record, _contacts_event.date, &temp_date)
+ == CONTACTS_ERROR_NONE)
+ {
+ if(p_contact_text_data->formatter)
+ {
+ result = ct_convert_int_date_to_str(p_contact_text_data->formatter, temp_date);
+ }
+ }
+ }
+ }
+ return result;
+}
+
+/**
+ * @brief Gets address as string from _contacts_address
+ * @remark The returned value must be destroyed with free by you
+ * @remark Some parameters are not using. Function interface just match p_get_str_from_child_record
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[in] child_table_id Not using.
+ * @param[in] record_index Index of record
+ * @param[in] field_id Not using.
+ */
+static char* ct_get_address_from_child_record(ct_send_as_text_data* p_contact_text_data, unsigned int child_table_id,
+int record_index, unsigned int field_id)
+{
+ PH_TRACE;
+ char* result = NULL;
+ char* code = NULL;
+ char* extended = NULL;
+ char* postbox = NULL;
+ char* street = NULL;
+ char* locality = NULL;
+ char* region = NULL;
+ char* country = NULL;
+ contacts_record_h child_record = NULL;
+ if(p_contact_text_data)
+ {
+ if(contacts_record_get_child_record_at_p(p_contact_text_data->contact_record, _contacts_contact.address, record_index, &child_record)
+ == CONTACTS_ERROR_NONE)
+ {
+ if( contacts_record_get_str_p(child_record, _contacts_address.postal_code, &code) == CONTACTS_ERROR_NONE
+ && contacts_record_get_str_p(child_record, _contacts_address.extended, &extended) == CONTACTS_ERROR_NONE
+ && contacts_record_get_str_p(child_record, _contacts_address.postbox, &postbox) == CONTACTS_ERROR_NONE
+ && contacts_record_get_str_p(child_record, _contacts_address.street, &street) == CONTACTS_ERROR_NONE
+ && contacts_record_get_str_p(child_record, _contacts_address.locality, &locality) == CONTACTS_ERROR_NONE
+ && contacts_record_get_str_p(child_record, _contacts_address.region, &region) == CONTACTS_ERROR_NONE
+ && contacts_record_get_str_p(child_record, _contacts_address.country, &country) == CONTACTS_ERROR_NONE)
+ {
+ size_t size = SAFE_STRLEN(code) + SAFE_STRLEN(extended) + SAFE_STRLEN(postbox) + SAFE_STRLEN(street)
+ + SAFE_STRLEN(locality) + SAFE_STRLEN(region) + SAFE_STRLEN(country);
+ if(size > 0)
+ {
+ ++size;
+ result = (char*)calloc(size, sizeof(char));
+ snprintf(result, size, "%s%s%s%s%s%s%s%s%s%s%s%s%s",
+ SAFE_STR(code), STR_BLANK(code, extended), STR_BLANK(extended, postbox),
+ STR_BLANK(postbox, street), STR_BLANK(street, locality), STR_BLANK(locality, region), STR_BLANK(region, country));
+ }
+ }
+ }
+ }
+ return result;
+}
+
+/**
+ * @brief Fill contact data to @a p_text_as_data
+ * @param[in] child_table_id ID of child table. E.g. _contacts_contact.number
+ * @param[in] field_id ID of field. E.g. _contacts_number.number
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[in] str_getter Function receives the string data from the @a field_id field
+ * @param[out] p_current_index Current index of string with data in @a p_text_as_data structure
+ * return true if success, otherwise false
+ */
+static bool ct_fill_info_field_to_text_data(unsigned int child_table_id, unsigned int field_id,
+ ct_send_as_text_data* p_contact_text_data, p_get_str_from_child_record str_getter, size_t* p_current_index)
+{
+ PH_TRACE;
+ bool result(false);
+ char* temp_str = NULL;
+ unsigned int child_count = 0;
+ if(p_contact_text_data && str_getter)
+ {
+ if(contacts_record_get_child_record_count(p_contact_text_data->contact_record, child_table_id, &child_count)
+ == CONTACTS_ERROR_NONE)
+ {
+ if(0 == child_count)
+ {
+ result = true;
+ }
+ else
+ {
+ for(int i = 0; i < (int)child_count; ++i)
+ {
+ temp_str = (*str_getter)(p_contact_text_data, child_table_id, i, field_id);
+ if(temp_str && (*p_current_index < p_contact_text_data->fields_count))
+ {
+ p_contact_text_data->strings_of_data[*p_current_index] = temp_str;
+ ++(*p_current_index);
+ result = true;
+ }
+ else
+ {
+ free(temp_str);
+ result = false;
+ break;
+ }
+ }
+ }
+ }
+ }
+ return result;
+}
+
+/**
+ * @brief Fill names of "type" fields to @a p_text_as_data
+ * @param[in] child_table_id ID of child table. E.g. _contacts_contact.number
+ * @param[in] type_field_id ID of field "type"
+ * @param[in] label_field_id ID of field "label"
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[in] kind_of_table CT_GET_TEXT_NUM_TYPE, CT_GET_TEXT_EMAIL_TYPE etc
+ * @param[out] p_current_index Current index of string with names in @a p_text_as_data structure
+ * return true if success, otherwise false
+ */
+static bool ct_fill_name_for_text_data(unsigned int child_table_id, unsigned int type_field_id,
+ unsigned int label_field_id, ct_send_as_text_data* p_contact_text_data,
+ int kind_of_table, size_t* p_current_index)
+{
+ PH_TRACE;
+ bool result(false);
+ char* temp_str = NULL;
+ unsigned int child_count = 0;
+ contacts_record_h child_record = NULL;
+ if(p_contact_text_data && p_current_index)
+ {
+ if(contacts_record_get_child_record_count(p_contact_text_data->contact_record, child_table_id, &child_count)
+ == CONTACTS_ERROR_NONE)
+ {
+ if(0 == child_count)
+ {
+ result = true;
+ }
+ else
+ {
+ for(int i = 0; i < (int)child_count; ++i)
+ {
+ if(contacts_record_get_child_record_at_p(p_contact_text_data->contact_record, child_table_id, i, &child_record)
+ == CONTACTS_ERROR_NONE)
+ {
+ temp_str = ct_get_type_as_str(child_record, type_field_id, label_field_id, kind_of_table);
+ if(temp_str && (*p_current_index < p_contact_text_data->fields_count))
+ {
+ p_contact_text_data->field_names[*p_current_index] = strdup(temp_str);
+ ++(*p_current_index);
+ result = true;
+ }
+ else
+ {
+ result = false;
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ return result;
+}
+
+/**
+ * @brief Fill name of contact to @a p_text_as_data structure
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[out] p_current_name_index Current index of string with name of type
+ * @param[out] p_current_data_index Current index of string with info
+ * @return true if success, otherwise false
+ */
+static bool ct_fill_display_name(ct_send_as_text_data* p_contact_text_data, size_t* p_current_name_index, size_t* p_current_data_index)
+{
+ PH_TRACE;
+ if(p_contact_text_data && p_current_name_index && p_current_data_index)
+ {
+ char* temp_str = NULL;
+ if(contacts_record_get_str_p(p_contact_text_data->contact_record, _contacts_contact.display_name, &temp_str)
+ == CONTACTS_ERROR_NONE)
+ {
+ p_contact_text_data->strings_of_data[(*p_current_data_index)++] = strdup(temp_str);
+ }
+ if(*p_current_data_index > *p_current_name_index)
+ {
+ p_contact_text_data->field_names[(*p_current_name_index)++] = strdup(S_(CT_SYS_BODY_NAME));
+ }
+ }
+ return *p_current_name_index == *p_current_data_index;
+}
+
+/**
+ * @brief Fill nickname of contact to @a p_text_as_data structure
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[out] p_current_name_index Current index of string with name of type
+ * @param[out] p_current_data_index Current index of string with info
+ * @return true if success, otherwise false
+ */
+static bool ct_fill_nickname(ct_send_as_text_data* p_contact_text_data, size_t* p_current_name_index, size_t* p_current_data_index)
+{
+ PH_TRACE;
+ if(p_contact_text_data && p_current_name_index && p_current_data_index)
+ {
+ ct_fill_info_field_to_text_data(_contacts_contact.nickname, _contacts_nickname.name,
+ p_contact_text_data, ct_get_str_from_child_record, p_current_data_index);
+ if(*p_current_data_index > *p_current_name_index)
+ {
+ p_contact_text_data->field_names[(*p_current_name_index)++] = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_NICKNAME));
+ }
+ }
+ return *p_current_name_index == *p_current_data_index;
+}
+
+/**
+ * @brief Fill contact company name to @a p_text_as_data structure
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[out] p_current_name_index Current index of string with name of type
+ * @param[out] p_current_data_index Current index of string with info
+ * @return true if success, otherwise false
+ */
+static bool ct_fill_company(ct_send_as_text_data* p_contact_text_data, size_t* p_current_name_index, size_t* p_current_data_index)
+{
+ PH_TRACE;
+ if(p_contact_text_data && p_current_name_index && p_current_data_index)
+ {
+ ct_fill_info_field_to_text_data(_contacts_contact.company, _contacts_company.name,
+ p_contact_text_data, ct_get_str_from_child_record, p_current_data_index);
+ if(*p_current_data_index > *p_current_name_index)
+ {
+ p_contact_text_data->field_names[(*p_current_name_index)++] = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_COMPANY));
+ }
+ }
+ return *p_current_name_index == *p_current_data_index;
+}
+
+/**
+ * @brief Fill job title of contact to @a p_text_as_data structure
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[out] p_current_name_index Current index of string with name of type
+ * @param[out] p_current_data_index Current index of string with info
+ * @return true if success, otherwise false
+ */
+static bool ct_fill_job_title(ct_send_as_text_data* p_contact_text_data, size_t* p_current_name_index, size_t* p_current_data_index)
+{
+ PH_TRACE;
+ if(p_contact_text_data && p_current_name_index && p_current_data_index)
+ {
+ ct_fill_info_field_to_text_data(_contacts_contact.company, _contacts_company.job_title,
+ p_contact_text_data, ct_get_str_from_child_record, p_current_data_index);
+ if(*p_current_data_index > *p_current_name_index)
+ {
+ p_contact_text_data->field_names[(*p_current_name_index)++] = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_JOB_TITLE));
+ }
+ }
+ return *p_current_name_index == *p_current_data_index;
+}
+
+/**
+ * @brief Fill numbers of contact to @a p_text_as_data structure
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[out] p_current_name_index Current index of string with name of type
+ * @param[out] p_current_data_index Current index of string with info
+ * @return true if success, otherwise false
+ */
+static bool ct_fill_number(ct_send_as_text_data* p_contact_text_data, size_t* p_current_name_index, size_t* p_current_data_index)
+{
+ PH_TRACE;
+ if(p_contact_text_data && p_current_name_index && p_current_data_index)
+ {
+ ct_fill_name_for_text_data(_contacts_contact.number, _contacts_number.type, _contacts_number.label,
+ p_contact_text_data, CT_GET_TEXT_NUM_TYPE, p_current_name_index);
+ ct_fill_info_field_to_text_data(_contacts_contact.number, _contacts_number.number,
+ p_contact_text_data, ct_get_str_from_child_record, p_current_data_index);
+ }
+ return *p_current_name_index == *p_current_data_index;
+}
+
+/**
+ * @brief Fill mails of contact to @a p_text_as_data structure
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[out] p_current_name_index Current index of string with name of type
+ * @param[out] p_current_data_index Current index of string with info
+ * @return true if success, otherwise false
+ */
+static bool ct_fill_email(ct_send_as_text_data* p_contact_text_data, size_t* p_current_name_index, size_t* p_current_data_index)
+{
+ PH_TRACE;
+ if(p_contact_text_data && p_current_name_index && p_current_data_index)
+ {
+ ct_fill_name_for_text_data(_contacts_contact.email, _contacts_email.type, _contacts_email.label,
+ p_contact_text_data, CT_GET_TEXT_EMAIL_TYPE, p_current_name_index);
+ ct_fill_info_field_to_text_data(_contacts_contact.email, _contacts_email.email,
+ p_contact_text_data, ct_get_str_from_child_record, p_current_data_index);
+ }
+ return *p_current_name_index == *p_current_data_index;
+}
+
+/**
+ * @brief Fill addresses of contact to @a p_text_as_data structure
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[out] p_current_name_index Current index of string with name of type
+ * @param[out] p_current_data_index Current index of string with info
+ * @return true if success, otherwise false
+ */
+static bool ct_fill_address(ct_send_as_text_data* p_contact_text_data, size_t* p_current_name_index, size_t* p_current_data_index)
+{
+ PH_TRACE;
+ if(p_contact_text_data && p_current_name_index && p_current_data_index)
+ {
+ ct_fill_name_for_text_data(_contacts_contact.address, _contacts_address.type, _contacts_address.label,
+ p_contact_text_data, CT_GET_TEXT_POSTAL_TYPE, p_current_name_index);
+ ct_fill_info_field_to_text_data(_contacts_contact.address, 0,
+ p_contact_text_data, ct_get_address_from_child_record, p_current_data_index);
+ }
+ return *p_current_name_index == *p_current_data_index;
+}
+
+/**
+ * @brief Fill instant messengers of contact to @a p_text_as_data structure
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[out] p_current_name_index Current index of string with name of type
+ * @param[out] p_current_data_index Current index of string with info
+ * @return true if success, otherwise false
+ */
+static bool ct_fill_instant_messenger(ct_send_as_text_data* p_contact_text_data, size_t* p_current_name_index, size_t* p_current_data_index)
+{
+ PH_TRACE;
+ if(p_contact_text_data && p_current_name_index && p_current_data_index)
+ {
+ ct_fill_name_for_text_data(_contacts_contact.messenger, _contacts_messenger.type, _contacts_messenger.label,
+ p_contact_text_data, CT_GET_TEXT_IM_TYPE, p_current_name_index);
+ ct_fill_info_field_to_text_data(_contacts_contact.messenger, _contacts_messenger.im_id,
+ p_contact_text_data, ct_get_str_from_child_record, p_current_data_index);
+ }
+ return *p_current_name_index == *p_current_data_index;
+}
+
+/**
+ * @brief Fill websites of contact to @a p_text_as_data structure
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[out] p_current_name_index Current index of string with name of type
+ * @param[out] p_current_data_index Current index of string with info
+ * @return true if success, otherwise false
+ */
+static bool ct_fill_website(ct_send_as_text_data* p_contact_text_data, size_t* p_current_name_index, size_t* p_current_data_index)
+{
+ PH_TRACE;
+ if(p_contact_text_data && p_current_name_index && p_current_data_index)
+ {
+ ct_fill_name_for_text_data(_contacts_contact.url, _contacts_url.type, _contacts_url.label,
+ p_contact_text_data, CT_GET_TEXT_WEBSITE_TYPE, p_current_name_index);
+ ct_fill_info_field_to_text_data(_contacts_contact.url, _contacts_url.url,
+ p_contact_text_data, ct_get_str_from_child_record, p_current_data_index);
+ }
+ return *p_current_name_index == *p_current_data_index;
+}
+
+/**
+ * @brief Fill relationships of contact to @a p_text_as_data structure
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[out] p_current_name_index Current index of string with name of type
+ * @param[out] p_current_data_index Current index of string with info
+ * @return true if success, otherwise false
+ */
+static bool ct_fill_relationship(ct_send_as_text_data* p_contact_text_data, size_t* p_current_name_index, size_t* p_current_data_index)
+{
+ PH_TRACE;
+ if(p_contact_text_data && p_current_name_index && p_current_data_index)
+ {
+ ct_fill_name_for_text_data(_contacts_contact.relationship, _contacts_relationship.type, _contacts_relationship.label,
+ p_contact_text_data, CT_GET_TEXT_RELATIONSHIP_TYPE, p_current_name_index);
+ ct_fill_info_field_to_text_data(_contacts_contact.relationship, _contacts_relationship.name,
+ p_contact_text_data, ct_get_str_from_child_record, p_current_data_index);
+ }
+ return *p_current_name_index == *p_current_data_index;
+}
+
+/**
+ * @brief Fill events of contact to @a p_text_as_data structure
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[out] p_current_name_index Current index of string with name of type
+ * @param[out] p_current_data_index Current index of string with info
+ * @return true if success, otherwise false
+ */
+static bool ct_fill_event(ct_send_as_text_data* p_contact_text_data, size_t* p_current_name_index, size_t* p_current_data_index)
+{
+ PH_TRACE;
+ if(p_contact_text_data && p_current_name_index && p_current_data_index)
+ {
+ ct_fill_name_for_text_data(_contacts_contact.event, _contacts_event.type, _contacts_event.label,
+ p_contact_text_data, CT_GET_TEXT_EVENT_TYPE, p_current_name_index);
+ ct_fill_info_field_to_text_data(_contacts_contact.event, 0,
+ p_contact_text_data, ct_get_event_from_child_record, p_current_data_index);
+ }
+ return *p_current_name_index == *p_current_data_index;
+}
+
+/**
+ * @brief Fill note of contact to @a p_text_as_data structure
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @param[out] p_current_name_index Current index of string with name of type
+ * @param[out] p_current_data_index Current index of string with info
+ * @return true if success, otherwise false
+ */
+static bool ct_fill_note(ct_send_as_text_data* p_contact_text_data, size_t* p_current_name_index, size_t* p_current_data_index)
+{
+ PH_TRACE;
+ if(p_contact_text_data && p_current_name_index && p_current_data_index)
+ {
+ ct_fill_info_field_to_text_data(_contacts_contact.note, _contacts_note.note,
+ p_contact_text_data, ct_get_str_from_child_record, p_current_data_index);
+ if(*p_current_data_index > *p_current_name_index)
+ {
+ p_contact_text_data->field_names[(*p_current_name_index)++] = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_NOTE));
+ }
+ }
+ return *p_current_name_index == *p_current_data_index;
+}
+
+/**
+ * @brief Fill contact information as text to @a p_text_as_data structure
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * return true if at least one field filled, otherwise false
+ */
+static bool ct_fill_as_text(ct_send_as_text_data* p_contact_text_data)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == p_contact_text_data, false, "p_contact_text_data is null");
+ size_t temp_name_index(0);
+ size_t temp_data_index(0);
+ size_t current_name_index(0);
+ size_t current_data_index(0);
+ ct_fill_function* fill_functions[] =
+ {
+ ct_fill_display_name,
+ ct_fill_nickname,
+ ct_fill_company,
+ ct_fill_job_title,
+ ct_fill_number,
+ ct_fill_email,
+ ct_fill_address,
+ ct_fill_instant_messenger,
+ ct_fill_website,
+ ct_fill_relationship,
+ ct_fill_event,
+ ct_fill_note
+ };
+ size_t functions_count = (sizeof(fill_functions) / sizeof(ct_fill_function*));
+ for(size_t i = 0; i < functions_count; ++i)
+ {
+ temp_name_index = current_name_index;
+ temp_data_index = current_data_index;
+ if((*fill_functions[i])(p_contact_text_data, &temp_name_index, &temp_data_index))
+ {
+ current_name_index = temp_name_index;
+ current_data_index = temp_data_index;
+ }
+ }
+ return (p_contact_text_data->fields_count > 0);
+}
+
+/**
+ * @brief Gets contact record
+ * @param[in] id ID of contact
+ * @return handle to record if success, otherwise false
+ */
+static contacts_record_h ct_get_contact_record_by_id(unsigned int id)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ if(contacts_db_get_record(_contacts_contact._uri, id, &record)
+ != CONTACTS_ERROR_NONE)
+ {
+ ERR("error getting contact record");
+ record = NULL;
+ }
+ return record;
+}
+
+/**
+ * @brief Free array of strings and assign a NULL value to @a ptr
+ * @param[in] ptr Pointer to array of arrays
+ * @param[in] size Size of array
+ */
+static void ct_free_array_of_strings(char** ptr, size_t size)
+{
+ PH_TRACE;
+ for(size_t i = 0; i < size; ++i)
+ {
+ free(ptr[i]);
+ }
+ free(ptr);
+}
+
+/**
+ * @brief Destroy all data in @a p_text_as_data structure
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ */
+static void ct_clear_contacts_text_data(ct_send_as_text_data* p_contact_text_data)
+{
+ PH_TRACE;
+ p_retm_if(NULL == p_contact_text_data, "p_contact_text_data is null");
+ p_contact_text_data->contact_id = 0;
+ if(p_contact_text_data->contact_record)
+ {
+ if(contacts_record_destroy(p_contact_text_data->contact_record, true) != CONTACTS_ERROR_NONE)
+ {
+ ERR("Freeing contact_record failed");
+ }
+ p_contact_text_data->contact_record = NULL;
+ }
+ ct_free_array_of_strings(p_contact_text_data->field_names, p_contact_text_data->fields_count);
+ p_contact_text_data->field_names = NULL;
+ ct_free_array_of_strings(p_contact_text_data->strings_of_data, p_contact_text_data->fields_count);
+ p_contact_text_data->strings_of_data = NULL;
+ free(p_contact_text_data->checked_items);
+ p_contact_text_data->checked_items = NULL;
+ phone_destroy_confirm_popup_data(p_contact_text_data->p_popup_data);
+ p_contact_text_data->p_popup_data = NULL;
+ if(p_contact_text_data->genlist)
+ {
+ if(p_contact_text_data->box)
+ {
+ elm_box_unpack(p_contact_text_data->box, p_contact_text_data->genlist);
+ }
+ elm_genlist_clear(p_contact_text_data->genlist);
+ evas_object_del(p_contact_text_data->genlist);
+ p_contact_text_data->genlist = NULL;
+ }
+ if(p_contact_text_data->genlist_item_class)
+ {
+ elm_genlist_item_class_free(p_contact_text_data->genlist_item_class);
+ p_contact_text_data->genlist_item_class = NULL;
+ }
+ if(p_contact_text_data->select_all_layout)
+ {
+ if(p_contact_text_data->box)
+ {
+ elm_box_unpack(p_contact_text_data->box, p_contact_text_data->select_all_layout);
+ }
+ evas_object_del(p_contact_text_data->select_all_layout);
+ p_contact_text_data->select_all_layout = NULL;
+ }
+ if(p_contact_text_data->box)
+ {
+ evas_object_del(p_contact_text_data->box);
+ p_contact_text_data->box = NULL;
+ }
+ if(p_contact_text_data->formatter)
+ {
+ udat_close(p_contact_text_data->formatter);
+ p_contact_text_data->formatter = NULL;
+ }
+ p_contact_text_data->fields_count = 0;
+ p_contact_text_data->ug = NULL;
+ p_contact_text_data->child_ug = NULL;
+}
+
+void ct_destroy_contact_as_text_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "p_popup is null");
+ ct_clear_contacts_text_data((ct_send_as_text_data*)data);
+}
+
+/**
+ * @brief Merge two arrays of strings in one string
+ * @remark return value must be destroy with free by you
+ * @param[in] lhs Left hand side array of strings
+ * @param[in] rhs Right hand side array of strings
+ * @param[in] array_size Size of each array
+ * @param[in] separator Separator between each merged strings (optional)
+ * @param[in] string_picking_pattern Array of boolean values to pick certain strings (optional)
+ * @return merged string on success, otherwise NULL
+ */
+static char* ct_merge_two_arrays_of_strings(char** lhs, char** rhs, size_t arrays_size,
+ const char* separator = NULL, bool* string_picking_pattern = NULL)
+{
+ PH_TRACE;
+ char* result = NULL;
+ p_retvm_if(!lhs || !rhs, NULL, "some of arrays is NULL");
+ size_t size_to_reserve(0);
+ for(size_t i = 0; i < arrays_size; ++i)
+ {
+ if( (!string_picking_pattern)
+ || (string_picking_pattern && string_picking_pattern[i]))
+ {
+ size_t temp_size = SAFE_STRLEN(lhs[i]) + SAFE_STRLEN(rhs[i]) + SAFE_STRLEN(separator);
+ if(temp_size > 0)
+ {
+ size_to_reserve += (temp_size + strlen("\n"));
+ }
+ }
+ }
+ if(size_to_reserve > 0)
+ {
+ ++size_to_reserve;
+ result = (char*)calloc(size_to_reserve, sizeof(char));
+ for(size_t i = 0; i < arrays_size; ++i)
+ {
+ if( (!string_picking_pattern)
+ || (string_picking_pattern && string_picking_pattern[i]))
+ {
+ if(lhs[i] && rhs[i])
+ {
+ strcat(result, lhs[i]);
+ if(separator)
+ {
+ strcat(result, separator);
+ }
+ strcat(result, rhs[i]);
+ strcat(result, "\n");
+ }
+ }
+ }
+ }
+ return result;
+}
+
+void ct_destroy_ug_cb(void* data)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ui_gadget_h* ug = (ui_gadget_h*)data;
+ p_retm_if(NULL == *ug, "ug is null");
+ ug_destroy(*ug);
+ *ug = NULL;
+}
+
+void ct_send_contact_as_text_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ const char* separator = " ";
+ p_retm_if(NULL == data, "data is null");
+ ct_send_as_text_data* p_contact_text_data = (ct_send_as_text_data*)data;
+ p_retm_if(NULL == p_contact_text_data->p_popup_data->popup, "popup is null");
+
+ char* message_text = ct_merge_two_arrays_of_strings(p_contact_text_data->field_names, p_contact_text_data->strings_of_data,
+ p_contact_text_data->fields_count, separator, p_contact_text_data->checked_items);
+ p_contact_text_data->child_ug = ctui_predefined_body_msg_ug(p_contact_text_data->ug, NULL, 0, message_text,
+ ct_destroy_ug_cb, &p_contact_text_data->child_ug);
+ free(message_text);
+
+ ct_destroy_contact_as_text_cb(p_contact_text_data, NULL, NULL);
+}
+
+/**
+ * @brief Create and initiate ct_confirm_popup_data structure
+ * @remark return value must be destroy with phone_destroy_confirm_popup_data by you
+ * @param[in] parent Parent for popup
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @return pointer to newly created ct_confirm_popup_data structure if success, otherwise NULL
+ */
+static ct_confirm_popup_data* ct_create_popup_data_for_send_contact_as_text(Evas_Object* parent, ct_send_as_text_data* p_contact_text_data)
+{
+ PH_TRACE;
+ bool isOk(false);
+ ct_confirm_popup_data* inner_popup_as_data = NULL;
+ inner_popup_as_data = (ct_confirm_popup_data*)calloc(1, sizeof(ct_confirm_popup_data));
+ if(p_contact_text_data && inner_popup_as_data)
+ {
+ inner_popup_as_data->parent = parent;
+ inner_popup_as_data->popup = NULL;
+ inner_popup_as_data->button1 = NULL;
+ inner_popup_as_data->button2 = NULL;
+ inner_popup_as_data->popup_label = phone_get_contact_name(p_contact_text_data->contact_id);
+ inner_popup_as_data->button1_label = strdup(S_(PH_SYS_SK_OK));
+ inner_popup_as_data->button2_label = strdup(S_(PH_SYS_SK_CANCEL));
+ if( inner_popup_as_data->popup_label
+ && inner_popup_as_data->button1_label
+ && inner_popup_as_data->button2_label)
+ {
+ inner_popup_as_data->button1_cb = ct_send_contact_as_text_cb;
+ inner_popup_as_data->button2_cb = ct_destroy_contact_as_text_cb;
+ inner_popup_as_data->button1_data = p_contact_text_data;
+ inner_popup_as_data->button2_data = p_contact_text_data;
+ isOk = true;
+ }
+ }
+ if(!isOk)
+ {
+ phone_destroy_confirm_popup_data(inner_popup_as_data);
+ }
+ return inner_popup_as_data;
+}
+
+static char* ct_get_text_as_data_item_text_cb(void* data, Evas_Object* obj, const char* part)
+{
+ PH_TRACE;
+ char* result = NULL;
+ p_retvm_if(NULL == data, NULL, "invalid data");
+ ct_send_as_text_with_additional_info* p_additional_info = (ct_send_as_text_with_additional_info*)data;
+ p_retvm_if(NULL == p_additional_info->p_contact_text_data, NULL, "text as data is null");
+ p_retvm_if(NULL == p_additional_info->p_contact_text_data->field_names, NULL, "names is null");
+ p_retvm_if(NULL == p_additional_info->p_contact_text_data->strings_of_data, NULL, "strings of data is null");
+ p_retvm_if(p_additional_info->p_contact_text_data->fields_count < p_additional_info->current_index, NULL, "incorrect current index");
+ if(0 == strcmp(part, "elm.text.1"))
+ {
+ result = strdup(p_additional_info->p_contact_text_data->strings_of_data[p_additional_info->current_index]);
+ }
+ else if(0 == strcmp(part, "elm.text.2"))
+ {
+ result = strdup(p_additional_info->p_contact_text_data->field_names[p_additional_info->current_index]);
+ }
+ return result;
+}
+
+static Evas_Object* ct_get_text_as_data_item_content_cb(void* data, Evas_Object* obj,
+ const char* part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data, NULL, "data is null");
+ ct_send_as_text_with_additional_info* p_additional_info = (ct_send_as_text_with_additional_info*)data;
+ p_retvm_if(NULL == p_additional_info->p_contact_text_data, NULL, "text as data is null");
+ p_retvm_if(NULL == p_additional_info->p_contact_text_data->checked_items, NULL, "checked items is null");
+ p_retvm_if(NULL == obj, NULL, "item is null");
+ Eina_Bool checked = p_additional_info->p_contact_text_data->checked_items[p_additional_info->current_index];
+ Evas_Object *check = NULL;
+
+ if(0 == strcmp(part, "elm.edit.icon.1"))
+ {
+ check = elm_check_add(obj);
+ if(check)
+ {
+ evas_object_propagate_events_set(check, EINA_TRUE);
+ p_retvm_if(NULL == check, NULL, "elm_check_add() return NULL");
+ elm_check_state_pointer_set(check, &checked);
+ }
+ }
+ return check;
+}
+
+void ct_data_deletion_func_cb(void *data, Evas_Object *obj)
+{
+ PH_TRACE;
+ free(data);
+}
+
+void ct_contact_as_text_select_all_cb(void *data, Eina_Bool checked)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_send_as_text_data* p_contact_text_data = (ct_send_as_text_data*)data;
+ p_retm_if(NULL == p_contact_text_data->checked_items, "checked items is null");
+ p_retm_if(NULL == p_contact_text_data->genlist, "genlist is null");
+ for(size_t i = 0; i < p_contact_text_data->fields_count; ++i)
+ {
+ p_contact_text_data->checked_items[i] = checked;
+ }
+ elm_genlist_realized_items_update(p_contact_text_data->genlist);
+ if( p_contact_text_data->p_popup_data
+ && p_contact_text_data->p_popup_data->button1)
+ {
+ elm_object_disabled_set(p_contact_text_data->p_popup_data->button1, !checked);
+ }
+}
+
+/**
+ * @brief Initialise popup for ct_send_as_text_data structure
+ * @param[in] parent Parent for popup
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @return true if success, otherwise false
+ */
+static bool ct_init_popup_for_contact_text_data(Evas_Object* parent, ct_send_as_text_data* p_contact_text_data)
+{
+ PH_TRACE;
+ bool result(false);
+ p_retvm_if(NULL == parent, false, "parent is null");
+ p_retvm_if(NULL == p_contact_text_data, false, "text data is null");
+ ct_confirm_popup_data* p_popup_data = ct_create_popup_data_for_send_contact_as_text(parent, p_contact_text_data);
+ if(p_popup_data)
+ {
+ if(phone_fill_confirm_popup_data(p_popup_data))
+ {
+ elm_object_disabled_set(p_popup_data->button1, EINA_TRUE);
+ p_contact_text_data->genlist_item_class = phone_create_item_class("2text.3/popup",
+ NULL, "edit_default",
+ ct_get_text_as_data_item_text_cb, ct_get_text_as_data_item_content_cb, NULL, ct_data_deletion_func_cb);
+ if(p_contact_text_data->genlist_item_class)
+ {
+ p_contact_text_data->box = elm_box_add(p_popup_data->popup);
+ if(p_contact_text_data->box)
+ {
+ elm_object_style_set(p_popup_data->popup, "content_no_vhpad");
+ elm_object_content_set(p_popup_data->popup,
+ p_contact_text_data->box);
+ p_contact_text_data->select_all_layout = phone_create_select_all(p_contact_text_data->box,
+ S_(PH_SYS_BODY_SELECT_ALL), ct_contact_as_text_select_all_cb, p_contact_text_data);
+ if(p_contact_text_data->select_all_layout)
+ {
+ evas_object_size_hint_align_set(p_contact_text_data->select_all_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(p_contact_text_data->box, p_contact_text_data->select_all_layout);
+ p_contact_text_data->genlist = elm_genlist_add(p_contact_text_data->box);
+ if(p_contact_text_data->genlist)
+ {
+ evas_object_size_hint_weight_set(p_contact_text_data->genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(p_contact_text_data->genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(p_contact_text_data->box, p_contact_text_data->genlist);
+ evas_object_show(p_contact_text_data->box);
+ evas_object_show(p_contact_text_data->select_all_layout);
+ evas_object_show(p_contact_text_data->genlist);
+ p_contact_text_data->p_popup_data = p_popup_data;
+ result = true;
+ }
+ }
+ }
+ }
+ }
+ }
+ if(!result)
+ {
+ ERR("ct_init_visual_part_for_text_as_data failed");
+ }
+ return result;
+}
+
+/**
+ * @brief Initialise @a p_text_as_data structure
+ * @remark returned @a p_text_as_data structure must be destroyed with ct_clear_contacts_text_data by you
+ * @param[in] id ID of contact
+ * @param[in] parent Parent for popup
+ * @param[in] current_ug Current user gadget
+ * @param[out] p_contact_text_data Pointer to structure with data of contact
+ * return true if success, otherwise false
+ */
+static bool ct_init_text_as_data(int id, Evas_Object* parent, ui_gadget_h current_ug, ct_send_as_text_data** p_contact_text_data)
+{
+ PH_TRACE;
+ bool result(false);
+ ct_send_as_text_data* inner_contact_text_data = NULL;
+ inner_contact_text_data = (ct_send_as_text_data*)calloc(1, sizeof(ct_send_as_text_data));
+ inner_contact_text_data->contact_id = id;
+ if(inner_contact_text_data)
+ {
+ inner_contact_text_data->contact_record = ct_get_contact_record_by_id(id);
+ if(inner_contact_text_data->contact_record)
+ {
+ inner_contact_text_data->fields_count = ct_get_field_count(inner_contact_text_data->contact_record);
+ if(inner_contact_text_data->fields_count > 0)
+ {
+ inner_contact_text_data->field_names = (char**)calloc(inner_contact_text_data->fields_count, sizeof(char*));
+ inner_contact_text_data->strings_of_data = (char**)calloc(inner_contact_text_data->fields_count, sizeof(char*));
+ inner_contact_text_data->checked_items = (bool*) calloc(inner_contact_text_data->fields_count, sizeof(bool));
+ if( inner_contact_text_data->field_names
+ && inner_contact_text_data->strings_of_data
+ && inner_contact_text_data->checked_items)
+ {
+ inner_contact_text_data->formatter = phone_init_time_formatter();
+ if(inner_contact_text_data->formatter)
+ {
+ if(parent)
+ {
+ if(ct_init_popup_for_contact_text_data(parent, inner_contact_text_data))
+ {
+ inner_contact_text_data->ug = current_ug;
+ inner_contact_text_data->child_ug = NULL;
+ result = true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if(result)
+ {
+ if(*p_contact_text_data)
+ {
+ free(*p_contact_text_data);
+ }
+ *p_contact_text_data = inner_contact_text_data;
+ }
+ else
+ {
+ ERR("Initialising text_as_data failed");
+ ct_clear_contacts_text_data(inner_contact_text_data);
+ }
+ return result;
+}
+
+/**
+ * @brief Concatenate @a lhs and @a rhs and return a newly allocated string
+ * @remark Returned value must be destroyed with free by you
+ * @param[in] lhs Lhs string
+ * @param[in] rhs Rhs string
+ * @param[in] separator Separator between strings (optional)
+ *
+ */
+static char* ct_concatenate_strings(const char* lhs, const char* rhs, const char* separator = NULL)
+{
+ PH_TRACE;
+ char* result = NULL;
+ p_retvm_if(!lhs || !rhs, NULL, "some of strings is NULL");
+ size_t strings_size = strlen(lhs) + strlen(rhs) + SAFE_STRLEN(separator);
+ if(strings_size > 0)
+ {
+ ++strings_size;
+ result = (char*)calloc(strings_size, sizeof(char));
+ strcpy(result, lhs);
+ if(separator)
+ {
+ strcat(result, separator);
+ }
+ strcat(result, rhs);
+ }
+ return result;
+}
+
+/**
+ * @brief Checks whether any item checked
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @return true if any item checked, otherwise false
+ */
+static bool ct_is_any_contact_item_checked(ct_send_as_text_data* p_contact_text_data)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == p_contact_text_data, false, "text data is null");
+ bool result(false);
+ for(size_t i = 0; i < p_contact_text_data->fields_count; ++i)
+ {
+ result = p_contact_text_data->checked_items[i];
+ if(result)
+ {
+ break;
+ }
+ }
+ return result;
+}
+
+/**
+ * @brief Checks whether all item checked
+ * @param[in] p_contact_text_data Pointer to structure with data of contact
+ * @return true if all item checked, otherwise false
+ */
+static bool ct_is_all_contact_item_checked(ct_send_as_text_data* p_contact_text_data)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == p_contact_text_data, false, "text data is null");
+ bool result(false);
+ for(size_t i = 0; i < p_contact_text_data->fields_count; ++i)
+ {
+ result = p_contact_text_data->checked_items[i];
+ if(!result)
+ {
+ break;
+ }
+ }
+ return result;
+}
+
+/**
+ * @brief Update state of @a select_all_layout
+ * @param[in] select_all_layout Layout with check and label
+ * @param[in] checked New state for check in @a select_all_layout
+ */
+static void ct_update_select_all_state(Evas_Object* select_all_layout, bool checked)
+{
+ if (select_all_layout)
+ {
+ Evas_Object *check = elm_object_part_content_get(select_all_layout, "elm.icon");
+ if (check)
+ {
+ elm_check_state_set(check, checked);
+ }
+ }
+}
+
+void ct_send_as_text_genlist_item_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ p_retm_if(NULL == event_info, "event_info is NULL");
+ Elm_Object_Item* item = (Elm_Object_Item*)event_info;
+ ct_send_as_text_with_additional_info* p_additional_info =
+ (ct_send_as_text_with_additional_info*)data;
+ p_retm_if(NULL == p_additional_info->p_contact_text_data, "text data is null");
+ p_retm_if(p_additional_info->p_contact_text_data->fields_count
+ < p_additional_info->current_index, "incorrect current index");
+ p_retm_if(NULL == p_additional_info->p_contact_text_data->select_all_layout, "select all layout is null");
+
+ if( p_additional_info->p_contact_text_data
+ && p_additional_info->p_contact_text_data->fields_count > p_additional_info->current_index
+ && p_additional_info->p_contact_text_data->checked_items)
+ {
+ p_additional_info->p_contact_text_data->checked_items[p_additional_info->current_index] =
+ !p_additional_info->p_contact_text_data->checked_items[p_additional_info->current_index];
+ }
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ elm_genlist_item_fields_update(item, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+
+ bool select_all_checked = ct_is_all_contact_item_checked(p_additional_info->p_contact_text_data);
+ ct_update_select_all_state(p_additional_info->p_contact_text_data->select_all_layout, select_all_checked);
+ bool is_any_item_checked = ct_is_any_contact_item_checked(p_additional_info->p_contact_text_data);
+ if( p_additional_info->p_contact_text_data->p_popup_data
+ && p_additional_info->p_contact_text_data->p_popup_data->button1)
+ {
+ elm_object_disabled_set(p_additional_info->p_contact_text_data->p_popup_data->button1, !is_any_item_checked);
+ }
+}
+
+static bool ct_fill_genlist(ct_send_as_text_data* p_contact_text_data)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == p_contact_text_data, false, "p_text_as_data is null");
+ bool result(false);
+ if(p_contact_text_data->genlist && p_contact_text_data->genlist_item_class)
+ {
+ for(size_t i = 0; i < p_contact_text_data->fields_count; ++i)
+ {
+ ct_send_as_text_with_additional_info* p_send_as_text_additional_info =
+ (ct_send_as_text_with_additional_info*)malloc(sizeof(ct_send_as_text_with_additional_info));
+ if(p_send_as_text_additional_info)
+ {
+ p_send_as_text_additional_info->current_index = i;
+ p_send_as_text_additional_info->p_contact_text_data = p_contact_text_data;
+
+ result = (elm_genlist_item_append(p_contact_text_data->genlist, p_contact_text_data->genlist_item_class,
+ p_send_as_text_additional_info, NULL, ELM_GENLIST_ITEM_NONE,
+ ct_send_as_text_genlist_item_cb, p_send_as_text_additional_info) != NULL);
+ if(!result)
+ {
+ break;
+ }
+ }
+ }
+ }
+ return result;
+}
+
+void ct_process_send_contact_as_text(int contact_id, int person_id, Evas_Object* navi, ui_gadget_h ug, ui_gadget_h* p_child_ug)
+{
+ PH_TRACE;
+ p_retm_if(NULL == p_child_ug, "p_child_ug is null");
+ if(*p_child_ug)
+ {
+ ct_destroy_ug_cb(p_child_ug);
+ }
+ ct_send_as_text_data* p_contact_text_data = NULL;
+ if(ct_init_text_as_data(contact_id, navi, ug, &p_contact_text_data))
+ {
+ if(ct_fill_as_text(p_contact_text_data))
+ {
+ if(p_contact_text_data->fields_count == 1)
+ {
+
+ const char* separator = " ";
+ char* message_text = ct_concatenate_strings(p_contact_text_data->field_names[0], p_contact_text_data->strings_of_data[0], separator);
+ *p_child_ug = ctui_predefined_body_msg_ug(ug, NULL, person_id, message_text,
+ ct_destroy_ug_cb, p_child_ug);
+ free(message_text);
+ }
+ else
+ {
+ if(p_contact_text_data->p_popup_data && p_contact_text_data->p_popup_data->popup)
+ {
+ evas_object_show(p_contact_text_data->p_popup_data->popup);
+ ct_fill_genlist(p_contact_text_data);
+ elm_genlist_decorate_mode_set(p_contact_text_data->genlist, EINA_TRUE);
+ }
+ }
+ }
+ }
+}
+
+void list_send_contact_as_text_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_list_data *clist_d = (ct_list_data *) data;
+ ct_person_list *person_info = (ct_person_list *) evas_object_data_get(
+ clist_d->popup, PERSON_INFO);
+
+ list_hide_popup_cb(clist_d);
+ p_retm_if(NULL == person_info, "person_info is NULL");
+
+ int contact_id = phone_get_contact_id_by_person_id(person_info->id);
+ ct_process_send_contact_as_text(contact_id, person_info->id, clist_d->navi, clist_d->ug, &clist_d->child_ug);
+}
+
+bool ct_list_str_to_bool(const std::string& strVal)
+{
+ PH_TRACE;
+ return !(strVal == "0");
+}
+
+std::string ct_list_bool_to_str(bool bVal)
+{
+ PH_TRACE;
+ return bVal == false ? "0" : "1";
+}
+
+bool ct_list_insert_extension(contacts_record_h extensionRec,
+ unsigned int extensionField, int contactId, const std::string& strValue)
+{
+ PH_TRACE;
+ bool result(false);
+ if (contacts_record_set_str(extensionRec, extensionField, strValue.c_str())
+ == CONTACTS_ERROR_NONE)
+ {
+ if (contacts_record_set_int(extensionRec,
+ _contacts_extension.contact_id, contactId)
+ == CONTACTS_ERROR_NONE)
+ {
+ int extId(0);
+ if (contacts_db_insert_record(extensionRec, &extId)
+ == CONTACTS_ERROR_NONE)
+ {
+ result = true;
+ }
+ }
+ }
+ return result;
+}
+
+bool ct_list_toggle_blocked(contacts_record_h contactRec,
+ contacts_record_h extensionRec)
+{
+ PH_TRACE;
+ bool result(false);
+ if (contacts_record_get_child_record_at_p(contactRec,
+ _contacts_contact.extension, 0, &extensionRec)
+ == CONTACTS_ERROR_NONE)
+ {
+ char* strIsBlocked = NULL;
+ if (contacts_record_get_str(extensionRec, _contacts_extension.data2,
+ &strIsBlocked) == CONTACTS_ERROR_NONE)
+ {
+ bool bIsBlocked = ct_list_str_to_bool(strIsBlocked);
+ std::string newStrVal = ct_list_bool_to_str(!bIsBlocked);
+ if (contacts_record_set_str(extensionRec, _contacts_extension.data2,
+ newStrVal.c_str()) == CONTACTS_ERROR_NONE)
+ {
+ if (contacts_db_update_record(contactRec)
+ == CONTACTS_ERROR_NONE)
+ {
+ result = true;
+ }
+ }
+ }
+ if (strIsBlocked)
+ {
+ free(strIsBlocked);
+ }
+ }
+ return result;
+}
+
+void list_block_contact_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_list_data *clist_d = (ct_list_data *) data;
+ ct_person_list *person_info = (ct_person_list *) evas_object_data_get(
+ clist_d->popup, PERSON_INFO);
+
+ list_hide_popup_cb(clist_d);
+ p_retm_if(NULL == person_info, "person_info is NULL");
+
+ clist_d->popup = phone_create_block_contact_popup(clist_d->navi, phone_get_contact_id_by_person_id(clist_d->personId));
+}
+
+static void list_toggle_favorite_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+
+ ct_list_data *clist_d = (ct_list_data *) data;
+ ct_person_list *person_info = (ct_person_list *) evas_object_data_get(
+ clist_d->popup, PERSON_INFO);
+ contacts_record_h person_record = NULL;
+
+ list_hide_popup_cb(clist_d);
+ p_retm_if(NULL == person_info, "person_info is NULL");
+
+ int err = contacts_db_get_record(_contacts_person._uri, person_info->id, &person_record);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ err = contacts_record_set_bool(person_record, _contacts_person.is_favorite,
+ !person_info->is_favourite);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_bool() Failed(%d)", err);
+
+ err = contacts_db_update_record(person_record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_record() Failed(%d)", err);
+
+ if(CONTACTS_ERROR_NONE == err)
+ {
+ person_info->is_favourite = !person_info->is_favourite;
+ phone_show_tickernoti(T_(CT_GET_TEXT_BASE_OP, person_info->is_favourite ?
+ CTTEXT_ADDED_TO_FAVOURITES : CTTEXT_REMOVED_FROM_FAVOURITES));
+ }
+ else
+ {
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+ }
+
+ err = contacts_record_destroy(person_record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+}
+
+static void list_link_contacts_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ p_retm_if(NULL == event_info, "event_info is NULL");
+
+ ct_list_data *clist_d = (ct_list_data *) data;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ ct_person_list *person_info = (ct_person_list *) elm_object_item_data_get(item);
+ bool success = false;
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ if(person_info)
+ {
+ int err = contacts_person_link_person(clist_d->personId, person_info->id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_person_link_person() Failed(%d)", err);
+ success = CONTACTS_ERROR_NONE == err;
+ }
+
+ phone_show_tickernoti(S_(success ?
+ CT_SYS_POP_SUCCESS : PH_SYS_POP_FAILED));
+ elm_naviframe_item_pop(clist_d->navi);
+}
+
+static void list_link_contacts_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ ct_list_data *clist_d = (ct_list_data *) data;
+ ct_person_list *person_info = (ct_person_list *) evas_object_data_get(
+ clist_d->popup, PERSON_INFO);
+
+ list_hide_popup_cb(clist_d);
+ p_retm_if(NULL == person_info, "person_info is NULL");
+
+ ctui_create_list_single_select_view(clist_d->win, clist_d->navi,
+ list_link_contacts_sel_cb, clist_d, person_info->id);
+}
+
+static void ct_group_assign_result_cb(void *data)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ ct_person_list *person_info = (ct_person_list *) data;
+ int err = contacts_db_update_record(person_info->contact);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_record() Failed(%d)", err);
+}
+
+static void list_add_to_group_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ ct_list_data *clist_d = (ct_list_data *) data;
+ ct_person_list *person_info = (ct_person_list *) evas_object_data_get(
+ clist_d->popup, PERSON_INFO);
+
+ list_hide_popup_cb(clist_d);
+ p_retm_if(NULL == person_info, "person_info is NULL");
+
+ if(!person_info->contact)
+ {
+ int contact_id = phone_get_contact_id_by_person_id(person_info->id);
+ int err = contacts_db_get_record(_contacts_contact._uri, contact_id,
+ &person_info->contact);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed(%d)", err);
+ }
+
+ clist_d->popup = ct_group_assign_popup_create(clist_d->win, clist_d->navi,
+ person_info->contact, ct_group_assign_result_cb, person_info);
+}
+
+void list_create_longpressed_popup(ct_person_list *person_info, ct_list_data *clist_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == clist_d, "clist_d is null");
+ list_create_popup_with_cancel_button(*clist_d, person_info->display);
+
+ Evas_Object *genlist = elm_genlist_add(clist_d->popup);
+ p_retm_if(NULL == genlist, "genlist is null");
+ Elm_Genlist_Item_Class *longpress_item_class = list_create_class("1text/popup",
+ list_get_item_text_cb);
+
+ if (!person_info->number_list)
+ {
+ Eina_List *contact_list = ctui_person_get_contact_list(person_info->id);
+ person_info->number_list = ctui_person_get_number_list(contact_list);
+ eina_list_free(contact_list);
+ }
+
+ unsigned number_count = eina_list_count(person_info->number_list);
+ evas_object_data_set(clist_d->popup, PERSON_INFO, person_info);
+ evas_object_data_set(clist_d->genlist, NUMBER_LIST, person_info->number_list);
+
+ //Edit
+ elm_genlist_item_append(genlist, longpress_item_class,
+ S_(PH_SYS_SK_EDIT),
+ NULL, ELM_GENLIST_ITEM_NONE, list_edit_item_cb, clist_d);
+
+ //Add to group
+ elm_genlist_item_append(genlist, longpress_item_class,
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_ADD_TO_GROUP),
+ NULL, ELM_GENLIST_ITEM_NONE, list_add_to_group_cb, clist_d);
+
+ //Add to favourites
+ elm_genlist_item_append(genlist, longpress_item_class,
+ T_(CT_GET_TEXT_BASE_OP, person_info->is_favourite ?
+ CTTEXT_REMOVE_FROM_FAVOURITES : CTTEXT_ADD_TO_FAVOURITES),
+ NULL, ELM_GENLIST_ITEM_NONE, list_toggle_favorite_cb, clist_d);
+
+ //Link contact
+ elm_genlist_item_append(genlist, longpress_item_class,
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_LINK_CONTACTS),
+ NULL, ELM_GENLIST_ITEM_NONE, list_link_contacts_cb, clist_d);
+
+ if (number_count > 0)
+ {
+ //Block contact
+ elm_genlist_item_append(genlist, longpress_item_class,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_EDIT_BLOCK_CONTACT),
+ NULL, ELM_GENLIST_ITEM_NONE,
+ list_block_contact_cb, clist_d);
+
+ //Default number
+ if (number_count > 1)
+ {
+ elm_genlist_item_append(genlist, longpress_item_class,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_DEFAULT_NUMBER),
+ NULL, ELM_GENLIST_ITEM_NONE,
+ list_default_number_cb, clist_d);
+ }
+
+ //Send namecard
+ elm_genlist_item_append(genlist, longpress_item_class,
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_SEND_NAME_CARD),
+ NULL, ELM_GENLIST_ITEM_NONE,
+ list_send_namecard_cb, clist_d);
+
+ //Send contact as text
+ elm_genlist_item_append(genlist, longpress_item_class,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_SEND_CONTACTC_AS_TEXT),
+ NULL, ELM_GENLIST_ITEM_NONE,
+ list_send_contact_as_text_cb, clist_d);
+ }
+
+ elm_object_content_set(clist_d->popup, genlist);
+
+ elm_genlist_item_class_free(longpress_item_class);
+}
+
+void list_gl_longpressed(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ p_retm_if(NULL == event_info, "event_info is null");
+
+ ct_list_data *clist_d = (ct_list_data *) data;
+ ct_person_list *person_info = (ct_person_list *)
+ elm_object_item_data_get((Elm_Object_Item *) event_info);
+ p_retm_if(NULL == person_info, "person_info is null");
+
+ if(NULL == clist_d->last_sweep_item)
+ {
+ clist_d->personId = person_info->id;
+ list_create_longpressed_popup(person_info, clist_d);
+ }
+}
+
+void list_gl_scroll_start_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == obj, "obj is null");
+ evas_object_smart_callback_del(obj, LONGPRESSED, list_gl_longpressed);
+}
+void list_gl_scroll_end_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == obj, "obj is null");
+ p_retm_if(NULL == data, "data is null");
+ ct_list_data *pListData = static_cast<ct_list_data *>(data);
+ evas_object_smart_callback_add(obj, LONGPRESSED, list_gl_longpressed,
+ pListData);
+}
+
+static void update_list_searchbar(ct_list_data &clist_d)
+{
+ PH_TRACE;
+ phone_set_searchbar_add_button_visible(clist_d,
+ !message_mode_state(clist_d.ug_request, clist_d.list_mode));
+}
+
+static Evas_Object* list_create_contact_list(Evas_Object *parent,
+ ct_list_data *clist_d)
+{
+ PH_TRACE;
+ if (clist_d == NULL || parent == NULL)
+ {
+ return NULL;
+ }
+
+ elm_win_conformant_set(clist_d->win, EINA_TRUE);
+
+ if(!clist_d->layout)
+ {
+ Evas_Object *layout = elm_layout_add(parent);
+ if (CT_GET_LIST_VCARD == clist_d->list_op)
+ elm_layout_file_set(layout, CONTACTS_EDJ, "genlist_no_searchbar");
+ else
+ elm_layout_file_set(layout, CONTACTS_EDJ, "genlist");
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ clist_d->layout = layout;
+ }
+
+ if (CT_GET_LIST_VCARD != clist_d->list_op)
+ {
+ if(clist_d->searchbar)
+ {
+ update_list_searchbar(*clist_d);
+ }
+ else
+ {
+ ctui_list_create_searchbar(clist_d->layout, clist_d);
+ }
+ }
+
+ clist_d->box = elm_box_add(clist_d->layout);
+ evas_object_size_hint_weight_set(clist_d->box, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(clist_d->box);
+ elm_object_part_content_set(clist_d->layout, "content", clist_d->box);
+
+ // Create genlist
+ Evas_Object *genlist = list_create_navi_content_genlist(clist_d->box);
+ evas_object_show(genlist);
+ elm_object_theme_set(genlist, clist_d->th);
+
+ evas_object_smart_callback_add(genlist, "drag,start,right", list_gl_sweep,
+ clist_d);
+ evas_object_smart_callback_add(genlist, "drag,start,left", list_gl_unsweep,
+ clist_d);
+ evas_object_smart_callback_add(genlist, "drag,start,up", list_gl_unsweep,
+ clist_d);
+ evas_object_smart_callback_add(genlist, "drag,start,down", list_gl_unsweep,
+ clist_d);
+ evas_object_smart_callback_add(genlist, SCROLL_DRAG_START,
+ list_gl_scroll_start_cb, clist_d);
+ evas_object_smart_callback_add(genlist, SCROLL_DRAG_STOP,
+ list_gl_scroll_end_cb, clist_d);
+ evas_object_smart_callback_add(genlist, LONGPRESSED, list_gl_longpressed,
+ clist_d);
+
+ clist_d->genlist = genlist;
+
+ elm_box_pack_end(clist_d->box, genlist);
+ evas_object_data_set(genlist, "clist_d", clist_d);
+ elm_object_focus_set(genlist, EINA_TRUE);
+
+ if (CT_GET_LIST_VCARD != clist_d->list_op)
+ {
+ // Create fast scroll
+ Evas_Object *fast_index = elm_index_add(clist_d->layout);
+ elm_object_part_content_set(clist_d->layout, "fastscroll", fast_index);
+ evas_object_show(fast_index);
+ clist_d->fast_index = fast_index;
+ evas_object_smart_callback_add(fast_index, "delay,changed",
+ list_fast_delayed_changed, fast_index);
+ evas_object_smart_callback_add(fast_index, "selected",
+ list_fast_selected, NULL);
+ elm_index_level_go(fast_index, 0);
+ }
+
+ // Genlist item append
+ pre_search_str[0] = '\0';
+
+ evas_object_show(clist_d->layout);
+
+ return clist_d->layout;
+}
+
+static void list_resize_contact_view(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *scroller;
+ Evas_Object *box;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ int changed_rotate = elm_win_rotation_get(clist_d->win);
+
+ if (clist_d->list || clist_d->search_str)
+ return;
+
+ if (clist_d->current_rotate != changed_rotate)
+ clist_d->current_rotate = changed_rotate;
+ else
+ return;
+
+ if (0 == changed_rotate || 180 == changed_rotate)
+ {
+ scroller = elm_object_part_content_get(clist_d->content_layout,
+ "elm.swallow.content");
+ p_retm_if(NULL == scroller,
+ "elm_object_part_content_get() return NULL");
+ box = elm_object_content_get(scroller);
+ p_retm_if(NULL == box, "elm_object_content_get() return NULL");
+ elm_box_unpack(box, clist_d->nocontent);
+ p_retm_if(NULL == clist_d->nocontent, "elm_box_unpack() return NULL");
+ evas_object_size_hint_weight_set(clist_d->nocontent, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(clist_d->nocontent, EVAS_HINT_FILL,
+ 0.2);
+ elm_box_pack_end(box, clist_d->nocontent);
+ elm_object_content_set(scroller, box);
+ evas_object_size_hint_min_set(box, 720, 650);
+ elm_object_part_content_set(clist_d->content_layout,
+ "elm.swallow.content", scroller);
+ }
+ else
+ {
+ scroller = elm_object_part_content_get(clist_d->content_layout,
+ "elm.swallow.content");
+ p_retm_if(NULL == scroller,
+ "elm_object_part_content_get() return NULL");
+ box = elm_object_content_get(scroller);
+ p_retm_if(NULL == box, "elm_object_content_get() return NULL");
+ elm_box_unpack(box, clist_d->nocontent);
+ p_retm_if(NULL == clist_d->nocontent, "elm_box_unpack() return NULL");
+ evas_object_size_hint_weight_set(clist_d->nocontent, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(clist_d->nocontent, EVAS_HINT_FILL,
+ 0.0);
+ elm_box_pack_end(box, clist_d->nocontent);
+ elm_object_content_set(scroller, box);
+ evas_object_size_hint_min_set(box, 720, 650);
+ elm_object_part_content_set(clist_d->content_layout,
+ "elm.swallow.content", scroller);
+ }
+
+}
+void create_no_content_layout(ct_list_data *clist_d, Evas_Object *parent)
+{
+ PH_TRACE;
+ if(clist_d && parent)
+ {
+ elm_win_conformant_set(clist_d->win, EINA_TRUE);
+ Evas_Object *layout_search = elm_layout_add(parent);
+ elm_layout_file_set(layout_search, CONTACTS_EDJ, "genlist");
+ evas_object_size_hint_weight_set(layout_search, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ clist_d->layout = layout_search;
+
+ ctui_list_create_searchbar(layout_search, clist_d);
+ elm_object_part_content_set(parent, "elm.swallow.content",
+ layout_search);
+ elm_object_disabled_set(clist_d->searchbar, EINA_TRUE);
+
+ char buf[PH_TEXT_MAX_LEN] = { 0, };
+ Evas_Object * base = elm_layout_add(layout_search);
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(base, EVAS_HINT_FILL, 0.2);
+ elm_layout_file_set(base, NOCONTENT_LAYOUT_EDJ, "nocontent_layout");
+ snprintf(buf, sizeof(buf), "%s<br>%s",
+ T_(CT_GET_TEXT_ERR, CTTEXT_NO_CONTACTS),
+ T_(CT_GET_TEXT_ERR, CTTEXT_NO_CONTACTS_HELP_TEXT));
+ elm_object_part_text_set(base, "elm.text", buf);
+ evas_object_show(base);
+ clist_d->nocontent = base;
+ clist_d->current_rotate = elm_win_rotation_get(clist_d->win);
+
+ elm_object_part_content_set(clist_d->layout, "content", base);
+
+ clear_genlist_info(*clist_d);
+ clist_d->list = NULL;
+ }
+}
+
+static void list_fill_contact_view(Evas_Object *parent, ct_list_data &clist_d)
+{
+ PH_TRACE;
+ Evas_Object *content = NULL;
+
+ if (clist_d.list || clist_d.search_str)
+ {
+ if (NULL == clist_d.genlist)
+ {
+ content = list_create_contact_list(parent, &clist_d);
+ list_append_all(&clist_d);
+
+ if (CT_LIST_MODE_EDIT == clist_d.list_mode)
+ ctui_list_edit_mode_start(&clist_d);
+ elm_object_part_content_set(parent, "elm.swallow.content", content);
+ }
+ else
+ {
+ if (clist_d.search_str && *clist_d.search_str)
+ ctui_list_handle_search(clist_d);
+ else
+ ctui_list_refresh_genlist(&clist_d);
+ }
+ evas_object_smart_callback_del(clist_d.win, "wm,rotation,changed",
+ list_resize_contact_view);
+ }
+ else
+ {
+ clist_d.list_mode = CT_LIST_MODE_DEFAULT;
+ create_no_content_layout(&clist_d, parent);
+ }
+}
+
+API Eina_Bool ctui_list_genlist_update(void *data)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_MAX_LEN + 1];
+ Evas_Object *content;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ if(!clist_d)
+ {
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if (clist_d->update_timer)
+ {
+ ecore_timer_del(clist_d->update_timer);
+ clist_d->update_timer = NULL;
+ }
+
+ p_retvm_if(NULL == clist_d->navi_item, ECORE_CALLBACK_CANCEL,
+ "navi_item is NULL");
+
+ ctui_list_free_contacts(clist_d->list);
+ clist_d->list = NULL;
+ ct_list_get_contacts(clist_d, &clist_d->list);
+
+ if (CT_LIST_IN_MULTI_TAB != clist_d->tab_mode
+ && CT_UG_REQUEST_SELECT_PERSON <= clist_d->ug_request)
+ {
+ snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title,
+ clist_d->cnt_list_total);
+ elm_object_item_text_set(clist_d->navi_item, buf);
+ }
+
+ content = clist_d->content_layout;
+ list_fill_contact_view(content, *clist_d);
+ if (clist_d->list_navi_item_update_fn)
+ clist_d->list_navi_item_update_fn(clist_d);
+
+ clist_d->update_timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+}
+
+void ct_list_clear_pdata(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ p_ret_if(NULL == clist_d);
+ p_ret_if(NULL == clist_d->p_info);
+
+ clist_d->p_info->alive = false;
+ pthread_join(clist_d->p_info->thread, NULL);
+
+ ecore_timer_del(clist_d->p_info->timer);
+
+ if (clist_d->popup)
+ {
+ evas_object_del(clist_d->popup);
+ clist_d->popup = NULL;
+ }
+
+ free(clist_d->p_info);
+ clist_d->p_info = NULL;
+}
+
+static void list_addrbook_changed(const char *view_uri, void *user_data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) user_data;
+ ct_list_init_account_data(clist_d);
+ ctui_list_lazy_update(_contacts_person._uri, clist_d);
+}
+
+static void list_set_group_index_item(Eina_List *list_index,
+ const char *cur_index, Elm_Object_Item *cur_item)
+{
+ PH_TRACE;
+ Eina_List* l;
+ void *v_data;
+
+ EINA_LIST_FOREACH(list_index, l, v_data)
+ {
+ ct_list_index_data *data = (ct_list_index_data *) v_data;
+ if (0 == strcmp(cur_index, data->index))
+ {
+ //PH_DBG("list_append_item - %s mapping to %s", data->index, cur_index);
+ elm_object_item_data_set(data->item, cur_item);
+ break;
+ }
+ }
+}
+
+static Elm_Object_Item* list_genlist_update_group_item_get(
+ ct_list_data *clist_d, Elm_Object_Item *item, const char *cur_index)
+{
+ PH_TRACE;
+ int cmp;
+ char *item_index;
+ Elm_Object_Item *next_item;
+ Elm_Object_Item *item_ret;
+
+ if (NULL == item)
+ {
+ item_ret = elm_genlist_item_append(clist_d->genlist, &group_index,
+ strdup(cur_index), NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+ elm_genlist_item_select_mode_set(item_ret,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ list_set_group_index_item(clist_d->list_index, cur_index, item_ret);
+ return item_ret;
+ }
+ if (ELM_GENLIST_ITEM_GROUP != elm_genlist_item_type_get(item))
+ {
+ next_item = elm_genlist_item_next_get(item);
+ item_ret = list_genlist_update_group_item_get(clist_d, next_item,
+ cur_index);
+ elm_object_item_del(item);
+ return item_ret;
+ }
+
+ item_index = (char *) elm_object_item_data_get(item);
+ cmp = strcmp(item_index, cur_index);
+
+ if (0 == cmp)
+ {
+ return item;
+ }
+ else if (0 < cmp)
+ {
+ item_ret = elm_genlist_item_insert_before(clist_d->genlist,
+ &group_index, strdup(cur_index), NULL, item,
+ ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+ elm_genlist_item_select_mode_set(item_ret,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ list_set_group_index_item(clist_d->list_index, cur_index, item_ret);
+ return item_ret;
+ }
+ else
+ {
+ next_item = elm_genlist_item_next_get(item);
+ item_ret = list_genlist_update_group_item_get(clist_d, next_item,
+ cur_index);
+ elm_object_item_del(item);
+ return item_ret;
+ }
+}
+
+static void ct_list_update_checked_contacts(ct_list_data* contactListData)
+{
+ PH_TRACE;
+ p_retm_if(contactListData == NULL, "contact person is NULL");
+ p_retm_if(contactListData->list == NULL, "contact person list is NULL");
+ p_retm_if(contactListData->list_check_info == NULL,
+ "contact person list_check is NULL");
+
+ Eina_List* tempList = NULL;
+ void* tempData = NULL;
+ EINA_LIST_FOREACH(contactListData->list, tempList, tempData)
+ {
+ if (tempData)
+ {
+ ct_person_list* personList = static_cast<ct_person_list*>(tempData);
+ ct_person_list* personInfo = find_info_in_list_by_id(
+ contactListData->list_check_info, personList->id);
+ if (personInfo)
+ {
+ personList->checked = personInfo->checked;
+ }
+ }
+ }
+}
+void disable_count_item(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ if (clist_d)
+ {
+ if (EINA_FALSE == elm_genlist_decorate_mode_get(clist_d->genlist))
+ {
+ clist_d->count_item = elm_genlist_item_append(clist_d->genlist,
+ &clist_d->itcs[CT_LIST_ITEM_COUNT],
+ (void *) clist_d->cnt_list_total, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_object_item_disabled_set(clist_d->count_item, EINA_TRUE);
+ }
+ }
+}
+
+static void ctui_list_refresh_searchbar(ct_list_data *clist_d, Eina_List *list_new)
+{
+ PH_TRACE;
+ if(clist_d && clist_d->searchbar)
+ {
+ if ((!list_new && !clist_d->search_str) || NULL == clist_d->genlist)
+ {
+ elm_object_disabled_set(clist_d->searchbar, EINA_TRUE);
+ }
+ else
+ {
+ elm_object_disabled_set(clist_d->searchbar, EINA_FALSE);
+ }
+ }
+}
+
+static Eina_Bool list_genlist_update(void *data)
+{
+ PH_TRACE;
+ int ret;
+ char buf[PH_TEXT_MAX_LEN] = { 0, };
+ char group_letter[10] __attribute__ ((unused)) = { 0, };
+ Eina_List *list_new;
+ Eina_List *l;
+ Elm_Object_Item *item_cur = NULL;
+ Elm_Object_Item *item_second = NULL;
+ ct_person_list *person_info;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ void * info;
+
+ if (clist_d->list_idler)
+ {
+ ecore_idler_del(clist_d->list_idler);
+ clist_d->list_idler = NULL;
+ }
+
+ if (clist_d->update_timer)
+ {
+ ecore_timer_del(clist_d->update_timer);
+ clist_d->update_timer = NULL;
+ }
+
+ p_retvm_if(NULL == clist_d->navi_item, ECORE_CALLBACK_CANCEL,
+ "navi_item is NULL");
+
+ list_new = NULL;
+ ret = ct_list_get_contacts(clist_d, &list_new);
+ if (0 != ret && ret != CONTACTS_ERROR_NO_DATA)
+ {
+ ERR("ct_list_get_contacts() Failed(%d)", ret);
+ ctui_list_free_contacts(list_new);
+ clist_d->need_update = true;
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ ctui_list_refresh_searchbar(clist_d, list_new);
+
+ if (!list_new && !clist_d->search_str)
+ {
+ update_list_searchbar(*clist_d);
+ clear_genlist_info(*clist_d);
+ }
+ else
+ {
+ Evas_Object *content = NULL;
+ content = list_create_contact_list(clist_d->content_layout, clist_d);
+ if (CT_LIST_MODE_EDIT == clist_d->list_mode)
+ ctui_list_edit_mode_start(clist_d);
+ elm_object_part_content_set(clist_d->content_layout, "elm.swallow.content", content);
+ ctui_list_set_unsweep(clist_d);
+
+ if (clist_d->count_item)
+ elm_object_item_del(clist_d->count_item);
+
+ evas_object_smart_callback_del(clist_d->win, "wm,rotation,changed",
+ list_resize_contact_view);
+
+ show_fast_index(clist_d);
+
+ clist_d->group_index[0] = '\0';
+ clist_d->group_item = NULL;
+
+ item_cur = elm_genlist_first_item_get(clist_d->genlist);
+ if (item_cur)
+ item_second = elm_genlist_item_next_get(item_cur);
+ else
+ {
+ if (clist_d->base_ab > -1)
+ {
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ Elm_Object_Item * item;
+ int addressbook_mode;
+ char title[400] = { 0, };
+ char cur_account_name[200] = { 0, };
+ char *cur_ab;
+
+ ctui_get_account_name_by_address_book_id(clist_d->base_ab,
+ cur_account_name, sizeof(cur_account_name));
+ if (clist_d->base_ab > 0)
+ {
+ err = (contacts_error_e) contacts_db_get_record(
+ _contacts_address_book._uri, clist_d->base_ab,
+ &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ do
+ {
+ if (CONTACTS_ERROR_NONE!= (err =(contacts_error_e) contacts_record_get_str_p(record,_contacts_address_book.name, &cur_ab)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err =
+ (contacts_error_e) contacts_record_get_int(
+ record,
+ _contacts_address_book.mode,
+ &addressbook_mode)))
+ break;
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_value() Failed(%d)", err);
+
+ err = (contacts_error_e) contacts_record_destroy(record,
+ true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ if (CONTACTS_ADDRESS_BOOK_MODE_READONLY == addressbook_mode)
+ snprintf(title, sizeof(title), "%s", cur_account_name);
+ else
+ snprintf(title, sizeof(title), "%s %s",
+ cur_account_name, cur_ab);
+ }
+ else
+ {
+ snprintf(title, sizeof(title), "%s",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE));
+ }
+
+ item = elm_genlist_item_append(clist_d->genlist, &group_index,
+ strdup(title), NULL, ELM_GENLIST_ITEM_GROUP, NULL,
+ NULL);
+ elm_genlist_item_select_mode_set(item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+ }
+
+ group_letter[0] = '\0';
+
+ if (ELM_GENLIST_ITEM_GROUP == elm_genlist_item_type_get(item_second))
+ item_cur = item_second;
+
+ if (clist_d->search_str && *clist_d->search_str)
+ item_cur = elm_genlist_item_next_get(clist_d->search_group_item);
+
+ ctui_list_free_index(clist_d->list_index);
+ clist_d->list_index = NULL;
+ clear_fast_index(clist_d);
+ elm_genlist_clear(clist_d->genlist);
+
+ EINA_LIST_FOREACH(list_new, l, info)
+ {
+ person_info = (ct_person_list *) info;
+ if(person_info)
+ list_append_item(clist_d, person_info);
+ }
+
+ if (clist_d->search_str && *clist_d->search_str)
+ {
+ if (clist_d->search_group_item)
+ {
+ char group_title[PH_TEXT_MAX_LEN];
+ snprintf(group_title, sizeof(group_title), "%s (%d)", S_(PH_SYS_BODY_CONTACTS), eina_list_count(list_new));
+ elm_object_item_data_set(clist_d->search_group_item,
+ strdup(group_title));
+ elm_genlist_item_update(clist_d->search_group_item);
+ }
+ }
+
+ if (CT_LIST_IN_MULTI_TAB != clist_d->tab_mode
+ && CT_UG_REQUEST_SELECT_PERSON <= clist_d->ug_request)
+ {
+ snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title, clist_d->cnt_list_total);
+ elm_object_item_text_set(clist_d->navi_item, buf);
+ }
+ }
+
+ ctui_list_free_contacts(clist_d->list);
+ clist_d->list = list_new;
+
+ ct_list_update_checked_contacts(clist_d);
+
+ if (clist_d->genlist)
+ {
+ elm_genlist_realized_items_update(clist_d->genlist);
+ if (!(clist_d->search_str && *clist_d->search_str))
+ disable_count_item(clist_d);
+ }
+ if (clist_d->list_navi_item_update_fn)
+ clist_d->list_navi_item_update_fn(clist_d);
+
+ if (clist_d->base_grp)
+ ctui_list_navi_set(CT_LIST_MODE_DEFAULT, clist_d);
+
+ if (clist_d->genlist)
+ elm_object_focus_set(clist_d->genlist, EINA_TRUE);
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool list_genlist_update_queue_timer_cb(void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ p_retvm_if(NULL == clist_d, ECORE_CALLBACK_CANCEL,
+ "parameter(clist_d) is NULL");
+
+ if (clist_d->need_update)
+ {
+ clist_d->need_update = false;
+ list_genlist_update(clist_d);
+ return ECORE_CALLBACK_RENEW;
+ }
+ clist_d->update_queue_timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+}
+
+void ctui_list_lazy_update(const char *view_uri, void *data)
+{
+ PH_TRACE;
+ int ui_updated;
+ ct_list_data *clist_d = (ct_list_data *) data;
+
+ if (clist_d->updating)
+ return;
+ PH_DBG("ctui_list_lazy_update");
+ if (clist_d->update_timer)
+ {
+ ecore_timer_del(clist_d->update_timer);
+ clist_d->update_timer = NULL;
+ }
+
+ PH_DBG("is_background = %d", clist_d->is_background);
+
+ if (clist_d->is_background)
+ {
+ clist_d->need_update = false;
+ clist_d->update_timer = ecore_timer_add(3.0, list_genlist_update,
+ clist_d);
+ return;
+ }
+
+ ui_updated = (int) evas_object_data_del(clist_d->navi, "ct_list_update_ui");
+ if (0 == ui_updated && clist_d->update_queue_timer)
+ {
+ clist_d->need_update = true;
+ }
+ else
+ {
+ list_genlist_update(clist_d);
+ clist_d->update_queue_timer = ecore_timer_add(1.0,
+ list_genlist_update_queue_timer_cb, clist_d);
+ p_warn_if(NULL == clist_d->update_queue_timer,
+ "ecore_timer_add() return NULL");
+ }
+}
+
+static void list_view_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int i;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+
+ ct_list_clear_pdata(clist_d);
+ list_clean_ecore_task(clist_d);
+
+ // TODO: Fixme BS when destroy a contact ug
+ if (clist_d->genlist)
+ {
+ evas_object_del(clist_d->genlist);
+ clist_d->genlist = NULL;
+ }
+
+ evas_object_smart_callback_del(clist_d->win, "wm,rotation,changed",
+ list_resize_contact_view);
+
+ if (CT_GET_LIST_PERSON_OF_GROUP_ID == clist_d->list_op)
+ {
+ err = (contacts_error_e) contacts_db_remove_changed_cb(
+ _contacts_contact._uri, ctui_list_lazy_update, clist_d);
+ p_warn_if(CONTACTS_ERROR_NONE,
+ "contacts_db_remove_changed_cb() Failed(%d)", err);
+ }
+
+ // if (clist_d->gl_sel_data != clist_d) - 1. Input > Relationship, 2. Details > Link
+ if (CT_GET_LIST_VCARD != clist_d->list_op
+ && clist_d->gl_sel_data == clist_d)
+ {
+ err = (contacts_error_e) contacts_db_remove_changed_cb(
+ _contacts_person._uri, ctui_list_lazy_update, clist_d);
+ p_warn_if(CONTACTS_ERROR_NONE,
+ "contacts_db_remove_changed_cb() Failed(%d)", err);
+
+ err = (contacts_error_e) contacts_db_remove_changed_cb(
+ _contacts_address_book._uri, list_addrbook_changed, clist_d);
+ p_warn_if(CONTACTS_ERROR_NONE,
+ "contacts_db_remove_changed_cb() Failed(%d)", err);
+
+ }
+
+ if (clist_d->list)
+ {
+ if (clist_d->list_grp_person)
+ {
+ Eina_List* l = NULL;
+ void *info = NULL;
+ EINA_LIST_FOREACH(clist_d->list, l, info)
+ {
+ ct_person_list *person_info = (ct_person_list *) info;
+ if (person_info)
+ {
+ if (!person_info->is_in_group)
+ {
+ ctui_list_free_person_info(person_info);
+ }
+ }
+ }
+ }
+ else
+ {
+ ctui_list_free_contacts(clist_d->list);
+ clist_d->list = NULL;
+ }
+ }
+ if (clist_d->list_check_info)
+ {
+ ctui_list_free_contacts(clist_d->list_check_info);
+ clist_d->list_check_info = NULL;
+ }
+ if (clist_d->list_index)
+ {
+ ctui_list_free_index(clist_d->list_index);
+ clist_d->list_index = NULL;
+ }
+
+ if (clist_d->update_timer)
+ {
+ ecore_timer_del(clist_d->update_timer);
+ clist_d->update_timer = NULL;
+ }
+
+ if (clist_d->update_queue_timer)
+ {
+ ecore_timer_del(clist_d->update_queue_timer);
+ clist_d->update_queue_timer = NULL;
+ }
+
+ if (clist_d->popup)
+ {
+ evas_object_del(clist_d->popup);
+ clist_d->popup = NULL;
+ }
+
+ if (clist_d->nocontent)
+ {
+ evas_object_del(clist_d->nocontent);
+ clist_d->nocontent = NULL;
+ }
+
+ if (clist_d->th)
+ {
+ elm_theme_extension_del(clist_d->th, CONTACTS_EDJ);
+ elm_theme_free(clist_d->th);
+ clist_d->th = NULL;
+ }
+
+ if (clist_d->child_ug)
+ {
+ ug_destroy(clist_d->child_ug);
+ clist_d->child_ug = NULL;
+ }
+
+ evas_object_data_del(clist_d->navi, "gadd_list_d");
+ evas_object_data_del(clist_d->navi, "favor_list_d");
+
+ if (clist_d->acc_types)
+ {
+ int count = clist_d->acc_count;
+ for (i = 0; i < count; i++)
+ free(clist_d->acc_types[i].icon_path);
+ free(clist_d->acc_types);
+ clist_d->acc_types = NULL;
+ }
+
+ if (clist_d->search_str)
+ {
+ free(clist_d->search_str);
+ clist_d->search_str = NULL;
+ }
+ if (clist_d->sub_title)
+ {
+ free(clist_d->sub_title);
+ clist_d->sub_title = NULL;
+ }
+ if (clist_d->title)
+ {
+ free(clist_d->title);
+ clist_d->title = NULL;
+ }
+
+ if (!clist_d->ug)
+ {
+ PH_DBG("no ug");
+ free(clist_d);
+ }
+ else
+ {
+ PH_DBG("view destroy called earlier than ug destroy");
+ clist_d->ug = NULL;
+ }
+}
+
+char* ctui_list_get_highlight_text(ct_list_data *clist_d, const char *src)
+{
+ PH_TRACE;
+ char display[PH_TEXT_MAX_LEN] = { 0, };
+ p_retvm_if(NULL == clist_d, NULL, "parameter(clist_d) is NULL");
+
+ if (NULL == clist_d->search_str || '\0' == clist_d->search_str[0])
+ {
+ return elm_entry_utf8_to_markup(src);
+ }
+
+ int len_search = strlen(clist_d->search_str);
+ char *pos = (char *) strcasestr(src, clist_d->search_str);
+
+ if (0 < pos)
+ {
+ char first[PH_TEXT_MAX_LEN] = { 0 };
+ char middle[PH_TEXT_MAX_LEN] = { 0 };
+
+ snprintf(first, (int) (pos - src) + 1, "%s", src);
+ snprintf(middle, len_search + 1, "%s", (char *) pos);
+
+ char *first_markup = elm_entry_utf8_to_markup(first);
+ char *midle_markup = elm_entry_utf8_to_markup(middle);
+ char *end_murkup = elm_entry_utf8_to_markup((char *) (pos + len_search));
+ snprintf(display, sizeof(display), "%s<match>%s</>%s", first_markup,
+ midle_markup, end_murkup);
+ free(first_markup);
+ free(midle_markup);
+ free(end_murkup);
+ return strdup(display);
+ }
+ return elm_entry_utf8_to_markup(src);
+}
+
+char* ct_list_gl_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ ct_person_list *person_info = (ct_person_list *) data;
+ p_retvm_if(NULL == person_info, NULL, "The parameter(data) is NULL");
+ p_retvm_if(NULL == part, NULL, "The parameter(data) is NULL");
+
+ if (0 == strcmp(part, "elm.text.2"))
+ {
+ if (person_info->number_display && *person_info->number_display)
+ {
+ ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(obj,
+ "clist_d");
+ p_retvm_if(NULL == clist_d, strdup(person_info->number_display),
+ "evas_object_data_get() return NULL");
+ return ctui_list_get_highlight_text(clist_d,
+ person_info->number_display);
+ }
+ }
+ if (0 == strcmp(part, "elm.text.1") || 0 == strcmp(part, "elm.text"))
+ {
+ ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(obj,
+ "clist_d");
+ p_retvm_if(NULL == clist_d, strdup(person_info->display),
+ "evas_object_data_get() return NULL");
+ return ctui_list_get_highlight_text(clist_d, person_info->display);
+ }
+ else
+ return strdup(T_(CT_GET_TEXT_ERR, CTTEXT_NONAME));
+
+ return NULL;
+}
+
+char* ct_list_count_gl_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_SHORT_LEN];
+ int count = (int) data;
+ if (count == 1)
+ return strdup(T_(CT_GET_TEXT_BASIC,CTTEXT_1_CONTACT));
+ else
+ {
+ snprintf(buf, sizeof(buf), T_(CT_GET_TEXT_BASIC, CTTEXT_COUNT_CONTACTS),
+ count);
+ return strdup(buf);
+ }
+}
+
+Evas_Object* ct_list_create_contact_layout(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ Elm_Theme *th = NULL;
+ Evas_Object *base = NULL;
+ Evas_Object *layout = NULL;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ if(clist_d)
+ {
+ th = elm_theme_new();
+ elm_theme_ref_set(th, NULL);
+ elm_theme_extension_add(th, LIST_THEME_EDJ);
+ clist_d->th = th;
+
+ base = elm_layout_add(clist_d->navi);
+ p_retvm_if(NULL == base, NULL, "elm_layout_add() return NULL");
+ elm_layout_file_set(base, SELECTION_INFO_EDJ, "selectioninfo_layout");
+
+ layout = phone_create_base_layout(base, true);
+ clist_d->content_layout = layout;
+ elm_object_part_content_set(base, "contents", layout);
+ list_fill_contact_view(layout, *clist_d);
+
+ // if (clist_d->gl_sel_data != clist_d) - 1. Input > Relationship, 2. Details > Link
+ if (CT_GET_LIST_VCARD != clist_d->list_op
+ && clist_d->gl_sel_data == clist_d)
+ {
+ err = (contacts_error_e) contacts_db_add_changed_cb(
+ _contacts_person._uri, ctui_list_lazy_update, clist_d);
+
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_add_changed_cb() Failed(%d)", err);
+
+ err = (contacts_error_e) contacts_db_add_changed_cb(
+ _contacts_address_book._uri, list_addrbook_changed,
+ clist_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_add_changed_cb() Failed(%d)", err);
+
+ if (CT_GET_LIST_PERSON_OF_GROUP_ID == clist_d->list_op)
+ {
+ err = (contacts_error_e) contacts_db_add_changed_cb(
+ _contacts_contact._uri, ctui_list_lazy_update, clist_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_add_changed_cb() Failed(%d)", err);
+ }
+ }
+ evas_object_event_callback_add(base, EVAS_CALLBACK_DEL,
+ list_view_delete_cb, clist_d);
+ }
+
+ PH_DBG("##### [TSP_TEST] lauching contact application #####");
+ return base;
+}
diff --git a/lib/common/include/Contact.h b/lib/common/include/Contact.h
new file mode 100644
index 0000000..9d95d71
--- /dev/null
+++ b/lib/common/include/Contact.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __COMMON_CONTACT_H__
+#define __COMMON_CONTACT_H__
+
+#include <string>
+
+namespace Common
+{
+ /*
+ * @brief Common interface for contact
+ */
+ class Contact
+ {
+ public:
+ virtual ~Contact() { }
+
+ /*
+ * @return Contact's name as it is displayed in Contact list
+ */
+ virtual const std::string & getName() const = 0;
+
+ /*
+ * @return Default phone number
+ */
+ virtual const std::string & getNumber() const = 0;
+
+ /*
+ * @return Contact image path
+ */
+ virtual const std::string & getImagePath() const = 0;
+ };
+}
+
+#endif /* __COMMON_CONTACT_H__ */
diff --git a/lib/common/include/Front.h b/lib/common/include/Front.h
new file mode 100644
index 0000000..1978b37
--- /dev/null
+++ b/lib/common/include/Front.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __COMMON_FRONT_H__
+#define __COMMON_FRONT_H__
+
+#include <Elementary.h>
+#include "NonCopyable.h"
+
+namespace Common
+{
+ /*
+ * \par Description:
+ * Members for legacy front views (ph-front and ct-front).
+ */
+ struct Front : public Utils::NonCopyable
+ {
+ Evas_Object *win;
+ Evas_Object *navi;
+ Evas_Object *layout;
+ void *ug;
+ char *ug_data;
+ int ug_request;
+ int cnt_max;
+ Ecore_Idler *idler;
+ Ecore_Timer *timer;
+
+ Front();
+ };
+}
+
+#endif /* __COMMON_FRONT_H__ */
diff --git a/lib/common/include/View.h b/lib/common/include/View.h
new file mode 100644
index 0000000..38d182e
--- /dev/null
+++ b/lib/common/include/View.h
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __COMMON_VIEW_H__
+#define __COMMON_VIEW_H__
+
+#include <string>
+
+#include "ViewData.h"
+
+namespace Common
+{
+ /*
+ * \par Description:
+ * View is a base class for all views that can be pushed into ViewManager (see ViewManager.h).
+ * Views can have several mode (normal, selection, etc...).
+ * Concrete views should be designed according to the State pattern with each mode as a state.
+ */
+
+
+ class View : public ViewData
+ {
+ public:
+ View();
+ /*
+ * @param title Title for a view to be displayed in naviframe item header.
+ */
+ View(const char *title);
+ virtual ~View();
+
+ /*
+ * \par Description:
+ * Creates view basic layout.
+ * Any derived class that overrides this method should call
+ * base method as well before performing its own initialization.
+ *
+ * @param parent Parent for the main view's layout
+ * @return true on success, false otherwise
+ */
+ virtual bool initialize(Evas_Object *parent);
+
+ /*
+ * @return View title.
+ */
+ const std::string & getTitle() const;
+
+ /*
+ * @return Main view layout.
+ */
+ Evas_Object * getContent() const;
+
+ /*
+ * \par Description:
+ * Receives the Back-button event from ViewManager and dispatches it to the current State.
+ *
+ * @return true if handled, false for default processing by ViewManager
+ */
+ bool onBack();
+
+ /*
+ * \par Description:
+ * Receives the Menu-button event from ViewManager and dispatches it to the current State.
+ */
+ void onMenu();
+
+ public:
+ /*
+ * Back and Menu strategies for the current State.
+ * In the future should be replaced with a State object.
+ */
+ void(*back_cb)(void *);
+ void(*menu_cb)(void *);
+ void(*widget_back_cb)(void *);
+
+ protected:
+ std::string m_Title;
+ Evas_Object *m_Parent;
+ Evas_Object *m_Content;
+ };
+}
+
+#endif /* __COMMON_VIEW_H__ */
diff --git a/lib/common/include/ViewData.h b/lib/common/include/ViewData.h
new file mode 100644
index 0000000..3973d30
--- /dev/null
+++ b/lib/common/include/ViewData.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __COMMON_VIEW_DATA_H__
+#define __COMMON_VIEW_DATA_H__
+
+#include <Elementary.h>
+#include "NonCopyable.h"
+
+typedef struct ui_gadget_s *ui_gadget_h;
+
+namespace Common
+{
+ /*
+ * \par Description:
+ * Members for legacy code support.
+ * Any new views shouldn't use these members.
+ */
+ struct ViewData : public Utils::NonCopyable
+ {
+ Evas_Object *win;
+ Evas_Object *navi;
+ Evas_Object *layout;
+ Evas_Object *popup;
+ Evas_Object *m_Menu;
+ Evas_Object *m_ContextMenu;
+ Evas_Object *m_Widget;
+ Elm_Object_Item *navi_item;
+ Elm_Theme *th;
+ ui_gadget_h ug;
+ ui_gadget_h child_ug;
+
+ ViewData();
+ };
+}
+
+#endif /* __COMMON_VIEW_DATA_H__ */
diff --git a/lib/common/include/ViewManager.h b/lib/common/include/ViewManager.h
new file mode 100644
index 0000000..a69b62a
--- /dev/null
+++ b/lib/common/include/ViewManager.h
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __COMMON_VIEW_MANAGER_H__
+#define __COMMON_VIEW_MANAGER_H__
+
+#include "Front.h"
+
+namespace Common
+{
+ class View;
+
+ /*
+ * \par Description:
+ * ViewManager is a wrapper around naviframe and a manager of View objects.
+ * Views should be pushed into ViewManager.
+ * Views that create other Views should push them into ViewManager.
+ */
+ class ViewManager : public Front
+ {
+ public:
+ ViewManager();
+ virtual ~ViewManager();
+
+ /*
+ * @param win Parent window object
+ * @param parent Parent layout for ViewManager
+ */
+ bool initialize(Evas_Object *win, Evas_Object *parent);
+
+ /*
+ * @return Base layout
+ */
+ Evas_Object * getContent() const;
+
+ /*
+ * \par Description:
+ * Pushes view's layout to the internal naviframe.
+ * The method uses view->getTitle and view->getContent
+ * to get title and layout for a new naviframe item.
+ */
+ void push(View &view);
+
+ /*
+ * \par Description:
+ * Deletes the topmost item of internal naviframe.
+ */
+ void pop();
+
+ /*
+ * \par Description:
+ * Hardware keys handlers.
+ * Dispatch key events to concrete Views and performs default processing if necessary.
+ * TODO: move to private section once naviframe creation is moved to ViewManager class.
+ */
+ static void onBack(void *data, Evas_Object *obj, void *event);
+ static void onMenu(void *data, Evas_Object *obj, void *event);
+
+ private:
+ Evas_Object *m_Layout;
+
+ static void onViewDestroy(void *data, Evas *e, Evas_Object *obj, void *event_info);
+ };
+
+ /*
+ * TabbedView is a wrapper around tab bar and tabs.
+ * In the future TabbedView should be decoupled from the ViewManager and should inherit from View.
+ * TabbedView should be pushed into ViewManager as a first View.
+ * TabbedView itself should contain other Views as its tabs.
+ */
+ template <int TabCount>
+ class TabbedView : public Common::ViewManager
+ {
+ public:
+ Evas_Object *tabbar;
+ Evas_Object *sub_view[TabCount];
+ Elm_Object_Item *item[TabCount];
+ bool view_visible[TabCount];
+ int select_tab;
+
+ TabbedView()
+ : tabbar(0), select_tab(0)
+ {
+ memset(sub_view, 0, sizeof(sub_view));
+ memset(item, 0, sizeof(item));
+ memset(view_visible, 0, sizeof(view_visible));
+ }
+ };
+}
+
+#endif /* __COMMON_VIEW_MANAGER_H__ */
diff --git a/lib/common/include/ct-group-assign-popup.h b/lib/common/include/ct-group-assign-popup.h
new file mode 100644
index 0000000..e05d670
--- /dev/null
+++ b/lib/common/include/ct-group-assign-popup.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CONTACTS_ASSIGN_GROUP_POPUP_H__
+#define __CONTACTS_ASSIGN_GROUP_POPUP_H__
+
+#include <contacts.h>
+#include <Elementary.h>
+
+typedef void (*ct_assign_result_cb)(void *data);
+
+/**
+ * @brief Create assign group popup for contact
+ * @param[in] win Applicaton window
+ * @param[in] navi Main naviframe
+ * @param[out] contact _contacts_contact record to assign groups
+ * @param[in] assign_cb Called when groups are assigned
+ * @param[in] assign_cb_data Data to pass to assign_cb
+ * @return popup on success, otherwise NULL
+ */
+Evas_Object * ct_group_assign_popup_create(Evas_Object *win, Evas_Object *navi,
+ contacts_record_h contact, ct_assign_result_cb assign_cb, void *assign_cb_data);
+
+#endif /* CT_ASSIGN_GROUP_POPUP_H_ */
diff --git a/lib/common/include/ct-group.h b/lib/common/include/ct-group.h
new file mode 100755
index 0000000..a43aa3d
--- /dev/null
+++ b/lib/common/include/ct-group.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CT_GROUP_H__
+#define __CT_GROUP_H__
+
+Evas_Object* phone_create_group_view(ph_view_info *view_info);
+Evas_Object* phone_create_group_view_ug(ui_gadget_h ug, Evas_Object *parent,
+ int ug_request);
+void phone_group_set_navi(Evas_Object *layout);
+void phone_group_view_reset(Evas_Object *base);
+void phone_group_view_language_changed(Evas_Object *navi);
+void phone_group_set_background(Evas_Object *obj, bool is_background);
+void phone_group_email_result_cb(void *data, int *list, int cnt);
+void phone_group_message_result_cb(void *data, int *list, int cnt);
+
+#endif /* __CT_GROUP_H__ */
diff --git a/lib/common/include/ct-list-view-common.h b/lib/common/include/ct-list-view-common.h
new file mode 100644
index 0000000..9bde245
--- /dev/null
+++ b/lib/common/include/ct-list-view-common.h
@@ -0,0 +1,36 @@
+/*
+* Copyright 2012-2013 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+/**
+* @file ct-list-view-common.h
+* @author Sergei Kobec (s.kobec@samsung.com)
+* @date Created Mar 27, 2014 14:10
+*/
+
+#ifndef __CT_LIS_VIEW_COMMON_H__
+#define __CT_LIS_VIEW_COMMON_H__
+
+/**
+ * @brief Starts process of sending contact as text
+ * @param[in] contact_id ID of contact
+ * @param[in] person_id ID of person
+ * @param[in] navi Naviframe
+ * @param[in] ug Current user gadget
+ * @param[out] p_child_ug Child user gadget (in this case for message composer)
+ */
+void ct_process_send_contact_as_text(int contact_id, int person_id, Evas_Object* navi, ui_gadget_h ug, ui_gadget_h* p_child_ug);
+
+#endif//__CT_LIS_VIEW_COMMON_H__
diff --git a/lib/common/include/phone-common.h b/lib/common/include/phone-common.h
new file mode 100755
index 0000000..3fbb06d
--- /dev/null
+++ b/lib/common/include/phone-common.h
@@ -0,0 +1,1181 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_COMMON_H__
+#define __PHONE_COMMON_H__
+
+#include <time.h>
+#include <libintl.h>
+#include <ui-gadget.h>
+#include <contacts.h>
+#include <unicode/udat.h>
+#include <bundle.h>
+#include "phone-ug.h"
+#include "phone-path.h"
+#include "phone-text.h"
+#include "contacts-ug.h"
+#include "View.h"
+
+extern "C" int appcore_set_open_cb(int (*cb) (void *), void *data);
+
+#if !defined(LOCALEDIR)
+# define LOCALEDIR "/usr/ug/res/locale"
+#endif
+
+#ifndef STRLEN
+#define STRLEN(str) (((str) == NULL) ? 0: strlen(str))
+#endif
+
+#define PH_TEXT_MAX_LEN 1024
+#define PH_TEXT_SHORT_LEN 256
+#define CT_EDITFIELD_MAX_CHAR 1000
+#define PH_BLOCK_MSG_MAX_LEN 40
+
+#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
+#define CONTACTS_LIST_FOREACH(list, record) \
+ for(bool success = (contacts_list_get_current_record_p(list, &record) == CONTACTS_ERROR_NONE); \
+ success; \
+ success = ( \
+ (contacts_list_next(list) == CONTACTS_ERROR_NONE) \
+ && (contacts_list_get_current_record_p(list, &record) == CONTACTS_ERROR_NONE) \
+ ) \
+ )
+
+#define MSG_COMPOSER_UG "msg-composer-efl"
+#define MYFILES_UG "myfile-efl"
+#define VIBRATION_UG "setting-profile-efl"
+#define ACCOUNT_UG "setting-myaccount-efl"
+#define IMG_VIEWER_UG "image-viewer-efl"
+#define GALLERY_UG "gallery-efl"
+#define BLUETOOTH_UG "setting-bluetooth-efl"
+#define WIFI_DIRECT_UG "fileshare-efl"
+#define CALL_SETTINGS_UG "setting-call-efl"
+#define CONTACTS_SETTINGS_UG "contacts-settings-efl"
+
+#define EMAIL_COMPOSER_PKG "email-composer-efl"
+#define VOICECALL_PKG "org.tizen.call"
+#define VIDEOCALL_PKG "org.tizen.vtmain"
+#define DIALER_PKG "org.tizen.phone"
+#define CONTACTS_VIEWER_PKG "org.tizen.contacts-viewer"
+#define BROWSER_UI_PKG "org.tizen.browser"
+
+#define SETTING_MFC_PATH "/opt/usr/ug/data/ug-phone/mfc_option"
+#define VIEW_MODE_PATH "/opt/usr/ug/data/ug-phone/view_mode"
+
+#define CT_OPERATION_SOCIAL_ADD "http://tizen.org/appcontrol/operation/social/add"
+#define CT_OPERATION_SOCIAL_EDIT "http://tizen.org/appcontrol/operation/social/edit"
+#define CT_OPERATION_SOCIAL_CHOOSE "http://tizen.org/appcontrol/operation/social/choose"
+#define CT_OPERATION_SOCIAL_PICK "http://tizen.org/appcontrol/operation/social/pick"
+#define CT_OPERATION_SOCIAL_VIEW "http://tizen.org/appcontrol/operation/social/view"
+#define CT_OPERATION_VIEW "http://tizen.org/appcontrol/operation/view"
+
+#define CT_OPERATION_ITEM_TYPE "http://tizen.org/appcontrol/data/social/item_type"
+#define CT_OPERATION_PHONE "http://tizen.org/appcontrol/data/social/phone"
+#define CT_OPERATION_EMAIL "http://tizen.org/appcontrol/data/social/email"
+#define CT_OPERATION_URL "http://tizen.org/appcontrol/data/social/url"
+#define CT_OPERATION_ITEM_ID "http://tizen.org/appcontrol/data/social/item_id"
+#define CT_OPERATION_RESULT_TYPE "http://tizen.org/appcontrol/data/social/result_type"
+#define CT_OPERATION_PATH "http://tizen.org/appcontrol/data/path"
+#define CT_OPERATION_RETURN_RESULT "http://tizen.org/appcontrol/data/social/return_result"
+#define CT_OPERATION_SELECTION_MODE "http://tizen.org/appcontrol/data/selection_mode"
+
+#define CT_OPERATION_ITEM_TYPE_PERSON "person"
+#define CT_OPERATION_ITEM_TYPE_CONTACT "contact"
+#define CT_OPERATION_SELECTION_MODE_SINGLE "single"
+#define CT_OPERATION_SELECTION_MODE_MULTIPLE "multiple"
+#define CT_OPERATION_RESULT_TYPE_PHONE "phone"
+#define CT_OPERATION_RESULT_TYPE_EMAIL "email"
+#define CT_OPERATION_RESULT_TYPE_ITEM_ID "item_id"
+#define CT_OPERATION_RESULT_TYPE_VCARD "vcard"
+
+#define CT_GROUP_INDEX_TODAY -1
+#define CT_GROUP_INDEX_YESTERDAY -2
+
+#define TITLE_TEXT "title,text"
+#define BUTTON1 "button1"
+#define BUTTON2 "button2"
+#define CLICKED "clicked"
+
+const int incorrectId(-1);
+const int notRelatedToContactId(0);
+
+typedef enum date_style
+{
+ PH_LOG_TIME_ONLY,
+ PH_LOG_DATE_ONLY,
+} date_style;
+
+typedef enum
+{
+ LOG_TYPE_CALL = 0,
+ LOG_TYPE_VIDEO_CALL,
+ LOG_TYPE_SMS_MESSAGE,
+ LOG_TYPE_MMS_MESSAGE,
+ LOG_TYPE_MAX
+} Log_Type;
+
+typedef enum
+{
+ LOG_ACTION_DIALLED = 0,
+ LOG_ACTION_MISSED,
+ LOG_ACTION_RECEIVED,
+ LOG_ACTION_REJECTED,
+ LOG_ACTION_BLOCKED,
+ LOG_ACTION_MAX
+} Log_Action;
+
+enum
+{
+ CTTEXT_TYPE_CUSTOM,
+ CTTEXT_TYPE_MOBILE,
+ CTTEXT_TYPE_HOME,
+ CTTEXT_TYPE_WORK,
+ CTTEXT_TYPE_FAX_HOME,
+ CTTEXT_TYPE_FAX_WORK,
+ CTTEXT_TYPE_ASSISTANT,
+ CTTEXT_TYPE_PAGER,
+ CTTEXT_TYPE_OTHER,
+ CTTEXT_TYPE_TELEPHONE,
+ CTTEXT_TYPE_FAX,
+ CTTEXT_TYPE_CAR,
+ CTTEXT_TYPE_HOME2,
+ CTTEXT_TYPE_WORK2,
+ CTTEXT_TYPE_COMPANY_MAIN,
+ CTTEXT_TYPE_RADIO,
+};
+//CT_GET_TEXT_NUM_TYPE
+
+enum
+{
+ CT_VIEW_DETAIL,
+ CT_VIEW_INPUT,
+ CT_VIEW_ETC,
+};
+
+enum
+{
+ CT_LIST_NORMAL = 0x00,
+ CT_LIST_NORMAL_CONTACT = 0x01,
+ CT_LIST_NORMAL_FAVORITE = 0x02,
+ CT_LIST_NORMAL_MEMBER = 0x03,
+ CT_LIST_NORMAL_SDN = 0x04,
+
+ CT_LIST_SINGLE = 0x30,
+ CT_LIST_SINGLE_LINK = 0x31,
+ CT_LIST_SINGLE_RELATION = 0x32,
+
+ CT_LIST_SINGLE_UG = 0x50,
+
+ CT_LIST_MULTI = 0x70,
+ CT_LIST_MULTI_DELETE = 0x71,
+ CT_LIST_MULTI_ADD_MEMBER = 0x72,
+ CT_LIST_MULTI_REMOVE_MEMBER = 0x73,
+ CT_LIST_MULTI_ADD_FAVORITE = 0x74,
+ CT_LIST_MULTI_REMOVE_FAVORITE = 0x75,
+ CT_LIST_MULTI_EXPORT_TO_SIM = 0x76,
+ CT_LIST_MULTI_EXPORT_TO_VCARD = 0x77,
+ CT_LIST_MULTI_IMPORT_FROM_SIM = 0x78,
+ CT_LIST_MULTI_IMPORT_FROM_VCARD = 0x79,
+ CT_LIST_MULTI_RECIPIENT_MESSAGE_INGROUP = 0x7A,
+ CT_LIST_MULTI_RECIPIENT_EMAIL_INGROUP = 0x7B,
+ CT_LIST_MULTI_SHARE_MESSAGE = 0x7C,
+ CT_LIST_MULTI_SHARE_EMAIL = 0x7D,
+ CT_LIST_MULTI_SHARE_BT = 0x7E,
+ CT_LIST_MULTI_REORDER_FAVORITE = 0x7F,
+
+ CT_LIST_MULTI_UG = 0xA0,
+};
+
+enum
+{
+ CTUG_MSG_INVALID = 0,
+ CTUG_MSG_KEY_END = 1,
+};
+
+struct opq_msg_svc_s;
+typedef struct opq_msg_svc_s* msg_handle_t;
+
+typedef void* PTHREAD_FN;
+
+/**
+ * A callback that used by filling list-control specified inside of passed data-param.
+ * @param data that contains a reference to list-control to be filled
+ * @param list a list of contact-id in contacts-db
+ * @param cnt is a size of list.
+ */
+typedef void (*ct_select_result_cb)(void *data, int *list, int cnt);
+
+typedef void (*ct_contact_add_cb)(Evas_Object *win, Evas_Object *navi, int cnt);
+typedef void (*ct_change_name_cb)(void *data, char *str);
+typedef void (*selectall_changed_cb)(void *data, Eina_Bool checked);
+typedef void (*ct_list_navi_item_update_fn)(void *data);
+typedef void (*ct_group_rename_update_cb)(void *data, bool changed);
+typedef void (*ct_person_changed_cb)(void *data);
+typedef void (*ct_group_input_result_cb)(int grp_id, void *data, bool changed);
+
+typedef struct
+{
+ Evas_Object *win;
+ Evas_Object *navi;
+ ui_gadget_h ug;
+ int ug_request;
+ int ug_cnt_max;
+ char *ug_data; // update contact info
+} ph_view_info;
+
+typedef struct
+{
+ int cnt;
+ int cnt_checked_total;
+ int result;
+ bool alive;
+ bool completed;
+ bool without_cancel_btn;
+ pthread_t thread;
+ Ecore_Timer *timer;
+ Evas_Object *layout;
+ Evas_Object *progressbar;
+ Evas_Object *popup;
+
+ int *update_ids;
+ contacts_list_h update_list;
+ bool next_job;
+} ph_progress_info;
+
+typedef struct
+{
+ char *plog_display;
+ char *plog_img_path;
+ char *plog_number;
+
+ int id;
+ int plog_ct_id;
+ int plog_num_type;
+ int plog_log_time;
+ int plog_log_type;
+ int plog_duration;
+
+ int grouped_count;
+ Eina_Bool checked; //for check genlist
+ int group_index; //it's used as group index value.
+ int group_base_id;
+ Elm_Object_Item *item;
+
+} ph_log_info;
+
+typedef struct
+{
+ int id;
+ char *img_path;
+ char *display;
+ char *number;
+ char* numtype_label;
+ int number_type;
+ char *normal_name;
+} ph_contact_d;
+
+typedef struct
+{
+ int person_id;
+ int id_ret;
+ int id_ret_type;
+ char *display;
+ char *img_path;
+ char *number;
+ bool img_loaded;
+ bool number_loaded;
+ Eina_List *contact_list;
+ Eina_List *number_list;
+ Eina_List *email_list;
+
+ Eina_Bool checked;
+ Elm_Object_Item *item;
+} ph_favor_info;
+
+typedef struct
+{
+ char *display;
+ char *img_path;
+ char *ph_number;
+ char *numtype_label;
+ int number_type;
+ int contact_id;
+ int dial_number;
+ Eina_Bool is_checked;
+} ph_speeddial_info;
+
+struct ug_priv_data
+{
+ void (*result_cb)(void*, void*);
+ void (*destroy_cb)(void*);
+ void *cb_param;
+};
+
+typedef struct
+{
+ int position;
+ int skipped_count;
+ char index[10];
+ char prev_index[4];
+ Elm_Object_Item *item;
+} ct_list_index_data;
+
+typedef struct
+{
+ void *user_data;
+ Evas_Smart_Cb cb;
+ char *icon_path;
+} ctr_btn_info;
+
+typedef struct
+{
+ Evas_Object *win;
+ Evas_Object *entry;
+ Elm_Object_Item *navi_it;
+ Elm_Object_Item *btn_op;
+ char *name_old;
+ void *info;
+ ct_group_rename_update_cb result_cb;
+ void *fn_data;
+} ct_group_edit_data;
+
+typedef struct
+{
+ int id;
+ char *icon_path;
+ char *addressbook_name;
+ int account_id;
+} ct_ab_map;
+
+typedef struct
+{
+ void *person;
+ contacts_record_h contact;
+ Elm_Object_Item *item;
+ bool img_loaded;
+ bool number_loaded;
+ Eina_Bool checked;
+ char *img_path;
+ char *number;
+ char *number_display;
+ char *display;
+ char *status_str;
+ char *display_index;
+ int id;
+ int id_ret;
+ int id_ret_type;
+ int link_count;
+ bool is_in_group;
+ bool is_favourite;
+ bool phone_number_found;
+ int mode_ab;
+ Eina_List *addressbook_id_list;
+
+ Eina_List *number_list;
+ Eina_List *email_list;
+} ct_person_list;
+
+typedef struct : public Common::View
+{
+ Evas_Object *box;
+ Evas_Object *base_layout;
+ Evas_Object *content_layout;
+ Evas_Object *search_layout;
+ Evas_Object *nocontent;
+ Evas_Object *searchbar;
+ Evas_Object *genlist;
+ Evas_Object *fast_index;
+ Evas_Object *select_all_layout;
+ Elm_Object_Item *count_item;
+ Elm_Object_Item *last_sweep_item;
+ Elm_Object_Item *search_group_item;
+ Evas_Object *ctrl_button;
+
+ Elm_Genlist_Item_Class itcs[5];
+ void (*gl_sel)(void *data, Evas_Object *obj, void *event_info);
+ void *gl_sel_data;
+ void (*edit_sel_update)(void *data);
+
+ char group_index[4];
+ Elm_Object_Item *group_item;
+
+ char *ug_data;
+ service_h service_operation;
+
+ bool updating;
+ bool is_background;
+ bool need_update;
+ int list_mode; //will be removed.
+ int view_id;
+ int tab_mode;
+ int ug_request;
+ int list_op;
+ int base_ab;
+ int base_ab_mode;
+ int base_grp;
+ int readed_n;
+ int selected_person_id;
+ int cnt_list_total;
+ int cnt_checked;
+ int cnt_max_check;
+ int cnt_import_total;
+ int cnt_import;
+ char *title;
+ char *sub_title;
+ char *search_str;
+ contacts_name_display_order_e order_display;
+ int acc_count;
+ ct_ab_map *acc_types;
+
+ ct_list_navi_item_update_fn list_navi_item_update_fn;
+
+ contacts_list_h import_list;
+ contacts_list_h update_add_list;
+ contacts_list_h update_delete_list;
+ Eina_List *list;
+ Eina_List *list_index;
+ Eina_List *list_check_info;
+ Eina_List **list_grp_person;
+ Eina_List *list_delete_records;
+ Eina_List *list_import_records;
+
+ Ecore_Idler *list_idler;
+ Ecore_Timer *update_timer;
+ Ecore_Timer *update_queue_timer;
+
+ int idx_vcard;
+ const char *vcard_path;
+
+ ph_progress_info *p_info;
+ ct_select_result_cb select_result_cb;
+ ct_contact_add_cb contact_add_cb;
+ void *select_result_cb_data;
+
+ int current_rotate;
+ int radioGroupValue;
+ int personId;
+} ct_list_data;
+
+typedef struct : public Common::View
+{
+ Elm_Object_Item *titem;
+ Elm_Object_Item *prev_navi_item;
+ Evas_Object *ctrl_button;
+ Evas_Object *layout_link;
+ Elm_Object_Item *base_info_item;
+ Elm_Object_Item *base_item;
+ Elm_Object_Item *util_item;
+ Elm_Object_Item *number_util_item;
+
+ Evas_Object *genlist;
+ Evas_Object *genlist_link;
+ Ecore_Idler *idler;
+
+ Elm_Object_Item *link_item;
+ Elm_Object_Item *group_item;
+ Elm_Object_Item *ringtone_item;
+ Elm_Object_Item *vibration_item;
+
+ int order_display;
+
+ Eina_List *list_number;
+ Eina_List *list_email;
+ Eina_List *list_postal;
+ Eina_List *list_relationship;
+ Eina_List *list_event;
+ Eina_List *list_messenger;
+ Eina_List *list_website;
+ Eina_List *list_nickname;
+ Eina_List *list_note;
+
+ bool updated;
+ bool updating;
+ bool is_shortcut;
+ bool has_detail;
+ bool has_input;
+ bool ug_detail;
+ bool has_number;
+ int touch_x;
+ int touch_y;
+ int base_grp;
+ int base_ab;
+ int base_ab_mode;
+ int view_mode;
+ char *base_ab_name;
+ char* vcard_path;
+ int ug_request;
+ int view_create_version;
+ service_h service_operation;
+
+ int person_id;
+ contacts_record_h person;
+ contacts_record_h contact;
+ Eina_List *list_contacts;
+ Eina_List *list_activity;
+ Eina_List *list_unlink;
+
+ void *prev_view_data;
+ UDateFormat* formatter;
+ Evas_Object *genlist_unlink;
+ ph_progress_info *p_info;
+ bool only_input;
+ bool view_destroying;
+
+ bool touch_block;
+
+} ct_detail_data;
+
+typedef struct : public Common::View
+{
+ Evas_Object *noc;
+ Evas_Object *scroller;
+ Evas_Object *history_genlist;
+ Evas_Object *ctrl_button;
+ Evas_Object* select_all_layout;
+ Elm_Object_Item *select_all_item;
+ Eina_List *list;
+ Ecore_Idler *idler;
+ int person_id;
+ int list_count;
+ int pre_date_type;
+ UDateFormat* hformatter[5];
+ UDateFormat* formatter;
+ int cnt_checked;
+ int view_mode;
+ bool updated;
+ bool updating;
+ ph_progress_info *p_info;
+} ct_history_data;
+
+typedef struct
+{
+ Elm_Theme *th;
+ Evas_Object *win;
+ Evas_Object *navi;
+ Evas_Object *layout;
+ Evas_Object *activity_genlist;
+ Evas_Object *ctrl_button;
+ Elm_Object_Item *navi_item;
+ Eina_List *list;
+ int person_id;
+ int pre_date_type;
+ UDateFormat* hformatter[5];
+ UDateFormat* formatter;
+ ct_ab_map *acc_types;
+ int acc_cnt;
+} ct_activity_data;
+
+typedef struct : public Common::View
+{
+ Evas_Object *box;
+ Evas_Object *scroller;
+ Evas_Object *save_button;
+ Elm_Object_Item *pre_item;
+ Ecore_Event_Handler* win_prop_change;
+
+ bool add_job_title;
+ bool add_department;
+ bool add_organization;
+
+ Evas_Object *ly_image;
+ Evas_Object *ly_basic_info;
+ Evas_Object *ly_basic_info_middle_name;
+ Evas_Object *ly_basic_info_last_name;
+ Evas_Object *ly_basic_info_suffix;
+ Evas_Object *ly_basic_info_nickname;
+ Evas_Object *ly_basic_info_job_title;
+ Evas_Object *ly_basic_info_department;
+ Evas_Object *ly_basic_info_company;
+ Evas_Object *ly_number_first;
+ Evas_Object *ly_number_last;
+ Evas_Object *ly_number_default;
+ Evas_Object *ly_number_set_default_separator_before;
+ Evas_Object *ly_number_set_default;
+ Evas_Object *ly_number_set_default_separator_after;
+ Evas_Object *ly_number_base;
+ Evas_Object *ly_email_first;
+ Evas_Object *ly_email_last;
+ Evas_Object *ly_email_default;
+ Evas_Object *ly_email_set_default;
+ Evas_Object *ly_email_base;
+ Evas_Object *ly_addr_first;
+ Evas_Object *ly_addr_last;
+
+ Evas_Object *ly_seperator_more;
+ Evas_Object *ly_seperator_basic_info;
+ Evas_Object *ly_messenger_first;
+ Evas_Object *ly_messenger_last;
+ Evas_Object *ly_url_first;
+ Evas_Object *ly_url_last;
+ Evas_Object *ly_relationship_first;
+ Evas_Object *ly_relationship_last;
+ Evas_Object *ly_event_first;
+ Evas_Object *ly_event_last;
+ Evas_Object *ly_note;
+
+ Evas_Object *ly_group;
+ Evas_Object *ly_ringtone;
+ Evas_Object *ly_vibration;
+ Evas_Object *ly_address_book;
+ Evas_Object *ly_moreinfo;
+
+ bool saved;
+ Eina_Bool save_disable;
+ int view_create_ver;
+ int cnt_addr;
+ int cnt_num;
+ int idx_append;
+
+ int base_ab;
+ int base_ab_mode;
+ char *name_old;
+ char *base_ab_name;
+
+ int contact_id;
+ contacts_record_h contact;
+ ct_detail_data *cdetail_d;
+
+ bool camera_service_launched;
+ ui_gadget_h crop_ug;
+ bool keypad_on;
+} ct_input_data;
+
+typedef struct
+{
+ Evas_Object *ly_content;
+ contacts_record_h record;
+ Evas_Object *data;
+ const char *view_uri;
+} ct_input_typed_data;
+
+typedef enum
+{
+ CT_AB_POPUP_TYPE_INPUT_VIEW,
+ CT_AB_POPUP_TYPE_GINPUT_VIEW,
+ CT_AB_POPUP_TYPE_LIST_VIEW,
+} ct_addrbook_popup_type;
+
+typedef struct
+{
+ int id;
+ int mode;
+ char *name;
+ bool all_contacts_item;
+ Elm_Object_Item *item;
+} ct_ab_popup_data;
+
+typedef struct
+{
+ Evas_Object* parent;
+ Evas_Object* popup;
+ Evas_Object* button1;
+ Evas_Object* button2;
+ char* popup_label;
+ char* button1_label;
+ char* button2_label;
+ Evas_Smart_Cb button1_cb;
+ Evas_Smart_Cb button2_cb;
+ void* button1_data;
+ void* button2_data;
+} ct_confirm_popup_data;
+
+typedef struct
+{
+ int contact_id;
+ contacts_record_h contact_record;
+ char** field_names;
+ char** strings_of_data;
+ bool* checked_items;
+
+ ct_confirm_popup_data* p_popup_data;
+ Evas_Object* box;
+ Evas_Object* select_all_layout;
+ Evas_Object* genlist;
+ Elm_Genlist_Item_Class* genlist_item_class;
+
+ UDateFormat* formatter;
+ size_t fields_count;
+
+ ui_gadget_h ug;
+ ui_gadget_h child_ug;
+} ct_send_as_text_data;
+
+typedef struct
+{
+ size_t current_index;
+ ct_send_as_text_data* p_contact_text_data;
+} ct_send_as_text_with_additional_info;
+
+typedef struct
+{
+ ct_confirm_popup_data* p_popup_data;
+ msg_handle_t msg_handle;
+
+ int contact_id;
+
+ Evas_Object* genlist;
+
+ //Previous values
+ bool is_blocked_calls;
+ bool is_blocked_messages;
+ //Values related to check boxes
+ bool block_calls;
+ bool block_messages;
+} ct_contact_block_data;
+
+typedef struct
+{
+ const char* item_caption;
+ bool* is_checked;
+} ct_contact_block_item_data;
+
+/**
+ * Typedef for function that add/delete number to/from spam list for messages
+ */
+typedef bool (*number_handler_for_spam_messages)(msg_handle_t msg_handle, const char* number);
+
+/**
+ * Typedef for functions that gets string from any child record of _contacts_contact
+ */
+typedef char* p_get_str_from_child_record(ct_send_as_text_data* p_text_as_data, unsigned int child_table_id,
+ int record_index, unsigned int str_field_id);
+
+/**
+ * Typedef for functions that fill numbers, mails... etc. of contact
+ */
+typedef bool ct_fill_function(ct_send_as_text_data* p_text_as_data,
+ size_t* current_name_index, size_t* current_data_index);
+
+void phone_free_contacts(Eina_List *list);
+Eina_List * phone_load_speeddial_data(int *ref_count);
+void phone_free_speeddial_data(Eina_List *list);
+char *phone_get_voice_mail_number(void);
+int speed_set_speeddial(int spdial_num, int number_id);
+
+ui_gadget_h phone_launch_msg_composer_ug(ui_gadget_h parent_ug, char *data, int msg_id,
+ void (*destroy_cb)(void*), void *cb_param);
+ui_gadget_h phone_launch_contact_list_ug(ui_gadget_h parent_ug, int request,
+ void (*result_cb)(void*, void*), void (*destroy_cb)(void*),
+ void *cb_param);
+ui_gadget_h phone_launch_contact_detail_ug(ui_gadget_h parent_ug, int contact_index,
+ void (*destroy_cb)(void*), void *cb_param);
+ui_gadget_h phone_launch_contact_add_list_edit_ug(ui_gadget_h parent_ug, char *data,
+ void (*destroy_cb)(void*), void *cb_param);
+
+/**
+ * @brief launch contact edit UI gadget
+ * @param[in] parent_ug parent's UI gadget.
+ * @param[in] data person id.
+ * @param[in] destroy_cb callback for destroying UI gadget.
+ * @param[in] cb_param data for destroy_cb.
+ * @return The pointer of UI gadget
+ */
+ui_gadget_h phone_launch_contact_edit_ug(ui_gadget_h parent_ug, int data,
+ void (*destroy_cb)(void *), void *cb_param);
+
+/**
+ * @brief launch bluetooth UI gadget
+ * @param[in] parent_ug parent's UI gadget.
+ * @param[in] attach path of the file which will be attached.
+ * @param[in] destroy_cb callback for destroying UI gadget.
+ * @param[in] cb_param data for destroy_cb.
+ * @return The pointer of UI gadget
+ */
+ui_gadget_h phone_launch_bluetooth_ug(ui_gadget_h parent_ug, const char *attach,
+ void (*destroy_cb)(void *), void *cb_param);
+
+ui_gadget_h phone_image_crop_ug(ui_gadget_h parent, const char *photo,
+ struct ug_cbs *cbs);
+ui_gadget_h ctui_msg_ug(ui_gadget_h parent, const char *number,
+ const char *attach, void (*destroy_cb)(void*), void *cb_param);
+ui_gadget_h ctui_predefined_body_msg_ug(ui_gadget_h parent, const char *number, const int idx,
+ const char *attach, void (*destroy_cb)(void*), void *cb_param);
+ui_gadget_h ctui_account_ug(ui_gadget_h data, Evas_Object *obj, void *event_info,
+ void (*destroy_cb)(void*), void *cb_param);
+ui_gadget_h phone_launch_settings_ug(ui_gadget_h parent_ug, const char* ug_name,
+ void (*destroy_cb)(void*), void *cb_param);
+
+void ug_common_destroy_cb(ui_gadget_h ug, void *priv);
+void ug_common_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+void ctui_destroy_child_ug(void *data);
+
+void phone_launch_voice_call(const int id, const char* number);
+
+Evas_Object *phone_create_base_layout(Evas_Object *parent, bool is_fullview);
+Evas_Object *phone_show_popup(Evas_Object *parent, const char *desc,
+ double timeout);
+Evas_Object *phone_create_confirm_popup(Evas_Object **popup, Evas_Object *win,
+ const char* description,
+ void (*btn_clicked_cb)(void *, Evas_Object *, void *), void *cb_data);
+Evas_Object *phone_create_list_sweep_btn(Evas_Object *parent, const char *fullpath);
+Evas_Object *phone_create_bg(Evas_Object *parent);
+Evas_Object *phone_create_icon_with_img(Evas_Object *parent, const char *full_path);
+Evas_Object *phone_create_navi_btn(Evas_Object *parent, const char *style);
+
+/**
+ * Set visibility of add_button && searchbar.
+ * * @param[in] clist_d Value to get searchbar && add_button.
+ * @param[in] visible state of visibility.
+ * */
+void phone_set_searchbar_add_button_visible(ct_list_data &clist_d, bool visible);
+
+Evas_Object *phone_progressbar_popup(Evas_Object *parent,
+ ph_progress_info *p_info, const char *title);
+Evas_Object *phone_get_notify(Evas_Object *parent);
+void phone_show_notify(Evas_Object *parent, const char *msg);
+void phone_hide_notify(Evas_Object *parent);
+void phone_show_tickernoti(const char *);
+void phone_navi_item_reset(Elm_Object_Item *item, void *data);
+void phone_set_view_info(ph_view_info *view_info, Evas_Object *win,
+ Evas_Object *navi, void *ug, int ug_request, int cnt_max,
+ char *ug_data);
+
+void phone_service_reply_simple(service_h service, service_result_e result);
+void phone_list_ug_return_ids(ui_gadget_h ug, int *result_list, int cnt,
+ const char *bd_key);
+void phone_list_ug_return_values(service_h service, int *result_list, int cnt,
+ const char *result_type);
+void phone_list_ug_return_number_email_ids(ui_gadget_h ug,
+ int *result_number_list, int number_list_count, int *result_email_list,
+ int email_list_count);
+void phone_ug_return_id(ui_gadget_h ug, int ct_id, int num_id, int email_id);
+void phone_ug_return_value(service_h service, int ct_id, int num_id,
+ int email_id, int result_id);
+void phone_ug_return_vcard(ui_gadget_h ug, int ct_id, char *vcard);
+void phone_ug_operation_return_vcard(service_h service, int ct_id, char *vcard);
+Evas_Object* phone_create_nocontents(Evas_Object *parent, const char* label);
+void phone_toolbar_disabled_item_append(Evas_Object *toolbar, int cnt);
+
+char* ctui_get_addressbook_icon_path(int addressbook_id);
+const char* ctui_get_default_contact_img(int view_type);
+void ctui_get_number_type_str(contacts_record_h record, int CTS_NUMBER_type,
+ char *dest, int dest_len);
+void ctui_ld_to_dd(ct_list_data *clist_d, ct_detail_data *cdetail_d);
+
+Evas_Object* ctui_addrbook_popup(Evas_Object *parent, Evas_Smart_Cb item_sel_cb,
+ void *sel_cb_data, ct_addrbook_popup_type ab_type);
+void ctui_entry_limit_size_set(Evas_Object *entry);
+Evas_Object* ctui_create_btn(Evas_Object *parent, const char *label);
+void ctui_genlist_append_separator_10px(Evas_Object *genlist);
+void ctui_genlist_append_separator_20px(Evas_Object *genlist);
+void ctui_navi_btn_disabled_set(Evas_Object *navi, Eina_Bool disabled);
+char* ctui_entry_markup_to_utf8(const char *s);
+char* ctui_entry_markup_to_utf8_without_spaces(const char *s);
+void ctui_entry_entry_set(Evas_Object *entry, const char *s);
+Evas_Object* ctui_create_editfield(Evas_Object *parent, const char *title,
+ const char *guide, bool multiline);
+void ctui_genlist_append_separator_20px_with_line(Evas_Object *genlist);
+void ctui_genlist_append_separator_8px_with_line(Evas_Object *genlist);
+void ctui_list_ug_hide_cb(void *data, Evas_Object *obj, void *event_info);
+Evas_Object* phone_create_select_all(Evas_Object *box,
+ const char *selectall_text, selectall_changed_cb cb, void *cb_data);
+void ctui_list_free_contacts(Eina_List* list);
+void ctui_list_refresh_genlist(ct_list_data *clist_d);
+void ctui_list_handle_search(ct_list_data *clist_d);
+int phone_detail_log_is_call_ing_type(int type);
+int phone_detail_log_is_mms_type(int type);
+int phone_detail_log_is_sms_type(int type);
+int phone_detail_log_is_email_type(int type);
+char* phone_detail_log_get_icon_type(int log_type);
+char* phone_detail_log_get_duration_from_number(int number);
+void phone_detail_log_init_time_format(void);
+void phone_detail_log_generate_date_format(UDateFormat **formatter);
+char* phone_detail_log_get_icon_path_with_action(int log_type);
+char* phone_detail_log_get_date(UDateFormat ** formatter, int log_time);
+char* phone_detail_log_get_time(UDateFormat ** formatter, int log_time);
+int phone_detail_log_get_date_type(int log_time, int log_duration);
+void phone_detail_log_delete_date_format(UDateFormat **formatter);
+int phone_detail_log_get_phonenumber_type(int CTS_NUMBER_type);
+char *ph_log_util_get_formatted_date(UDateFormat **formatter, int log_time,
+ date_style style);
+void ct_list_clear_pdata(ct_list_data *clist_d);
+void phone_move_ctxpopup(Evas_Object *popup, Evas_Object *item);
+void phone_resize_notify(Evas_Object *parent, int rotate);
+void ctui_get_addressbook_name(int addressbook_id, char *dest, int dest_len);
+Eina_List* ctui_person_get_writable_contact_list(int person_id);
+Eina_List* ctui_person_get_number_list(Eina_List *contact_list);
+Eina_List* ctui_person_get_email_list(Eina_List *contact_list);
+Eina_List* ctui_person_get_contact_list(int person_id);
+void ctui_free_record_list(Eina_List *contact_list);
+int ctui_get_email_type_index(int type);
+int ctui_get_mfc_option(void);
+ct_person_list *find_info_in_list_by_id(Eina_List *check_list,int person_id);
+
+int ctui_get_view_mode(void);
+void ctui_set_view_mode(int addressbook_id);
+
+contacts_error_e phone_cts_get_list(const char *view_uri, int property_id,
+ int match_value, contacts_list_h *out_list);
+void phone_cts_free_list(contacts_list_h list);
+contacts_error_e phone_cts_get_int_from_list(contacts_list_h list,
+ int property_id, int *out_int);
+contacts_error_e phone_cts_get_str_from_list(contacts_list_h list,
+ int property_id, char **out_str);
+contacts_error_e phone_cts_get_bool_from_list(contacts_list_h list,
+ int property_id, bool *out_bool);
+contacts_error_e phone_cts_get_default_number(int person_id,
+ contacts_record_h *record_clone);
+contacts_error_e phone_cts_get_default_email(int person_id,
+ contacts_record_h *record_clone);
+void ctui_get_account_name_by_address_book_id(int address_book_id, char *dest,
+ int dest_len);
+bool ctui_list_make_vcard(int contactid, char *path, int path_length);
+void ctui_list_lazy_update(const char *view_uri, void *data);
+char* ctui_list_get_highlight_text(ct_list_data *clist_d, const char *src);
+Evas_Object *phone_create_toolbar_btn(Evas_Object *parent, const char *text,
+ Evas_Smart_Cb func, void *data);
+void ctui_input_data_popup_hide_cb(void *data, Evas_Object *obj, void *event_info);
+void ctui_detail_data_popup_hide_cb(void *data, Evas_Object *obj, void *event_info);
+void create_no_content_layout(ct_list_data *clist_d,Evas_Object *parent);
+
+int ctui_list_checked_cnt_get(Eina_List *list);
+void ctui_list_update_selection_info(void *data);
+void ctui_list_set_unsweep(ct_list_data *clist_d);
+
+/**
+ * Removes badge if current package(DIALER_PKG) has it.
+ * @return true if badge exists, false otherwise.
+ * */
+bool removeBadge();
+
+/**
+ * Checks if badge exists for current package(DIALER_PKG)
+ * @return true if badge exists false otherwise
+ * */
+bool hasBadge();
+
+inline bool is_unknown_contact(const char *pPhoneNumber)
+{
+ return (NULL == pPhoneNumber || '\0' == pPhoneNumber[0]);
+}
+
+contacts_record_h ctui_get_record_image(contacts_record_h record_contact);
+
+int ctui_get_addressbook_id_by_index(Eina_List *list, unsigned int index);
+Eina_List* ctui_get_addressbook_id_list(const char *ori_string,
+ const char *sep);
+void ctui_list_edit_navi_pop(void *data, Evas_Object *obj, void *event_info);
+int ctui_get_addressbook_id(char* addressbook_name);
+
+void ctui_create_contacts_error_popup(Evas_Object *parent, int err);
+
+void create_emergency_contacts_group();
+
+bool has_emergency_contacts();
+
+void ctui_list_searchbar_cancel_cb(void *data, Evas_Object *obj,
+ void *event_info);
+
+/**
+ * Create searchbar.
+ * * @param[in] parent Layout to create searchbar.
+ * @param[in] clist_d Value to keep searchbar.
+ * */
+void ctui_list_create_searchbar(Evas_Object* parent,
+ ct_list_data *clist_d);
+
+/**
+ * @brief Convert string to bool
+ * @param[in] strVal Value to be converted
+ * @return Bool value
+ */
+bool ct_list_str_to_bool(const std::string& strVal);
+
+/**
+ * @brief Convert bool to string
+ * @param[in] bVal Value to be converted
+ * @return String value
+ */
+std::string ct_list_bool_to_str(bool bVal);
+
+/**
+ * @brief Insert a record in _contacts_extension table
+ * @param[in] extensionRec Record associated to table
+ * @param[in] extensionField Field to set the @a strValue
+ * @param[in] contactId Id of contact with that need to be associated
+ * @param[in] strValue String value that assigned
+ * @return True if success, otherwise false
+ */
+bool ct_list_insert_extension(contacts_record_h extensionRec, unsigned int extensionField, int contactId,
+ const std::string& strValue);
+
+/**
+ * @brief Updates a record in _contacts_extension table
+ * @param[in] contactRec Record associated to _contacts_contact table
+ * @param[in] extensionRec Record associated to _contacts_extension table
+ * @return true if success, otherwise false
+ */
+bool ct_list_toggle_blocked(contacts_record_h contactRec, contacts_record_h extensionRec);
+
+/**
+ * @brief Convert string to uppercase
+ * @param[in] str Incoming string
+ * @return Uppercased string
+ */
+std::string ct_make_uppercase_string(const std::string& str);
+
+/**
+ * @brief Gets extension id related to @a contactId
+ * @param contactId Id of contact
+ * @return ID of extension related to @a contactId if exist, otherwise -1
+ */
+int phone_get_extension_id(int contactId);
+
+/**
+ * @brief Provides information if contact blocked or not base on id
+ * @param[in] contact_id Id of contact
+ * @return true if contact is blocked, otherwise false
+ */
+bool phone_is_blocked_contact_for_calls(int contact_id);
+
+/**
+ * @brief Gets list of records
+ * @remarks If function returns true @a list must be destroyed with contacts_list_destroy() by you.
+ * @tparam FilterFieldType Type of field for filter
+ * @param[in] tableUri Uri to table to which the request is made
+ * @param[in] filterField Field by the value which the search is conducted
+ * @param[in] filterVal Value of filtered field
+ * @param[out] list List of records that satisfy the query
+ * @return true if success, otherwise false.
+ */
+template < typename FilterFieldType>
+bool get_records_list(const std::string& tableUri, unsigned int filterField,
+ FilterFieldType filterVal, contacts_list_h* list);
+
+/**
+ * @brief This function makes blocked/unblocked contact
+ * @param[in] contactId ID of contact
+ * @return true if success, otherwise false
+ */
+bool phone_toggle_blocked_contact_for_calls(int contactId);
+
+/**
+ * @brief This function copy @a number to dialing screen
+ * @param[in] number Tel. number
+ * @return true if success, otherwise false
+ */
+bool phone_copy_to_dialing_screen(const std::string& number);
+
+/**
+ * @brief Gets date and time as string
+ * @remark return value must be destroyed with free by you
+ * @param[in] formatter Formatter of date and time
+ * @param[in] year Year
+ * @param[in] month Month
+ * @param[in] day Day
+ * @return date and time as string
+ */
+char* phone_get_datetime_str(UDateFormat* formatter, int year, int month, int day);
+
+/**
+ * @brief Initiatialise date and time formatter
+ * @return formatter
+ */
+UDateFormat* phone_init_time_formatter(void);
+
+/**
+ * @brief Gets index of address types for localisation strings
+ * @param[in] type Index of type
+ * @return Index for localisation
+ */
+int phone_get_address_type_index(int type);
+
+/**
+ * @brief Gets index of website types for localisation strings
+ * @param[in] type Index of type
+ * @return Index for localisation
+ */
+int phone_get_website_type_index(int type);
+
+/**
+ * @brief Gets index of number types for localisation strings
+ * @param[in] type Index of type
+ * @return Index for localisation
+ */
+int phone_get_number_type_index(int ct_num_type);
+
+/**
+ * @brief Destroy @a ct_confirm_popup_data structure
+ * @param[in] p_popup_data Popup data
+ */
+void phone_destroy_confirm_popup_data(ct_confirm_popup_data* p_popup_data);
+
+/**
+ * @brief Fill @a ct_confirm_popup_data structure
+ * @param[in] p_popup_data Popup data
+ * @return true if success, otherwise false
+ */
+bool phone_fill_confirm_popup_data(ct_confirm_popup_data* p_popup_data);
+
+/**
+ * @brief Gets contact ID by person ID
+ * @param[in] personId ID of person
+ * @return ID of contact on success, otherwise 0
+ */
+int phone_get_contact_id_by_person_id(int personId);
+
+/**
+ * @brief Get group localized name
+ * @param[in] group_record _contacts_group view record
+ * @return Group name or localized name for one of the default groups
+ */
+const char * phone_get_group_name(contacts_record_h group_record);
+
+/**
+ * @brief Add button to popup
+ * @remarks Added button automatically hides popup when clicked so you don't
+ * need to hide it in your callback and create callbacks for cancel buttons.
+ * @param[in] popup Popup widget
+ * @param[in] text Button text
+ * @param[in] func Button click callback
+ * @param[in] data Data to pass to func
+ * @return true button on success, otherwise NULL
+ */
+Evas_Object * phone_popup_add_button(Evas_Object *popup, const char *text,
+ Evas_Smart_Cb func, void *data);
+
+/**
+ * @brief Get contact name by ID
+ * @remark return value must be destroy with free by you
+ * @param[in] id Contact ID
+ * @return contact name on success, otherwise false
+ */
+char* phone_get_contact_name(int id);
+
+/**
+ * @brief Create new class for genlist item
+ * @remark return value must be destroyed with elm_genlist_item_class_free by you
+ * @param[in] style Style of item
+ * @param[in] decorate_style Style of item if item in decorate mode
+ * @param[in] decoreate_all_style Style of item if genlist in decorate mode
+ * @param[in] get_text Text fetching function for genlist item
+ * @param[in] get_content Content fetching function for genlist item
+ * @param[in] get_state State fetching function for genlist item
+ * @param[in] del_func Deletion function for genlist item
+ * @return new genlist item class if success, otherwise false
+ */
+Elm_Genlist_Item_Class* phone_create_item_class(const char* style, const char* decorate_style, const char* decorate_all_style,
+ Elm_Gen_Item_Text_Get_Cb get_text, Elm_Gen_Item_Content_Get_Cb get_content,
+ Elm_Gen_Item_State_Get_Cb get_state, Elm_Gen_Item_Del_Cb del_func);
+
+/**
+ *@brief Create block contact confirm popup
+ *@param[in] parent Parent layout
+ *@param[in] contact_id Contact ID
+ *@return popup
+ */
+Evas_Object* phone_create_block_contact_popup(Evas_Object* parent, int contact_id);
+#endif //__PHONE_COMMON_H__
diff --git a/lib/common/include/phone-path.h b/lib/common/include/phone-path.h
new file mode 100755
index 0000000..7fdaed5
--- /dev/null
+++ b/lib/common/include/phone-path.h
@@ -0,0 +1,137 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_PATH_H__
+#define __PHONE_PATH_H__
+
+#if !defined(IMGDIR)
+# define IMGDIR "/usr/ug/res/images/ug-"PACKAGE
+#endif
+
+#if !defined(EDJDIR)
+# define EDJDIR "/usr/ug/res/edje/ug-"PACKAGE
+#endif
+
+#if !defined(UGDATAIDR)
+# define UGDATAIDR "/opt/usr/ug/data/ug-"PACKAGE
+#endif
+
+#define PROGRESS_EDJ EDJDIR"/progress.edj"
+#define DIALER_EDJ EDJDIR"/dialer.edj"
+#define DIALER_THEME_EDJ EDJDIR"/dialer_theme.edj"
+#define LOGDETAIL_THEME_EDJ EDJDIR"/logdetail_theme.edj"
+#define SPEEDDIAL_THEME_EDJ EDJDIR"/speeddial_theme.edj"
+#define CONTACTS_EDJ EDJDIR"/contacts.edj"
+#define FAVORITES_THEME_EDJ EDJDIR"/favorites_theme.edj"
+#define GROUP_THEME_EDJ EDJDIR"/group_theme.edj"
+#define CONTACT_BUTTON_THEME_EDJ EDJDIR"/contact_button.edj"
+#define IMAGE_LAYOUT_EDJ EDJDIR"/image_layout.edj"
+#define LIST_THEME_EDJ EDJDIR"/list_theme.edj"
+#define DETAIL_THEME_EDJ EDJDIR"/detail_theme.edj"
+#define SELECTION_INFO_EDJ EDJDIR"/selectioninfo.edj"
+#define NOCONTENT_LAYOUT_EDJ EDJDIR"/nocontent_layout.edj"
+#define LOG_ITEM_ICON_EDJ EDJDIR"/log_item_icon.edj"
+
+#define IMG_DEFAULT IMGDIR"/caller_ID_default_70x70_man.png"
+#define IMG_VOICEMAIL_ICON IMGDIR"/C01-5_icon_voicecall.png"
+
+#define IMG_ALL_BLOCKED_ICON IMGDIR"/C01-4_icon_Blocked.png"
+#define IMG_CALL_BLOCKED_ICON IMGDIR"/C01-4_icon_call_blocked.png"
+#define IMG_MESSAGE_BLOCKED_ICON IMGDIR"/C01-4_icon_message_blocked.png"
+#define IMG_MESSAGE_ICON IMGDIR"/C02_icon_message.png"
+
+
+#define PH_IMG_ICON_DIALER IMGDIR"/01_controlbar_icon_dialer.png"
+#define PH_IMG_ICON_CONTACTS IMGDIR"/01_controlbar_icon_contacts.png"
+#define PH_IMG_ICON_LOGS IMGDIR"/01_controlbar_icon_logs.png"
+#define PH_IMG_ICON_GROUP IMGDIR"/01_controlbar_icon_groups.png"
+#define PH_IMG_ICON_FAVORITE IMGDIR"/01_controlbar_icon_favorite.png"
+#define PH_IMG_ICON_DONE IMGDIR"/01_controlbar_icon_save.png"
+#define PH_IMG_ICON_EDIT IMGDIR"/01_controlbar_icon_edit.png"
+#define PH_IMG_ICON_ADD IMGDIR"/01_controlbar_icon_create.png"
+#define PH_IMG_ICON_MORE IMGDIR"/01_controlbar_icon_more.png"
+#define PH_IMG_ICON_PHONE IMGDIR"/phone.png"
+#define PH_IMG_ICON_CALL IMGDIR"/C02_button_icon_call.png"
+#define PH_IMG_ICON_CALL_PRESS IMGDIR"/C02_button_icon_call_press.png"
+#define PH_IMG_ICON_CALL_DIM IMGDIR"/C02_button_icon_call_dim.png"
+#define PH_IMG_ICON_MESSAGE IMGDIR"/C02_button_icon_message.png"
+#define PH_IMG_ICON_MESSAGE_PRESS IMGDIR"/C02_button_icon_message_press.png"
+#define PH_IMG_ICON_MESSAGE_DIM IMGDIR"/C02_button_icon_messagedim.png"
+#define PH_IMG_ICON_VIDEOCALL IMGDIR"/C02_button_icon_videocall.png"
+#define PH_IMG_ICON_VIDEOCALL_PRESS IMGDIR"/C02_button_icon_videocall_press.png"
+#define PH_IMG_ICON_VIDEOCALL_DIM IMGDIR"/C02_button_icon_videocall_call_dim.png"
+#define PH_IMG_ICON_CHAT_ON IMGDIR"/C02_icon_chat_on.png"
+#define PH_IMG_ICON_FILETRANSFER IMGDIR"/C02_icon_filetransfer.png"
+
+#define PH_IMG_CIRCLE_ICON_CALL IMGDIR"/C02_circle_icon_call.png"
+#define PH_IMG_ICON_CALL_PRESSED IMGDIR"/C02_circle_icon_call_press.png"
+#define PH_IMG_ICON_SMS IMGDIR"/C02_circle_icon_sms.png"
+#define PH_IMG_ICON_SMS_PRESSED IMGDIR"/C02_circle_icon_sms_press.png"
+#define PH_IMG_ICON_VCALL IMGDIR"/C02_circle_icon_vt-call.png"
+#define PH_IMG_ICON_VCALL_PRESSED IMGDIR"/C02_circle_icon_vt-call_press.png"
+
+#define PH_IMG_ICON_LOGTYPE_MISSED IMGDIR"/C01-4_controlbar_icon_missed_call.png"
+#define PH_IMG_ICON_LOGTYPE_ALL IMGDIR"/C01-4_controlbar_icon_all.png"
+#define PH_IMG_ICON_CREATE_CONTACT IMGDIR"/C01-4_controlbar_icon_create.png"
+#define PH_IMG_ICON_DELETE IMGDIR"/C02_button_icon_delete.png"
+#define PH_IMG_ICON_SET_BLOCK IMGDIR"/C01-4_controlbar_icon_view_block.png"
+#define PH_IMG_ICON_VIEW_CONTACT IMGDIR"/C01-4_controlbar_icon_view_contacts.png"
+
+#define CTUI_IMG_ICON_ADD_ACCOUNTS IMGDIR"/01_controlbar_icon_add_account.png"
+#define CTUI_IMG_ICON_ADD_FAVORITE IMGDIR"/01_controlbar_icon_add-to-bookmarks.png"
+#define CTUI_IMG_ICON_CREATE_GROUP IMGDIR"/01_controlbar_icon_exchangs_register.png"
+#define CTUI_IMG_ICON_ADD_TO_CONTACTS IMGDIR"/01_controlbar_icon_add_to_contact.png"
+#define CTUI_IMG_ICON_CLOSE IMGDIR"/01_controlbar_icon_close.png"
+#define CTUI_IMG_ICON_EXPAND_OPENED IMGDIR"/00_button_icon_expand_opened.png"
+#define CTUI_IMG_ICON_EXPAND_CLOSED IMGDIR"/00_button_icon_expand_closed.png"
+#define CTUI_IMG_ICON_VIEW IMGDIR"/01_controlbar_icon_bluetooth_preview.png"
+#define CTUI_IMG_ICON_RESET IMGDIR"/C02_icon_reset.png"
+#define CTUI_IMG_ICON_ADD_GROUP IMGDIR"/C02_icon_add_group.png"
+#define CTUI_IMG_ICON_FAVORITE IMGDIR"/C02_favorite_icon.png"
+#define CTUI_IMG_ICON_CIRCLE IMGDIR"/C02_circle_button.png"
+#define CTUI_IMG_ICON_CIRCLE_PRESSED IMGDIR"/C02_circle_button_press.png"
+#define CTUI_IMG_ICON_CALL IMGDIR"/C02_circle_icon_call.png"
+#define CTUI_IMG_ICON_CALL_PRESSED IMGDIR"/C02_circle_icon_call_press.png"
+#define CTUI_IMG_ICON_SMS IMGDIR"/C02_circle_icon_sms.png"
+#define CTUI_IMG_ICON_SMS_PRESSED IMGDIR"/C02_circle_icon_sms_press.png"
+#define CTUI_IMG_ICON_VCALL IMGDIR"/C02_circle_icon_vt-call.png"
+#define CTUI_IMG_ICON_VCALL_PRESSED IMGDIR"/C02_circle_icon_vt-call_press.png"
+#define CTUI_IMG_ICON_PREVIOUS IMGDIR"/01_controlbar_icon_previous.png"
+#define CTUI_IMG_ICON_NEXT IMGDIR"/01_controlbar_icon_next.png"
+
+#define CTUI_IMG_ICON_EMAIL IMGDIR"/email.png"
+#define CTUI_IMG_ICON_MESSAGE IMGDIR"/message.png"
+#define CTUI_IMG_ICON_MESSAGE_PRESS IMGDIR"/C01-3_icon_message_press.png"
+
+#define CTUI_IMG_CHECK IMGDIR"/00_check_checking.png"
+#define CTUI_IMG_DEFAULT_PHOTO_SMALL IMGDIR"/caller_ID_default_96x96.png"
+#define CTUI_IMG_DEFAULT_PHOTO_BIG IMGDIR"/caller_ID_default_128x128.png"
+#define CTUI_IMG_PHOTO_EDIT IMGDIR"/caller_ID_edit.png"
+#define CTUI_IMG_INPUT_PLUS IMGDIR"/00_button_plus.png"
+#define CTUI_IMG_INPUT_GALLERY IMGDIR"/C02_caller_id_icon_gallery.png"
+#define CTUI_IMG_INPUT_GALLERY_PRESSED IMGDIR"/C02_caller_id_icon_gallery_press.png"
+#define CTUI_IMG_INPUT_CAMERA IMGDIR"/C02_caller_id_icon_camera.png"
+#define CTUI_IMG_INPUT_CAMERA_PRESSED IMGDIR"/C02_caller_id_icon_camera_press.png"
+
+#define CTUI_IMG_ACC_PHONE IMGDIR"/C02_account_00.png"
+#define CTUI_IMG_ACC_GOOGLE IMGDIR"/C02_account_01.png"
+#define CTUI_IMG_ACC_FACEBOOK IMGDIR"/C02_account_02.png"
+#define CTUI_IMG_ACC_YAHOO IMGDIR"/C02_account_03.png"
+#define CTUI_IMG_ACC_EXCHANGE IMGDIR"/C02_account_04.png"
+#define CTUI_IMG_ACC_DEFAULT IMGDIR"/C02_account_default.png"
+#define CTUI_IMG_ACC_RCS IMGDIR"/C04_icon_joyn.png"
+#define CTUI_IMG_ACC_SIM IMGDIR"/C02_account_sim.png"
+#endif //__PHONE_PATH_H__
diff --git a/lib/common/include/phone-text.h b/lib/common/include/phone-text.h
new file mode 100755
index 0000000..d782b1f
--- /dev/null
+++ b/lib/common/include/phone-text.h
@@ -0,0 +1,382 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_TEXT_H__
+#define __PHONE_TEXT_H__
+
+#include <libintl.h>
+
+#define gettext_noop(String) (String)
+#define N_(String) gettext_noop (String)
+
+enum
+{
+ PHTEXT_KEYPAD,
+ PHTEXT_FAVORITES,
+ PHTEXT_SPEEDDIAL,
+ PHTEXT_VOICE_MAIL,
+ PHTEXT_LOGS,
+ PHTEXT_SPEED_DIAL_REQUEST,
+ PHTEXT_REQUEST_FAIL,
+ PHTEXT_REQUEST_SUCCESS,
+ PHTEXT_EMERGENCY_CALL,
+ PHTEXT_NO_LOGS,
+ PHTEXT_NO_FAVORITES,
+ PHTEXT_NOT_EXIST_MESSAGE,
+ PHTEXT_EXCEED_NUM_MAX_LENGTH,
+ PHTEXT_DELETING_LOGS,
+ PHTEXT_DELETING_FAVORITES,
+ PHTEXT_INITIALIZING,
+ PHTEXT_SOUND_OFF,
+ PHTEXT_SOUND_ON,
+ PHTEXT_PREVIOUS_SCREEN_ABB,
+ PHTEXT_BACK_TO_CALL,
+ PHTEXT_INCOMMING_CALL,
+ PHTEXT_OUTGOING_CALL,
+ PHTEXT_MISSED_CALL,
+ PHTEXT_SENT_MESSAGE,
+ PHTEXT_RECEIVED_MESSAGE,
+ PHTEXT_REJECTED_CALL_ABB,
+ PHTEXT_BLOCKED_CALL_ABB,
+ PHTEXT_EDIT_NUMBER_BEFORE_CALL,
+ PHTEXT_ADD_TO_CONTACTS,
+ PHTEXT_SETTINGS,
+ PHTEXT_CALL_DURATION,
+ PHTEXT_EDIT_BLOCK_CONTACT,
+ PHTEXT_EDIT_SEND_NUMBER,
+ PHTEXT_EDIT_COPY_TO_DIALING_SCREEN,
+ PHTEXT_UNSAVED,
+ PHTEXT_CONTACTS_MENU_CONTACTS_TO_DISPLAY,
+ PHTEXT_CONTACTS_MENU_SETTINGS,
+ PHTEXT_CONTACTS_POP_DELETE,
+ PHTEXT_CONTACTS_POP_CONTACTS,
+ PHTEXT_CONTACTS_BUTTON_DELETE,
+ PHTEXT_CONTACTS_BUTTON_CANCEL,
+ PHTEXT_LOGS_DURATION_RESET,
+ PHTEXT_LOGS_DURATION_LAST,
+ PHTEXT_LOGS_DURATION_DIALED,
+ PHTEXT_LOGS_DURATION_RECEIVED,
+ PHTEXT_LOGS_DURATION_ALL,
+ PHTEXT_DELETING_N_LOGS,
+ CTTEXT_ENTRY_SEARCH,
+ CTTEXT_REMOVE,
+ CTTEXT_CREATE_CONTACT,
+ PHTEXT_CHANGE_ORDER,
+ PHTEXT_MESSAGE,
+ PHTEXT_EMAIL,
+ PHTEXT_DEFAULT_NUMBER,
+ PHTEXT_SEND_CONTACTC_AS_TEXT,
+ PHTEXT_CALLS,
+ PHTEXT_MESSAGES,
+ PHTEXT_SEPARATE_CONTACTS,
+ PHTEXT_LINK_CONTACTS_WITH,
+ PHTEXT_SEPARATE_CONTACTS_FROM,
+ PHTEXT_SEND_EMAIL,
+ PHTEXT_SEND_MESSAGE,
+ PHTEXT_SEND_MESSAGE_EMAIL,
+ PHTEXT_IMPORT_EXPORT,
+ PHTEXT_ACCOUNTS
+};
+//PH_GET_TEXT_BASIC
+enum
+{
+ CTTEXT_ALL_CONTACTS,
+ CTTEXT_NOT_ASSIGNED,
+ CTTEXT_SDN,
+ CTTEXT_PHONE,
+ CTTEXT_GROUP,
+ CTTEXT_DEFAULT,
+ CTTEXT_RINGTONE,
+ CTTEXT_URL,
+ CTTEXT_INSTANT_MESSENGER,
+ CTTEXT_EMAIL,
+ CTTEXT_NUMBER,
+ CTTEXT_NOTE,
+ CTTEXT_POSTAL_ADDRESS,
+ CTTEXT_DETAILS,
+ CTTEXT_COMPANY,
+ CTTEXT_ORDER_DISPLAY_NAME,
+ CTTEXT_OWN_NUMBER,
+ CTTEXT_FIRSTNAME,
+ CTTEXT_LASTNAME,
+ CTTEXT_MIDDLE,
+ CTTEXT_SUFFIX,
+ CTTEXT_NICKNAME,
+ CTTEXT_SELECT_EXPORT_ADDRBOOK,
+ CTTEXT_SELECT_CONTACTS,
+ CTTEXT_POSTAL_CODE,
+ CTTEXT_COUNTRY,
+ CTTEXT_PROVINCE,
+ CTTEXT_CITY,
+ CTTEXT_STREET,
+ CTTEXT_SAVED_IN,
+ CTTEXT_MOST_FREQUENT_CONTACTS,
+ CTTEXT_COPIED,
+ CTTEXT_EXPORTED,
+ CTTEXT_DELETING_CONTACTS,
+ CTTEXT_MOVING_CONTACTS,
+ CTTEXT_COPYING_CONTACTS,
+ CTTEXT_IMPORTING_SIM_CONTACTS,
+ CTTEXT_IMPORTING_SD_CONTACTS,
+ CTTEXT_EXPORTING_CONTACTS_TO,
+ CTTEXT_VCARD_CONTACTS,
+ CTTEXT_LOADING_VCARD,
+ CTTEXT_IMPORTED,
+ CTTEXT_NA,
+ CTTEXT_ALL_LINKED_CONTACTS,
+ CTTEXT_LINKED_CONTACTS,
+ CTTEXT_MORE_INFORMATION,
+ CTTEXT_JOB_TITLE,
+ CTTEXT_DEPARTMENT,
+ CTTEXT_GROUP_NAME,
+ CTTEXT_ADD_ACCOUNT,
+ CTTEXT_ADDING_MEMBERS_TO_GROUP,
+ CTTEXT_VIEW,
+ CTTEXT_VIEW_BY,
+ CTTEXT_COUNT_CONTACTS,
+ CTTEXT_RENAME,
+ CTTEXT_RELATIONSHIP,
+ CTTEXT_NO_HISTORIES,
+ CTTEXT_NO_ACTIVITIES,
+ CTTEXT_ADDING_ING,
+ CTTEXT_CUSTOM,
+ CTTEXT_ADDITIONAL_INFO,
+ CTTEXT_PO_BOX,
+ CTTEXT_STATE,
+ CTTEXT_FRIENDS,
+ CTTEXT_FAMILY,
+ CTTEXT_CO_WORKERS,
+ CTTEXT_EMERGENCY_CONTACTS,
+ CTTEXT_WORK,
+ CTTEXT_VIBRATION_PATTERN,
+ CTTEXT_SET_DEFAULT,
+ CTTEXT_EVENT,
+ CTTEXT_SHARE_CONTACT_INFO,
+ CTTEXT_1_CONTACT,
+ CTTEXT_WI_FI_DIRECT,
+ CTTEXT_EXPORT_TO_SIM_CARD,
+ CTTEXT_INFO,
+ CTTEXT_HISTORY,
+ CTTEXT_ACTIVITIES,
+ CTTEXT_GROUP_MESSAGE,
+ CTTEXT_GROUP_EMAIL,
+ CTTEXT_ORGANIZATION,
+ CTTEXT_MY_PHONE,
+ CTTEXT_RINGTONES,
+ CTTEXT_MY_FILES
+};
+//CT_GET_TEXT_BASIC
+
+enum
+{
+ CTTEXT_NONAME,
+ CTTEXT_INVALID_EMAIL,
+ CTTEXT_SAVE_FAIL,
+ CTTEXT_ERR_DB_LOCKED,
+ CTTEXT_ADD_FAIL_EXIST,
+ CTTEXT_ALREADY_EXIST,
+ CTTEXT_NO_GROUP,
+ CTTEXT_NO_NUMBER,
+ CTTEXT_NO_EMAIL,
+ CTTEXT_NO_CONTACTS,
+ CTTEXT_IMPORT_SIM_NO_DATA,
+ CTTEXT_EXCEED_LIMIT,
+ CTTEXT_DATA_NOT_EXIST,
+ CTTEXT_INVALID_NUMBER,
+ CTTEXT_SIM_MEMORY_FULL,
+ CTTEXT_NO_CONTACTS_HELP_TEXT,
+ CTTEXT_NO_HISTORIES_HELP_TEXT,
+ CTTEXT_UNABLE_TO_SEND_NAME_CARDS
+};
+//CT_GET_TEXT_ERR
+
+enum
+{
+ PHTEXT_SELECT_LOGS,
+ PHTEXT_SELECT_SPEED_DIAL_CONTACTS,
+ PHTEXT_UNBLOCK,
+ PHTEXT_CHANGE_CONTACT,
+ PHTEXT_ADD_PAUSE,
+ PHTEXT_ADD_WAIT,
+ PHTEXT_MISSED,
+ PHTEXT_EXIT
+};
+// PH_GET_TEXT_BASE_OP
+
+enum
+{
+ PHTEXT_BODY_SUNDAY,
+ PHTEXT_BODY_MONDAY,
+ PHTEXT_BODY_TUESDAY,
+ PHTEXT_BODY_WEDNESDAY,
+ PHTEXT_BODY_THURSDAY,
+ PHTEXT_BODY_FRIDAY,
+ PHTEXT_BODY_SATURDAY
+};
+// PH_GET_TEXT_DAY
+
+enum
+{
+ CTTEXT_SET_DEFAULT_NUMBER,
+ CTTEXT_SET_DEFAULT_EMAIL,
+ CTTEXT_IMAGE,
+ CTTEXT_TAKE_A_PHOTO,
+ CTTEXT_DELETE_PHOTO,
+ CTTEXT_ADD_TO_HOME,
+ CTTEXT_SAVE_CONTACT_TO,
+ CTTEXT_SAVE_TO,
+ CTTEXT_IMPORT_SIM_CONTACTS,
+ CTTEXT_FIRSTLAST,
+ CTTEXT_LASTFIRST,
+ CTTEXT_SHOW,
+ CTTEXT_HIDE,
+ CTTEXT_SEND_NAME_CARD,
+ CTTEXT_CREATE_GROUP,
+ CTTEXT_SELECT_GROUP,
+ CTTEXT_EXPORT_CONTACTS,
+ CTTEXT_IMPORT_CONTACTS,
+ CTTEXT_LINK_CONTACTS,
+ CTTEXT_UNLINK,
+ CTTEXT_ALL_LINKED_CONTACTS_WILL_BE_DELETED,
+ CTTEXT_ADD_TO_FAVOURITES,
+ CTTEXT_EDIT_GROUP,
+ CTTEXT_ADD_MEMBER,
+ CTTEXT_ADD_TO_GROUP,
+ CTTEXT_ADDED_TO_FAVOURITES,
+ CTTEXT_REMOVE_FROM_FAVOURITES,
+ CTTEXT_REMOVED_FROM_FAVOURITES
+};
+//CT_GET_TEXT_BASE_OP
+
+enum
+{
+ CTTEXT_REL_NONE,
+ CTTEXT_REL_ASSISTANT,
+ CTTEXT_REL_BROTHER,
+ CTTEXT_REL_CHILD,
+ CTTEXT_REL_DOMESTIC_PARTNER,
+ CTTEXT_REL_FATHER,
+ CTTEXT_REL_FRIEND,
+ CTTEXT_REL_MANAGER,
+ CTTEXT_REL_MOTHER,
+ CTTEXT_REL_PARENT,
+ CTTEXT_REL_PARTNER,
+ CTTEXT_REL_REFERRED_BY,
+ CTTEXT_REL_RELATIVE,
+ CTTEXT_REL_SISTER,
+ CTTEXT_REL_SPOUSE,
+ CTTEXT_REL_CUSTOM
+};
+//CT_GET_TEXT_RELATIONSHIP_TYPE
+
+enum
+{
+ CTTEXT_VIBRATION_DEFAULT,
+ CTTEXT_VIBRATION_HEARTBEAT,
+ CTTEXT_VIBRATION_JINGLEBELL,
+ CTTEXT_VIBRATION_TICKTOCK,
+ CTTEXT_VIBRATION_WALTZ,
+ CTTEXT_VIBRATION_ZIGZIGZIG,
+ CTTEXT_VIBRATION_MAX
+};
+//CT_GET_TEXT_VIBRATION
+
+enum
+{
+ PH_GET_TEXT_BASIC,
+ PH_GET_TEXT_BASE_OP,
+ PH_GET_TEXT_DAY,
+ CT_GET_TEXT_BASIC,
+ CT_GET_TEXT_ERR,
+ CT_GET_TEXT_BASE_OP,
+ CT_GET_TEXT_NUM_TYPE,
+ CT_GET_TEXT_EMAIL_TYPE,
+ CT_GET_TEXT_WEBSITE_TYPE,
+ CT_GET_TEXT_POSTAL_TYPE,
+ CT_GET_TEXT_EVENT_TYPE,
+ CT_GET_TEXT_IM_TYPE,
+ CT_GET_TEXT_MONTH,
+ CT_GET_TEXT_RELATIONSHIP_TYPE,
+ CT_GET_TEXT_VIBRATION
+};
+
+const char* phone_get_text(int op, int type);
+#define T_(op, type) phone_get_text(op, type)
+
+enum
+{
+ PH_SYS_SK_OK,
+ CT_SYS_SK_SAVE,
+ CT_SYS_SK_DONE,
+ PH_SYS_SK_EDIT,
+ PH_SYS_SK_DELETE,
+ PH_SYS_SK_CANCEL,
+ PH_SYS_SK3_BLOCK,
+ PH_SYS_SK_NO,
+ PH_SYS_SK_YES,
+ CT_SYS_SK_ADD,
+ CT_SYS_SK_MORE,
+ CT_SYS_SK_NEXT,
+ PH_SYS_BODY_CALL,
+ PH_SYS_BODY_MESSAGE,
+ PH_SYS_BODY_VIDEO_CALL,
+ PH_SYS_BODY_UNKNOWN,
+ PH_SYS_BODY_SELECT_ALL,
+ PH_SYS_BODY_CONTACTS,
+ PH_SYS_BODY_DETAILS,
+ PH_SYS_BODY_REMOVE,
+ PH_SYS_BODY_TODAY,
+ PH_SYS_BODY_YESTERDAY,
+ PH_SYS_BODY_PREVIOUS,
+ PH_SYS_BODY_NONAME,
+ CT_SYS_BODY_CREATE,
+ CT_SYS_BODY_MOVE,
+ CT_SYS_BODY_COPY,
+ CT_SYS_BODY_PHONE,
+ CT_SYS_BODY_SEARCH,
+ CT_SYS_BODY_BLUETOOTH,
+ CT_SYS_BODY_EMAIL,
+ CT_SYS_BODY_SIM,
+ CT_SYS_BODY_MEMORYCARD,
+ CT_SYS_BODY_NAME,
+ PH_SYS_BODY_ALL,
+ PH_SYS_POP_FAIL,
+ PH_SYS_POP_FAILED,
+ PH_SYS_POP_CLOSE,
+ PH_SYS_POP_REMOVED,
+ PH_SYS_POP_DELETED,
+ PH_SYS_POP_INCORRECT_PASSWORD,
+ PH_SYS_POP_ALREDY_EXISTS,
+ PH_SYS_POP_SELECTED,
+ CT_SYS_POP_SUCCESS,
+ CT_SYS_POP_ERROR,
+ CT_SYS_POP_MOVED,
+ CT_SYS_POP_ADDED,
+ CT_SYS_POP_NOT_ENOUGH_MEMORY,
+ CT_SYS_POP_NOTHING_SELECTED,
+ CT_SYS_POP_FILE_NOT_FOUND,
+ CT_SYS_POP_ADDRESS,
+ PH_SYS_OPT_ADD_TO_CONTACTS,
+ PH_SYS_BODY_SELECTED_DATA_NOT_FOUND,
+ PH_SYS_POP_DELETE_Q,
+ CT_SYS_SK_SET,
+ CT_SYS_SK_RESET,
+};
+
+const char* phone_get_system_string(int type);
+#define S_(text) phone_get_system_string(text)
+
+#endif //__PHONE_TEXT_H__
diff --git a/lib/common/include/phone.h b/lib/common/include/phone.h
new file mode 100755
index 0000000..9c57375
--- /dev/null
+++ b/lib/common/include/phone.h
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_APP_H__
+#define __PHONE_APP_H__
+
+#include <Elementary.h>
+#include <assert.h>
+
+#ifndef API
+#define API __attribute__ ((visibility("default")))
+#endif
+
+#if !defined(PACKAGE)
+# define PACKAGE "phone"
+#endif
+
+#define PHONE_PKG "org.tizen.phone"
+
+#define _EDJ(obj) (Evas_Object *)elm_layout_edje_get(obj)
+
+#define PH_DLOG_OUT
+#define PH_DEBUGGING
+
+#ifdef PH_DLOG_OUT
+#define LOG_TAG "PHONE"
+#include <dlog.h>
+#define DLOG(prio, fmt, arg...) ALOG(prio, LOG_TAG, fmt, ##arg)
+#define INFO(fmt, arg...) ALOGI(fmt, ##arg)
+#define ERR(fmt, arg...) ALOGE(fmt, ##arg)
+#define DBG(fmt, arg...) ALOGD(fmt, ##arg)
+#else //PH_DLOG_OUT
+#define PRT(prio, fmt, arg...) \
+ do { fprintf((prio?stderr:stdout), "[Phone]" fmt"\n", ##arg); } while (0)
+#define INFO(fmt, arg...) PRT(0, fmt, ##arg)
+#define ERR(fmt, arg...) PRT(1, "%s :" fmt, __FUNCTION__, ##arg)
+#define DBG(fmt, arg...) \
+ do { \
+ printf("\x1b[105;37m[Phone]\x1b[0m(%s)" fmt "\n", __FUNCTION__, ##arg); \
+ } while (0)
+#endif //PH_DLOG_OUT
+#ifdef PH_DEBUGGING
+#include "Tracer.h"
+#define PH_TRACE Utils::Tracer tracer(LOG_TAG, __MODULE__, __LINE__, __FUNCTION__)
+#define PH_FN_CALL DBG(">>>>>>>> called")
+#define PH_FN_END DBG("<<<<<<<< ended")
+#define PH_DBG(fmt, arg...) DBG(fmt, ##arg)
+#else /* PH_DEBUGGING */
+#define PH_TRACE
+#define PH_FN_CALL
+#define PH_FN_END
+#define PH_DBG(...)
+#endif /* PH_DEBUGGING */
+
+#define check_if(expr, then) \
+assert(!(expr)); \
+if(expr) \
+{ \
+ then; \
+}
+
+#define p_warn_if(expr, fmt, arg...) do { \
+ if (expr) { \
+ ERR(fmt, ##arg); \
+ } \
+} while (0)
+#define p_ret_if(expr) do { \
+ if (expr) { \
+ ERR("(%s)", #expr); \
+ return; \
+ } \
+} while (0)
+#define p_retv_if(expr, val) do { \
+ if (expr) { \
+ ERR("(%s)", #expr); \
+ return (val); \
+ } \
+} while (0)
+#define p_retm_if_free(expr, fmt, free_val, arg...) do { \
+ if (expr) { \
+ ERR(fmt, ##arg); \
+ free(*free_val); \
+ *free_val = NULL; \
+ return; \
+ } \
+} while (0)
+#define p_retm_if(expr, fmt, arg...) do { \
+ if (expr) { \
+ ERR(fmt, ##arg); \
+ return; \
+ } \
+} while (0)
+#define p_retvm_if(expr, val, fmt, arg...) do { \
+ if (expr) { \
+ ERR(fmt, ##arg); \
+ return (val); \
+ } \
+} while (0)
+
+#define SAFE_STRLEN(str) ((str)?strlen(str):strlen(""))
+#define SAFE_STR(src) ((src)?src:"")
+#define STR_BLANK(str, src) (str && src)?" ":"", SAFE_STR(src)
+#define SAFE_STRDUP(src) ((src)?strdup(src):NULL)
+#define FREEandSTRDUP(dest, src) \
+ do{ \
+ free(dest); dest=NULL;\
+ if (src) dest = strdup(src); \
+ }while(false)
+
+#endif //__PHONE_APP_H__
diff --git a/lib/common/ph-common.cpp b/lib/common/ph-common.cpp
new file mode 100755
index 0000000..23951dc
--- /dev/null
+++ b/lib/common/ph-common.cpp
@@ -0,0 +1,3667 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <app.h>
+#include <fcntl.h>
+#include <ui-gadget-module.h>
+#include <account-types.h>
+#include <syspopup_caller.h>
+#include <account.h>
+#include <notification.h>
+#include <cctype>
+#include <algorithm>
+#include <unicode/ustring.h>
+#include <unicode/udatpg.h>
+#include <msg.h>
+#include <msg_types.h>
+
+#include "phone.h"
+#include "phone-common.h"
+
+#include <badge.h>
+
+#define CT_CBAR_ITEM_MAX 4
+#define LAUNCH_TYPE "launch-type"
+#define SEND "send"
+#define EMERGENCY "emergency"
+#define FILES "files"
+#define FILECOUNT 1
+#define DEF_MAX_FILTER_LEN (40)
+#define DEF_BUF_LEN (512)
+#define CALL_APP "org.tizen.call"
+
+std::string ct_make_uppercase_string(const std::string& inputStr)
+{
+ std::string retStr;
+ retStr.reserve(inputStr.size());
+ std::transform(inputStr.begin(), inputStr.end(), std::back_inserter(retStr), toupper);
+ return retStr;
+}
+
+/**
+ * @brief Overloaded function for adding string filter
+ * @param filter DB filter handle
+ * @param filterField Link to field
+ * @param strVal The string value to which filtering is performed
+ * @return Returns true if filter was added, otherwise false
+ */
+bool add_filter_field(contacts_filter_h filter, unsigned int filterField, const std::string& strVal)
+{
+ PH_TRACE;
+ return (contacts_filter_add_str(filter, filterField, CONTACTS_MATCH_ENDSWITH, strVal.c_str()) == CONTACTS_ERROR_NONE);
+}
+
+/**
+ * @brief Overloaded function for adding integer filter
+ * @param filter DB filter handle
+ * @param filterField Link to field
+ * @param intVal The integer value to which filtering is performed
+ * @return Returns true if filter was added, otherwise false
+ */
+bool add_filter_field(contacts_filter_h filter, unsigned int filterField, int intVal)
+{
+ PH_TRACE;
+ return (contacts_filter_add_int(filter, filterField, CONTACTS_MATCH_EQUAL, intVal) == CONTACTS_ERROR_NONE);
+}
+
+template < typename FilterFieldType>
+bool get_records_list(const std::string& tableUri, unsigned int filterField,
+ FilterFieldType filterVal, contacts_list_h* list)
+{
+ PH_TRACE;
+ contacts_query_h query = NULL;
+ contacts_filter_h filter = NULL;
+ contacts_list_h innerList = NULL;
+ bool result(false);
+
+ if(contacts_query_create(tableUri.c_str(), &query) == CONTACTS_ERROR_NONE)
+ {
+ if(contacts_filter_create(tableUri.c_str(), &filter) == CONTACTS_ERROR_NONE)
+ {
+ if(add_filter_field(filter, filterField, filterVal))
+ {
+ if(contacts_query_set_filter(query, filter) == CONTACTS_ERROR_NONE)
+ {
+ if(contacts_db_get_records_with_query(query, 0, 0, &innerList) == CONTACTS_ERROR_NONE)
+ {
+ unsigned int count(0);
+ contacts_list_get_count(innerList, &count);
+ if(count > 0)
+ {
+ result = true;
+ }
+ }
+ }
+ }
+ }
+ }
+ result &= contacts_query_destroy(query) == CONTACTS_ERROR_NONE;
+ result &= contacts_filter_destroy(filter) == CONTACTS_ERROR_NONE;
+ if(result)
+ {
+ if(*list)
+ {
+ contacts_list_destroy(*list, true);
+ }
+ *list = innerList;
+ }
+ else
+ {
+ contacts_list_destroy(innerList, true);
+ ERR("List of records is not obtained");
+ }
+
+ return result;
+}
+
+bool phone_toggle_blocked_contact_for_calls(int contactId)
+{
+ PH_TRACE;
+ bool result(false);
+ if (contactId > notRelatedToContactId)
+ {
+ contacts_list_h recList = NULL;
+ if (get_records_list(_contacts_contact._uri, _contacts_contact.id, contactId, &recList))
+ {
+ contacts_record_h contactRec = NULL;
+ contacts_record_h extensionRec = NULL;
+ if (contacts_list_get_current_record_p(recList, &contactRec) == CONTACTS_ERROR_NONE)
+ {
+ if (contacts_record_create(_contacts_extension._uri, &extensionRec) == CONTACTS_ERROR_NONE)
+ {
+ unsigned int extensionsCount(0);
+ if (contacts_record_get_child_record_count(contactRec, _contacts_contact.extension, &extensionsCount)
+ == CONTACTS_ERROR_NONE)
+ {
+ DBG("Extensions count: %u", extensionsCount);
+ if (0 == extensionsCount)
+ {
+ result = ct_list_insert_extension(extensionRec, _contacts_extension.data2, contactId, ct_list_bool_to_str(true));
+ if (!result)
+ {
+ ERR("Extension is not inserted");
+ }
+ }
+ else
+ {
+ result = ct_list_toggle_blocked(contactRec, extensionRec);
+ if (!result)
+ {
+ ERR("Extension is not updated");
+ }
+ }
+ }
+ if (contacts_record_destroy(extensionRec, true)
+ != CONTACTS_ERROR_NONE)
+ {
+ ERR("Record is not destroyed");
+ }
+ }
+ }
+ if (contacts_list_destroy(recList, true) != CONTACTS_ERROR_NONE)
+ {
+ ERR("List is not destroyed");
+ }
+ }
+ }
+ return result;
+}
+
+int phone_get_extension_id(int contactId)
+{
+ PH_TRACE;
+ int result(incorrectId);
+ contacts_list_h recList = NULL;
+ if(get_records_list(_contacts_contact._uri, _contacts_contact.id, contactId, &recList))
+ {
+ contacts_record_h contactRec = NULL;
+ if(contacts_list_get_current_record_p(recList, &contactRec) == CONTACTS_ERROR_NONE)
+ {
+ unsigned int extensionsCount(0);
+ if(contacts_record_get_child_record_count(contactRec, _contacts_contact.extension, &extensionsCount)
+ == CONTACTS_ERROR_NONE)
+ {
+ if(extensionsCount > 0)
+ {
+ contacts_record_h extensionRec = NULL;
+ if(contacts_record_get_child_record_at_p(contactRec, _contacts_contact.extension,
+ 0, &extensionRec) == CONTACTS_ERROR_NONE)
+ {
+ int extensionId(incorrectId);
+ if(contacts_record_get_int(extensionRec, _contacts_extension.id,
+ &extensionId) == CONTACTS_ERROR_NONE)
+ {
+ result = extensionId;
+ }
+ }
+ }
+ }
+ }
+ if(contacts_list_destroy(recList, true)
+ != CONTACTS_ERROR_NONE)
+ {
+ ERR("List is not destroyed");
+ }
+ }
+ return result;
+}
+
+bool phone_is_blocked_contact_for_calls(int contactId)
+{
+ PH_TRACE;
+ bool result(false);
+ int extensionId = phone_get_extension_id(contactId);
+ if(extensionId > -1)
+ {
+ contacts_list_h extensionList = NULL;
+ if(get_records_list(_contacts_extension._uri, _contacts_extension.id, extensionId, &extensionList))
+ {
+ contacts_record_h extensionRecord = NULL;
+ if(contacts_list_get_current_record_p(extensionList, &extensionRecord)
+ == CONTACTS_ERROR_NONE)
+ {
+ char* isBlocked = NULL;
+ if(contacts_record_get_str(extensionRecord, _contacts_extension.data2, &isBlocked)
+ == CONTACTS_ERROR_NONE)
+ {
+ result = ct_list_str_to_bool(isBlocked);
+ }
+ free(isBlocked);
+ }
+ contacts_list_destroy(extensionList, true);
+ }
+ }
+ return result;
+}
+
+static void progress_popup_cancel_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ bool *is_alive = (bool *) data;
+ *is_alive = false;
+}
+
+void phone_free_contacts(Eina_List *list)
+{
+ PH_TRACE;
+ Eina_List *l;
+ void *v_cd;
+
+ p_retm_if(NULL == list, "list is NULL");
+
+ EINA_LIST_FOREACH(list, l, v_cd)
+ {
+ ph_contact_d *cd = (ph_contact_d *) v_cd;
+ if (NULL == cd)
+ continue;
+
+ free(cd->display);
+ free(cd->img_path);
+ free(cd->number);
+ free(cd);
+ }
+ eina_list_free(list);
+}
+
+void ctui_list_edit_navi_pop(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int cnt_checked;
+ int person_count = 0;
+ int number_count = 0;
+ int email_count = 0;
+ int *result_list_number = NULL;
+ int *result_list_email = NULL;
+ int *result_list_person = NULL;
+ Eina_List *l;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ void *info;
+
+ cnt_checked = ctui_list_checked_cnt_get(clist_d->list);
+
+ PH_DBG("clist_d->ug_request %d count %d", clist_d->ug_request, cnt_checked);
+ if (CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request)
+ result_list_number = (int *) calloc(cnt_checked, sizeof(int));
+ else if (CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request)
+ result_list_email = (int *) calloc(cnt_checked, sizeof(int));
+ else if (CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request)
+ {
+ result_list_number = (int *) calloc(cnt_checked, sizeof(int));
+ result_list_email = (int *) calloc(cnt_checked, sizeof(int));
+ }
+ else
+ result_list_person = (int *) calloc(cnt_checked, sizeof(int));
+
+ EINA_LIST_FOREACH(clist_d->list, l, info)
+ {
+ ct_person_list *person_info = (ct_person_list *) info;
+ if (NULL == person_info || !person_info->checked)
+ continue;
+ if (1 == person_info->id_ret_type)
+ result_list_number[number_count++] = person_info->id_ret;
+ else if (2 == person_info->id_ret_type)
+ result_list_email[email_count++] = person_info->id_ret;
+ else
+ result_list_person[person_count++] = person_info->id;
+ }
+
+ // setting - import,export / group-view - message,email,chaton,calendar
+ if (clist_d->select_result_cb)
+ { // called by setting view - check person_info
+ if (0 < cnt_checked)
+ {
+ if (result_list_number)
+ clist_d->select_result_cb(clist_d->select_result_cb_data,
+ result_list_number, number_count);
+ else if (result_list_email)
+ clist_d->select_result_cb(clist_d->select_result_cb_data,
+ result_list_email, email_count);
+ else
+ clist_d->select_result_cb(clist_d->select_result_cb_data,
+ result_list_person, person_count);
+ }
+ }
+ if (result_list_person)
+ free(result_list_person);
+ if (result_list_number)
+ free(result_list_number);
+ if (result_list_email)
+ free(result_list_email);
+}
+
+void ug_common_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+ PH_TRACE;
+ Evas_Object *base;
+
+ if (!ug)
+ return;
+
+ base = (Evas_Object *) ug_get_layout(ug);
+ if (!base)
+ {
+ ERR("ug_get_layout() return NULL");
+ ug_destroy(ug);
+ return;
+ }
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(base);
+}
+
+void ug_common_destroy_cb(ui_gadget_h ug, void *priv)
+{
+ PH_TRACE;
+ struct ug_priv_data *priv_data;
+
+ p_retm_if(NULL == ug, "ug is NULL");
+ ug_destroy(ug);
+
+ p_retm_if(NULL == priv, "priv is NULL");
+
+ priv_data = (struct ug_priv_data *) priv;
+
+ if (priv_data->destroy_cb)
+ priv_data->destroy_cb(priv_data->cb_param);
+
+ free(priv);
+
+}
+
+ui_gadget_h phone_image_crop_ug(ui_gadget_h parent, const char *photo,
+ struct ug_cbs *cbs)
+{
+ PH_TRACE;
+ ui_gadget_h ug;
+
+ service_h service;
+
+ service_create(&service);
+ service_add_extra_data(service, "Path", photo);
+ service_add_extra_data(service, "View Mode", "SETAS");
+ service_add_extra_data(service, "Setas type", "CallerID");
+ service_add_extra_data(service, "Area Size", "100");
+
+ cbs->layout_cb = ug_common_layout_cb;
+
+ ug = ug_create(parent, IMG_VIEWER_UG, UG_MODE_FULLVIEW, service, cbs);
+ p_warn_if(NULL == ug, "ug_create() Failed");
+
+ service_destroy(service);
+
+ return ug;
+}
+
+ui_gadget_h phone_launch_msg_composer_ug(ui_gadget_h parent_ug, char *number, int msg_id,
+ void (*destroy_cb)(void*), void *cb_param)
+{
+ PH_TRACE;
+ ui_gadget_h ug;
+ struct ug_cbs cbs = { 0 };
+ struct ug_priv_data *priv_data;
+ service_h service;
+ char ret[PH_TEXT_MAX_LEN] = { 0 };
+
+ priv_data = (ug_priv_data *) calloc(1, sizeof(struct ug_priv_data));
+ p_retvm_if(NULL == priv_data, NULL, "calloc is failed");
+ priv_data->destroy_cb = destroy_cb;
+ priv_data->cb_param = cb_param;
+
+ service_create(&service);
+ if (number && *number)
+ service_add_extra_data(service, "TO", (char*) number);
+ else if (msg_id)
+ {
+ service_add_extra_data(service, "type", "msg_id");
+ snprintf(ret, sizeof(ret), "%d", msg_id);
+ service_add_extra_data(service, "msgId", ret);
+ }
+
+ cbs.priv = priv_data;
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = ug_common_destroy_cb;
+
+ ug = ug_create((ui_gadget_h) parent_ug, MSG_COMPOSER_UG, UG_MODE_FULLVIEW, service, &cbs);
+ service_destroy(service);
+
+ if (ug == NULL)
+ {
+ free(priv_data);
+ ERR("%s ug_create is failed", MSG_COMPOSER_UG);
+ }
+ return ug;
+}
+
+ui_gadget_h phone_launch_contact_detail_ug(ui_gadget_h parent_ug, int contact_index,
+ void (*destroy_cb)(void*), void *cb_param)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ struct ug_cbs cbs = { 0 };
+ service_h service;
+ ui_gadget_h ug;
+ struct ug_priv_data *priv_data;
+
+ priv_data = (ug_priv_data *) calloc(1, sizeof(struct ug_priv_data));
+ p_retvm_if(NULL == priv_data, NULL, "calloc is failed");
+ priv_data->destroy_cb = destroy_cb;
+ priv_data->cb_param = cb_param;
+
+ service_create(&service);
+
+ snprintf(buf, sizeof(buf), "%d", contact_index);
+ service_add_extra_data(service, CT_UG_BUNDLE_ID, buf);
+ snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_DETAIL);
+ service_add_extra_data(service, CT_UG_BUNDLE_TYPE, buf);
+
+ cbs.priv = priv_data;
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = ug_common_destroy_cb;
+
+ ug = ug_create((ui_gadget_h) parent_ug, UG_CONTACTS_DETAILS, UG_MODE_FULLVIEW, service,
+ &cbs);
+ service_destroy(service);
+
+ if (NULL == ug)
+ {
+ free(priv_data);
+ ERR("%s ug_create fail", UG_CONTACTS_DETAILS);
+ }
+ return ug;
+}
+
+ui_gadget_h phone_launch_contact_add_list_edit_ug(ui_gadget_h parent_ug, char *data,
+ void (*destroy_cb)(void *), void *cb_param)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ struct ug_cbs cbs = { 0 };
+ struct ug_priv_data *priv_data;
+ ui_gadget_h ug;
+ service_h service;
+
+ priv_data = (ug_priv_data *) calloc(1, sizeof(struct ug_priv_data));
+ p_retvm_if(NULL == priv_data, NULL, "calloc is failed");
+ priv_data->destroy_cb = destroy_cb;
+ priv_data->cb_param = cb_param;
+
+ service_create(&service);
+
+ snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_UPDATE_WITH_NUM);
+ service_add_extra_data(service, CT_UG_BUNDLE_TYPE, buf);
+ snprintf(buf, sizeof(buf), "%s", data);
+ service_add_extra_data(service, CT_UG_BUNDLE_NUM, buf);
+ PH_DBG("number %s", buf);
+
+ cbs.priv = priv_data;
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = ug_common_destroy_cb;
+
+ ug = ug_create((ui_gadget_h) parent_ug, UG_CONTACTS_LIST, UG_MODE_FULLVIEW, service,
+ &cbs);
+ service_destroy(service);
+ if (NULL == ug)
+ {
+ free(priv_data);
+ ERR("%s ug_create fail", UG_CONTACTS_LIST);
+ }
+ return ug;
+}
+
+ui_gadget_h phone_launch_contact_edit_ug(ui_gadget_h parent_ug, int data,
+ void (*destroy_cb)(void *), void *cb_param)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ struct ug_cbs cbs = { 0 };
+ service_h service;
+
+ struct ug_priv_data *priv_data = (ug_priv_data *) calloc(1, sizeof(struct ug_priv_data));
+ p_retvm_if(NULL == priv_data, NULL, "calloc is failed");
+ priv_data->destroy_cb = destroy_cb;
+ priv_data->cb_param = cb_param;
+
+ service_create(&service);
+
+ snprintf(buf, PH_TEXT_MAX_LEN, "%d", CT_UG_REQUEST_EDIT);
+ service_add_extra_data(service, CT_UG_BUNDLE_TYPE, buf);
+ snprintf(buf, PH_TEXT_MAX_LEN, "%d", data);
+ service_add_extra_data(service, CT_UG_BUNDLE_ID, buf);
+
+ cbs.priv = priv_data;
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = ug_common_destroy_cb;
+
+ ui_gadget_h ug = ug_create((ui_gadget_h) parent_ug, UG_CONTACTS_DETAILS, UG_MODE_FULLVIEW, service,
+ &cbs);
+ service_destroy(service);
+ if (NULL == ug)
+ {
+ free(priv_data);
+ ERR("%s ug_create fail", UG_CONTACTS_DETAILS);
+ }
+ return ug;
+}
+
+ui_gadget_h phone_launch_bluetooth_ug(ui_gadget_h parent_ug, const char *attach,
+ void (*destroy_cb)(void *), void *cb_param)
+{
+ PH_TRACE;
+ service_h service;
+ struct ug_cbs cbs = { 0 };
+
+ struct ug_priv_data *priv_data = (ug_priv_data *) calloc(1, sizeof(struct ug_priv_data));
+ p_retvm_if(NULL == priv_data, NULL, "calloc is failed");
+ priv_data->destroy_cb = destroy_cb;
+ priv_data->cb_param = cb_param;
+
+ service_create(&service);
+ service_add_extra_data(service, LAUNCH_TYPE, SEND);
+ service_add_extra_data_array(service, FILES, &attach, FILECOUNT);
+
+ cbs.priv = priv_data;
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = ug_common_destroy_cb;
+
+ ui_gadget_h ug = ug_create((ui_gadget_h) parent_ug, BLUETOOTH_UG,
+ UG_MODE_FULLVIEW, service, &cbs);
+
+ service_destroy(service);
+ if (NULL == ug)
+ {
+ free(priv_data);
+ ERR("%s ug_create fail", UG_CONTACTS_DETAILS);
+ }
+ return ug;
+}
+
+static void ug_contact_list_result_cb(ui_gadget_h ug, service_h service,
+ void *priv)
+{
+ PH_TRACE;
+ char *temp_p = NULL;
+ struct ug_priv_data *priv_data = (ug_priv_data *) priv;
+ int id;
+ p_retm_if(NULL == priv, "private data is NULL");
+
+ service_get_extra_data(service, "id", &temp_p);
+ id = atoi(temp_p);
+ free(temp_p);
+ if (priv_data->result_cb)
+ priv_data->result_cb(priv_data->cb_param, (void*) &id);
+}
+
+ui_gadget_h phone_launch_contact_list_ug(ui_gadget_h parent_ug, int request,
+ void (*result_cb)(void*, void*), void (*destroy_cb)(void*),
+ void*cb_param)
+{
+ PH_TRACE;
+ char ug_request[PH_TEXT_MAX_LEN] = { 0 };
+ struct ug_priv_data *priv_data;
+ ui_gadget_h ug;
+ struct ug_cbs cbs = { 0 };
+ service_h service;
+
+ priv_data = (ug_priv_data *) calloc(1, sizeof(struct ug_priv_data));
+ p_retvm_if(NULL == priv_data, NULL, "calloc is failed");
+ priv_data->destroy_cb = destroy_cb;
+ priv_data->result_cb = result_cb;
+ priv_data->cb_param = cb_param;
+
+ service_create(&service);
+
+ snprintf(ug_request, sizeof(ug_request), "%d", request);
+ service_add_extra_data(service, CT_UG_BUNDLE_TYPE, ug_request);
+
+ cbs.priv = priv_data;
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.destroy_cb = ug_common_destroy_cb;
+ cbs.result_cb = ug_contact_list_result_cb;
+
+ ug = ug_create((ui_gadget_h) parent_ug, UG_CONTACTS_LIST, UG_MODE_FULLVIEW, service,
+ &cbs);
+ service_destroy(service);
+ if (NULL == ug)
+ {
+ free(priv_data);
+ ERR("%s ug_create fail", UG_CONTACTS_LIST);
+ }
+ return ug;
+}
+
+Evas_Object* phone_create_list_sweep_btn(Evas_Object *parent, const char *fullpath)
+{
+ PH_TRACE;
+ Evas_Object *btn;
+ Evas_Object *icon;
+
+ btn = elm_button_add(parent);
+ p_retvm_if(NULL == btn, NULL, "elm_button_add() return NULL");
+
+ icon = elm_icon_add(btn);
+ p_retvm_if(NULL == icon, NULL, "phone_create_icon_with_img() return NULL");
+
+ elm_image_file_set(icon, fullpath, NULL);
+ elm_image_resizable_set(icon, EINA_FALSE, EINA_FALSE);
+ elm_object_part_content_set(btn, "icon", icon);
+
+ return btn;
+}
+
+void phone_resize_notify(Evas_Object *parent, int rotate)
+{
+ PH_TRACE;
+ Evas_Object *notify;
+ Evas_Object *layout;
+ const char *msg;
+ p_retm_if(NULL == parent, "parent is NULL");
+ notify = phone_get_notify(parent);
+ layout = elm_object_content_get(notify);
+ msg = edje_object_part_text_get(_EDJ(layout), "elm.text");
+
+ elm_layout_theme_set(layout, "standard", "selectioninfo", "center_text");
+
+ if (msg && *msg)
+ edje_object_part_text_set(_EDJ(layout), "elm.text", msg);
+}
+
+Evas_Object * phone_get_notify(Evas_Object *parent)
+{
+ PH_TRACE;
+ Evas_Object *notify;
+
+ notify = (Evas_Object *) evas_object_data_get(parent, "notify");
+ if (NULL == notify)
+ {
+ Evas_Object *info_layout;
+ notify = phone_create_base_layout(parent, false);
+ elm_object_part_content_set(parent, "selectioninfo", notify);
+ info_layout = elm_layout_add(parent);
+ elm_object_part_content_set(notify, "elm.swallow.content", info_layout);
+ elm_layout_theme_set(info_layout, "standard", "selectioninfo",
+ "center_text");
+ evas_object_data_set(parent, "notify", notify);
+ }
+ evas_object_show(notify);
+ return notify;
+}
+
+void phone_show_tickernoti(const char *msg)
+{
+ PH_TRACE;
+ int err = notification_status_message_post(msg);
+ p_retm_if(NOTIFICATION_ERROR_NONE != err,
+ "notification_status_message_post is failed");
+}
+
+void phone_show_notify(Evas_Object *parent, const char *msg)
+{
+ PH_TRACE;
+ Evas_Object *selectioninfo;
+ Evas_Object *notify;
+
+ notify = phone_get_notify(parent);
+ selectioninfo = elm_object_part_content_get(notify, "elm.swallow.content");
+ elm_object_part_text_set(selectioninfo, "elm.text", msg);
+ elm_object_signal_emit(parent, "show,selection,info", "elm");
+ evas_object_show(selectioninfo);
+}
+
+void phone_hide_notify(Evas_Object *parent)
+{
+ PH_TRACE;
+ Evas_Object *selectioninfo;
+ Evas_Object *notify;
+
+ notify = (Evas_Object *) evas_object_data_get(parent, "notify");
+ selectioninfo = elm_object_part_content_get(notify, "elm.swallow.content");
+ elm_object_signal_emit(parent, "hide,selection,info", "elm");
+ evas_object_hide(notify);
+ evas_object_hide(selectioninfo);
+}
+
+static void popup_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ Evas_Object **popup = (Evas_Object **) data;
+ evas_object_del(*popup);
+ *popup = NULL;
+}
+void ctui_detail_data_popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ if(cdetail_d && cdetail_d->popup)
+ {
+ evas_object_del(cdetail_d->popup);
+ cdetail_d->popup = NULL;
+ }
+}
+
+void ctui_input_data_popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ if(cinput_d && cinput_d->popup)
+ {
+ evas_object_del(cinput_d->popup);
+ cinput_d->popup = NULL;
+ }
+}
+
+Evas_Object *phone_show_popup(Evas_Object *parent, const char *desc,
+ double timeout)
+{
+ PH_TRACE;
+ Evas_Object *popup;
+
+ popup = (Evas_Object *) evas_object_data_get(parent, "popup");
+ if (NULL == popup)
+ {
+ popup = elm_popup_add(parent);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_smart_callback_add(popup, "block,clicked",
+ ctui_input_data_popup_hide_cb, NULL);
+ evas_object_show(popup);
+ }
+ elm_object_text_set(popup, desc);
+ elm_popup_timeout_set(popup, timeout);
+ return popup;
+}
+
+Evas_Object* phone_create_confirm_popup(Evas_Object **popup, Evas_Object *win,
+ const char* description,
+ void (*btn_clicked_cb)(void *, Evas_Object *, void *), void *cb_data)
+{
+ PH_TRACE;
+ Evas_Object *btn1, *btn2;
+ *popup = elm_popup_add(win);
+ evas_object_size_hint_weight_set(*popup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_object_text_set(*popup, description);
+
+ btn1 = elm_button_add(*popup);
+ elm_object_text_set(btn1, S_(PH_SYS_SK_YES));
+ elm_object_part_content_set(*popup, "button1", btn1);
+ elm_object_style_set(btn1, "popup_button/default");
+ evas_object_smart_callback_add(btn1, "clicked", btn_clicked_cb, cb_data);
+
+ btn2 = elm_button_add(*popup);
+ elm_object_text_set(btn2, S_(PH_SYS_SK_NO));
+ elm_object_part_content_set(*popup, "button2", btn2);
+ elm_object_style_set(btn2, "popup_button/default");
+ evas_object_smart_callback_add(btn2, "clicked", popup_cancel_btn_cb,
+ &(*popup));
+
+ evas_object_show(*popup);
+
+ return btn1;
+}
+
+void phone_launch_voice_call(const int person_id, const char* number)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ service_h service;
+ int ret;
+
+ ret = service_create(&service);
+ p_retm_if(SERVICE_ERROR_NONE != ret, "service_create() Failed(%d)", ret);
+
+ service_set_operation(service, SERVICE_OPERATION_CALL);
+ snprintf(buf, sizeof(buf), "tel:%s", number);
+ service_set_uri(service, buf);
+ service_set_app_id(service, CALL_APP);
+
+ if (0 < person_id)
+ {
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ snprintf(buf, sizeof(buf), "%d", person_id);
+ service_add_extra_data(service, "ctindex", buf);
+
+ }
+ ret = service_send_launch_request(service, NULL, NULL);
+ if(ret != SERVICE_ERROR_NONE)
+ {
+ ERR("service_send_launch_request failed: %x", ret);
+ }
+ service_destroy(service);
+}
+
+ui_gadget_h phone_launch_settings_ug(ui_gadget_h parent_ug, const char* ug_name,
+ void (*destroy_cb)(void*), void *cb_param)
+{
+ PH_TRACE;
+ ug_priv_data *priv_data = static_cast<ug_priv_data *>(calloc(1, sizeof(struct ug_priv_data)));
+ check_if(!priv_data, return NULL);
+
+ priv_data->destroy_cb = destroy_cb;
+ priv_data->cb_param = cb_param;
+
+ service_h service;
+ int result = service_create(&service);
+
+ if(SERVICE_ERROR_NONE != result)
+ {
+ free(priv_data);
+ ERR("service_create failed");
+ return NULL;
+ }
+
+ ug_cbs cbs = { 0 };
+ cbs.priv = priv_data;
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = ug_common_destroy_cb;
+
+ ui_gadget_h ug = ug_create(parent_ug, ug_name, UG_MODE_FULLVIEW, service, &cbs);
+
+ service_destroy(service);
+
+ if (NULL == ug)
+ {
+ free(priv_data);
+ ERR("%s ug_create fail", CALL_SETTINGS_UG);
+ }
+
+ return ug;
+}
+
+Evas_Object* phone_create_base_layout(Evas_Object *parent, bool is_fullview)
+{
+ PH_TRACE;
+ Evas_Object *base;
+
+ base = elm_layout_add(parent);
+ p_retvm_if(NULL == base, NULL, "elm_layout_add() Failed");
+ if (is_fullview)
+ elm_layout_theme_set(base, "layout", "application", "default");
+ else
+ elm_layout_theme_set(base, "layout", "application", "noindicator");
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ return base;
+}
+
+Evas_Object* phone_create_bg(Evas_Object *parent)
+{
+ PH_TRACE;
+ Evas_Object *bg;
+
+ bg = elm_bg_add(parent);
+ p_retvm_if(NULL == bg, NULL, "elm_bg_add() return NULL");
+
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_content_set(parent, "elm.swallow.bg", bg);
+
+ return bg;
+}
+
+Evas_Object* phone_progressbar_popup(Evas_Object *parent,
+ ph_progress_info *p_info, const char *title)
+{
+ PH_TRACE;
+ Evas_Object *popup;
+ Evas_Object *layout;
+ Evas_Object *label;
+ Evas_Object *progressbar;
+ Evas_Object *btn;
+
+ popup = elm_popup_add(parent);
+ p_retvm_if(NULL == popup, NULL, "elm_popup_add() return NULL");
+
+ layout = elm_layout_add(popup);
+ p_retvm_if(NULL == layout, NULL, "elm_layout_add() return NULL");
+ elm_layout_file_set(layout, PROGRESS_EDJ, "popup_center_text_progressview");
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ p_info->layout = layout;
+
+ label = elm_label_add(popup);
+ p_retvm_if(NULL == label, NULL, "elm_label_add() return NULL");
+ elm_object_style_set(label, "popup/progressview");
+ elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
+ elm_object_text_set(label, title);
+ evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(label);
+
+ progressbar = elm_progressbar_add(popup);
+ p_retvm_if(NULL == progressbar, NULL, "elm_progressbar_add() return NULL");
+ p_info->progressbar = progressbar;
+
+ if (0 < p_info->cnt_checked_total)
+ {
+ elm_object_style_set(progressbar, "list_progress");
+ elm_progressbar_value_set(progressbar, 0.0);
+ }
+ else
+ {
+ elm_object_style_set(progressbar, "pending_list");
+ elm_progressbar_pulse(progressbar, EINA_TRUE);
+ }
+
+ evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(progressbar);
+
+ elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
+ elm_object_part_content_set(layout, "elm.swallow.content", label);
+ elm_object_part_content_set(layout, "elm.swallow.end", progressbar);
+ evas_object_show(layout);
+ elm_object_content_set(popup, layout);
+
+ if (false == p_info->without_cancel_btn)
+ {
+ btn = elm_button_add(popup);
+ elm_object_text_set(btn, S_(PH_SYS_SK_CANCEL));
+ elm_object_part_content_set(popup, "button1", btn);
+ elm_object_style_set(btn, "popup_button/default");
+ evas_object_smart_callback_add(btn, "clicked", progress_popup_cancel_cb,
+ &p_info->alive);
+ }
+ evas_object_show(popup);
+ return popup;
+}
+
+void phone_navi_item_reset(Elm_Object_Item *item, void *data)
+{
+ PH_TRACE;
+ assert(item);
+ Common::View *view = static_cast<Common::View *>(data);
+
+ if (item && view)
+ {
+ elm_object_item_data_set(item, view);
+ view->back_cb = NULL;
+ view->menu_cb = NULL;
+ }
+}
+
+Evas_Object *phone_create_icon_with_img(Evas_Object *parent, const char *full_path)
+{
+ PH_TRACE;
+ Evas_Object *ic = elm_icon_add(parent);
+ p_retvm_if(NULL == ic, NULL, "elm_icon_add() return NULL");
+ elm_image_file_set(ic, full_path, NULL);
+ elm_image_resizable_set(ic, EINA_TRUE, EINA_TRUE);
+ evas_object_image_smooth_scale_set(ic, EINA_FALSE);
+ return ic;
+}
+
+contacts_error_e phone_cts_get_list(const char *view_uri, int property_id,
+ int match_value, contacts_list_h *out_list)
+{
+ PH_TRACE;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+
+ p_retvm_if(NULL == out_list, CONTACTS_ERROR_INVALID_PARAMETER,
+ "parameter(out_list) is NULL");
+
+ unsigned int person_grouprel_projection[] = {
+ _contacts_person_grouprel.person_id,
+ _contacts_person_grouprel.status,
+ _contacts_person_grouprel.display_name,
+ _contacts_person_grouprel.display_name_index,
+ _contacts_person_grouprel.addressbook_ids,
+ _contacts_person_grouprel.image_thumbnail_path,
+ _contacts_person_grouprel.link_count, };
+
+ err = (contacts_error_e) contacts_filter_create(view_uri, &filter);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, err,
+ "contactcs_filter_create() Failed(%d)", err);
+
+ do
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_int(filter, property_id,
+ CONTACTS_MATCH_EQUAL, match_value)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_create(view_uri, &query)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_filter(query, filter)))
+ break;
+
+ if (0 == strcmp(view_uri, _contacts_person_grouprel._uri))
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_distinct(query, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_query_set_projection(query,
+ person_grouprel_projection,
+ sizeof(person_grouprel_projection) / sizeof(int))))
+ break;
+ }
+
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_db_get_records_with_query(query, 0, 0,
+ out_list)))
+ break;
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ return CONTACTS_ERROR_NONE;
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_query_create() Failed(%d)",
+ err);
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ return err;
+}
+
+void phone_cts_free_list(contacts_list_h list)
+{
+ PH_TRACE;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ err = (contacts_error_e) contacts_list_destroy(list, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_destroy() Failed(%d)",
+ err);
+}
+
+contacts_error_e phone_cts_get_int_from_list(contacts_list_h list,
+ int property_id, int *out_int)
+{
+ PH_TRACE;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ p_retvm_if(NULL == out_int, CONTACTS_ERROR_INVALID_PARAMETER,
+ "parameter(out_int) is NULL");
+ p_retvm_if(NULL == list, CONTACTS_ERROR_INVALID_PARAMETER,
+ "parameter(list) is NULL");
+
+ err = (contacts_error_e) contacts_list_get_current_record_p(list, &record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ return err;
+ }
+
+ err = (contacts_error_e) contacts_record_get_int(record, property_id, out_int);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ return err;
+ }
+
+ return CONTACTS_ERROR_NONE;
+}
+
+contacts_error_e phone_cts_get_str_from_list(contacts_list_h list,
+ int property_id, char **out_str)
+{
+ PH_TRACE;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ p_retvm_if(NULL == out_str, CONTACTS_ERROR_INVALID_PARAMETER,
+ "parameter(out_int) is NULL");
+ p_retvm_if(NULL == list, CONTACTS_ERROR_INVALID_PARAMETER,
+ "parameter(list) is NULL");
+
+ err = (contacts_error_e) contacts_list_get_current_record_p(list, &record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ return err;
+ }
+
+ err = (contacts_error_e) contacts_record_get_str(record, property_id, out_str);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_str() Failed(%d)", err);
+ return err;
+ }
+
+ return CONTACTS_ERROR_NONE;
+}
+
+contacts_error_e phone_cts_get_bool_from_list(contacts_list_h list,
+ int property_id, bool *out_bool)
+{
+ PH_TRACE;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ p_retvm_if(NULL == out_bool, CONTACTS_ERROR_INVALID_PARAMETER,
+ "parameter(out_bool) is NULL");
+ p_retvm_if(NULL == list, CONTACTS_ERROR_INVALID_PARAMETER,
+ "parameter(list) is NULL");
+
+ err = (contacts_error_e) contacts_list_get_current_record_p(list, &record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ return err;
+ }
+
+ err = (contacts_error_e) contacts_record_get_bool(record, property_id, out_bool);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_bool() Failed(%d)", err);
+ return err;
+ }
+
+ return CONTACTS_ERROR_NONE;
+}
+
+char* ctui_get_addressbook_icon_path(int addressbook_id)
+{
+ PH_TRACE;
+ int ret;
+ int account_id;
+ char *icon_path;
+ char *addressbook_name = NULL;
+ account_h account;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = (contacts_error_e) contacts_db_get_record(_contacts_address_book._uri, addressbook_id,
+ &record);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "phone_cts_get_list() Failed(%d)", err);
+
+ err = (contacts_error_e) contacts_record_get_int(record, _contacts_address_book.account_id,
+ &account_id);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ err = (contacts_error_e) contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ return NULL;
+ }
+ err = (contacts_error_e) contacts_record_get_str_p(record, _contacts_address_book.name,
+ &addressbook_name);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ err = (contacts_error_e) contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ return NULL;
+ }
+
+ if (0 == account_id)
+ {
+ return SAFE_STRDUP(CTUI_IMG_ACC_PHONE);
+ }
+
+ ret = account_connect();
+ p_retvm_if(ACCOUNT_ERROR_NONE != ret, NULL, "account_connect() Failed(%d)",
+ ret);
+
+ account = NULL;
+ ret = account_create(&account);
+ p_retvm_if(ACCOUNT_ERROR_NONE != ret, false, "account_create() Failed(%d)",
+ ret);
+
+ ret = account_query_account_by_account_id(account_id, &account);
+ if (ACCOUNT_ERROR_NONE != ret)
+ {
+ ERR("account_query_account_by_account_id() Failed(%d)", ret);
+ account_destroy(account);
+ account_disconnect();
+ return NULL;
+ }
+ p_retvm_if(ACCOUNT_ERROR_NONE != ret, NULL,
+ "account_query_account_by_account_id() Failed(%d)", ret);
+
+ ret = account_get_icon_path(account, &icon_path);
+ if (ACCOUNT_ERROR_NONE != ret)
+ {
+ ERR("account_get_icon_path() Failed(%d)", ret);
+ account_destroy(account);
+ account_disconnect();
+ return NULL;
+ }
+ account_destroy(account);
+ account_disconnect();
+
+ return icon_path;
+}
+
+Evas_Object* phone_create_navi_btn(Evas_Object *parent, const char *style)
+{
+ PH_TRACE;
+ Evas_Object *btn;
+
+ btn = elm_button_add(parent);
+ elm_object_style_set(btn, style);
+ evas_object_show(btn);
+
+ return btn;
+}
+
+void phone_set_view_info(ph_view_info *view_info, Evas_Object *win,
+ Evas_Object *navi, void *ug, int ug_request, int cnt_max, char *ug_data)
+{
+ PH_TRACE;
+ view_info->win = win;
+ view_info->navi = navi;
+ view_info->ug = (ui_gadget_h) ug;
+ view_info->ug_request = ug_request;
+ view_info->ug_cnt_max = cnt_max;
+ view_info->ug_data = ug_data;
+}
+
+void phone_list_ug_return_ids(ui_gadget_h ug, int *result_list, int cnt,
+ const char *bd_key)
+{
+ PH_TRACE;
+ gchar *encoded_str;
+ service_h service;
+
+ service_create(&service);
+
+ if (result_list)
+ {
+ encoded_str = g_base64_encode((guchar *) result_list,
+ cnt * sizeof(int));
+ service_add_extra_data(service, bd_key, encoded_str);
+ g_free(encoded_str);
+ }
+
+ ug_send_result(ug, service);
+
+ service_destroy(service);
+}
+
+void phone_list_ug_return_values(service_h service, int *result_list, int cnt,
+ const char *result_type)
+{
+ PH_TRACE;
+ service_h reply;
+ int ct_ret;
+ int i = 0, j = 0;
+ char **result_array = NULL;
+ service_result_e result = SERVICE_RESULT_SUCCEEDED;
+
+ p_retm_if(result_list == NULL || cnt < 1 || result_type == NULL,
+ "invalid input param");
+
+ service_create(&reply);
+ result_array = (char **) calloc(cnt, sizeof(char *));
+
+ if (strcmp(CT_OPERATION_RESULT_TYPE_PHONE, result_type) == 0)
+ {
+ for (i = 0; i < cnt; i++)
+ {
+ contacts_record_h number_record = NULL;
+ char *number = NULL;
+ ct_ret = contacts_db_get_record(_contacts_number._uri,
+ result_list[i], &number_record);
+ if (ct_ret != CONTACTS_ERROR_NONE)
+ {
+ ERR("contacts_db_get_record number failed id %d",
+ result_list[i]);
+ continue;
+ }
+
+ contacts_record_get_str_p(number_record, _contacts_number.number,
+ &number);
+ result_array[i] = strdup(number);
+ PH_DBG("number %s", result_array[i]);
+ contacts_record_destroy(number_record, TRUE);
+ }
+
+ service_add_extra_data_array(reply, CT_OPERATION_PHONE,
+ (const char **) result_array, cnt);
+ }
+ else if (strcmp(CT_OPERATION_RESULT_TYPE_EMAIL, result_type) == 0)
+ {
+ for (i = 0; i < cnt; i++)
+ {
+ contacts_record_h email_record = NULL;
+ char *email = NULL;
+ ct_ret = contacts_db_get_record(_contacts_email._uri,
+ result_list[i], &email_record);
+ if (ct_ret != CONTACTS_ERROR_NONE)
+ {
+ ERR("contacts_db_get_record email faile id %d", result_list[i]);
+ continue;
+ }
+
+ contacts_record_get_str_p(email_record, _contacts_email.email,
+ &email);
+ result_array[i] = strdup(email);
+ PH_DBG("email %s", result_array[i]);
+ contacts_record_destroy(email_record, TRUE);
+ }
+
+ service_add_extra_data_array(reply, CT_OPERATION_EMAIL,
+ (const char **) result_array, cnt);
+
+ }
+ else if (strcmp(CT_OPERATION_RESULT_TYPE_ITEM_ID, result_type) == 0)
+ {
+ for (i = 0; i < cnt; i++)
+ {
+ char buf[4];
+ snprintf(buf, sizeof(buf), "%d", result_list[i]);
+ result_array[i] = strdup(buf);
+ PH_DBG("person id %s", result_array[i]);
+ }
+
+ service_add_extra_data_array(reply, CT_OPERATION_ITEM_ID,
+ (const char **) result_array, cnt);
+
+ }
+ else
+ {
+ ERR("wrong result type %s", result_type);
+ result = SERVICE_RESULT_FAILED;
+ }
+
+ service_reply_to_launch_request(reply, service, result);
+ service_destroy(reply);
+
+ for (j = 0; j < i; j++)
+ {
+ free(result_array[j]);
+ }
+ free(result_array);
+}
+
+void phone_service_reply_simple(service_h service, service_result_e result)
+{
+ PH_TRACE;
+ service_h reply;
+ service_create(&reply);
+ service_reply_to_launch_request(reply, service, result);
+ service_destroy(reply);
+}
+
+void phone_list_ug_return_number_email_ids(ui_gadget_h ug,
+ int *result_number_list, int number_list_count, int *result_email_list,
+ int email_list_count)
+{
+ PH_TRACE;
+ gchar *encoded_str;
+ service_h service;
+ service_create(&service);
+
+ if (result_number_list && number_list_count)
+ {
+ encoded_str = g_base64_encode((guchar *) result_number_list,
+ number_list_count * sizeof(int));
+ service_add_extra_data(service, CT_UG_BUNDLE_RESULT_NUMBER_ID_LIST,
+ encoded_str);
+ g_free(encoded_str);
+ }
+
+ if (result_email_list && email_list_count)
+ {
+ encoded_str = g_base64_encode((guchar *) result_email_list,
+ email_list_count * sizeof(int));
+ service_add_extra_data(service, CT_UG_BUNDLE_RESULT_EMAIL_ID_LIST,
+ encoded_str);
+ g_free(encoded_str);
+ }
+
+ ug_send_result(ug, service);
+ service_destroy(service);
+}
+
+#define CT_UG_BUNDLE_RESULT_ID "id"
+#define CT_UG_BUNDLE_RESULT_VCARD "vcard"
+
+void phone_ug_return_id(ui_gadget_h ug, int ct_id, int num_id, int email_id)
+{
+ PH_TRACE;
+ service_h service;
+ char buf[16];
+
+ service_create(&service);
+
+ if (ct_id)
+ {
+ snprintf(buf, sizeof(buf), "%d", ct_id);
+ service_add_extra_data(service, CT_UG_BUNDLE_RESULT_ID, buf);
+ service_add_extra_data(service, CT_UG_BUNDLE_RESULT_PERSON_ID, buf);
+ }
+
+ if (num_id)
+ {
+ snprintf(buf, sizeof(buf), "%d", num_id);
+ service_remove_extra_data(service, CT_UG_BUNDLE_RESULT_ID);
+ service_add_extra_data(service, CT_UG_BUNDLE_RESULT_ID, buf);
+ service_add_extra_data(service, CT_UG_BUNDLE_RESULT_NUMBER_ID, buf);
+ }
+
+ if (email_id)
+ {
+ snprintf(buf, sizeof(buf), "%d", email_id);
+ service_remove_extra_data(service, CT_UG_BUNDLE_RESULT_ID);
+ service_add_extra_data(service, CT_UG_BUNDLE_RESULT_ID, buf);
+ service_add_extra_data(service, CT_UG_BUNDLE_RESULT_EMAIL_ID, buf);
+ }
+
+ PH_DBG("ct_id =%d, num_id=%d,email_id=%d", ct_id, num_id, email_id);
+ ug_send_result(ug, service);
+
+ service_destroy(service);
+}
+
+void phone_ug_return_value(service_h service, int person_id, int num_id,
+ int email_id, int result_id)
+{
+ PH_TRACE;
+ service_h reply;
+ char buf[16];
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h number_record = NULL;
+ contacts_record_h email_record = NULL;
+
+ service_create(&reply);
+
+ if (person_id)
+ {
+ char **result_array = NULL;
+ result_array = (char **) calloc(1, sizeof(char *));
+
+ snprintf(buf, sizeof(buf), "%d", person_id);
+ PH_DBG("person id %s", buf);
+
+ result_array[0] = strdup(buf);
+ service_add_extra_data_array(reply, CT_OPERATION_ITEM_ID,
+ (const char **) result_array, 1);
+
+ service_reply_to_launch_request(reply, service,
+ SERVICE_RESULT_SUCCEEDED);
+
+ service_destroy(reply);
+
+ free(result_array[0]);
+ free(result_array);
+
+ return;
+ }
+
+ if (num_id)
+ {
+ const char *number = NULL;
+ char **result_array = NULL;
+ result_array = (char **) calloc(1, sizeof(char *));
+
+ err = (contacts_error_e) contacts_db_get_record(_contacts_number._uri, num_id,
+ &number_record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ err = (contacts_error_e) contacts_record_get_str_p(number_record, _contacts_number.number,
+ (char**) &number);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ PH_DBG("number=%d", number);
+
+ result_array[0] = strdup(number);
+ service_add_extra_data_array(reply, CT_OPERATION_RESULT_TYPE_PHONE,
+ (const char **) result_array, 1);
+
+ service_reply_to_launch_request(reply, service,
+ SERVICE_RESULT_SUCCEEDED);
+
+ err = (contacts_error_e) contacts_record_destroy(number_record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ service_destroy(reply);
+
+ free(result_array[0]);
+ free(result_array);
+
+ return;
+ }
+
+ if (email_id)
+ {
+ const char *email = NULL;
+ char **result_array = NULL;
+ result_array = (char **) calloc(1, sizeof(char *));
+
+ err = (contacts_error_e) contacts_db_get_record(_contacts_email._uri, email_id,
+ &email_record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ err = (contacts_error_e) contacts_record_get_str_p(email_record, _contacts_email.email,
+ (char**) &email);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ PH_DBG("email=%d", email);
+
+ result_array[0] = strdup(email);
+ service_add_extra_data_array(reply, CT_OPERATION_RESULT_TYPE_EMAIL,
+ (const char **) result_array, 1);
+
+ service_reply_to_launch_request(reply, service,
+ SERVICE_RESULT_SUCCEEDED);
+
+ err = (contacts_error_e) contacts_record_destroy(email_record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ service_destroy(reply);
+
+ free(result_array[0]);
+ free(result_array);
+
+ return;
+ }
+
+ if (result_id)
+ {
+ snprintf(buf, sizeof(buf), "%d", person_id);
+ PH_DBG("person id %s", buf);
+
+ service_add_extra_data(reply, CT_OPERATION_ITEM_ID, buf);
+
+ service_reply_to_launch_request(reply, service,
+ SERVICE_RESULT_SUCCEEDED);
+
+ service_destroy(reply);
+
+ return;
+ }
+
+}
+
+void phone_ug_operation_return_vcard(service_h service, int ct_id, char *vcard)
+{
+ PH_TRACE;
+ service_h reply;
+
+ service_create(&reply);
+
+ if (vcard)
+ {
+ service_add_extra_data(reply, CT_OPERATION_PATH, vcard);
+ }
+
+ service_reply_to_launch_request(reply, service, SERVICE_RESULT_SUCCEEDED);
+
+ service_destroy(reply);
+}
+
+void phone_ug_return_vcard(ui_gadget_h ug, int ct_id, char *vcard)
+{
+ PH_TRACE;
+ service_h service;
+ char buf[16];
+
+ service_create(&service);
+
+ if (ct_id)
+ {
+ snprintf(buf, sizeof(buf), "%d", ct_id);
+ service_add_extra_data(service, CT_UG_BUNDLE_RESULT_ID, buf);
+ }
+
+ if (vcard)
+ {
+ service_add_extra_data(service, CT_UG_BUNDLE_RESULT_VCARD, vcard);
+ }
+
+ ug_send_result(ug, service);
+
+ service_destroy(service);
+}
+
+static void editfield_exceed_string_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ phone_show_tickernoti(T_(CT_GET_TEXT_ERR, CTTEXT_EXCEED_LIMIT));
+}
+
+static void editfield_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit((Evas_Object *) data, "elm,state,guidetext,hide", "elm");
+
+ if (elm_object_focus_get((Evas_Object *) data))
+ {
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit((Evas_Object *) data, "elm,state,eraser,hide", "elm");
+ else
+ elm_object_signal_emit((Evas_Object *) data, "elm,state,eraser,show", "elm");
+ }
+}
+static void editfield_focused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit((Evas_Object *) data, "elm,state,eraser,show", "elm");
+ elm_object_signal_emit((Evas_Object *) data, "elm,state,guidetext,hide", "elm");
+}
+
+static void editfield_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit((Evas_Object *) data, "elm,state,guidetext,show", "elm");
+ elm_object_signal_emit((Evas_Object *) data, "elm,state,eraser,hide", "elm");
+}
+
+static void editfield_eraser_clicked_cb(void *data, Evas_Object *obj,
+ const char *emission, const char *source)
+{
+ PH_TRACE;
+ elm_entry_entry_set((Evas_Object *) data, "");
+}
+
+Evas_Object* ctui_create_editfield(Evas_Object *parent, const char *title,
+ const char *guide, bool multiline)
+{
+ PH_TRACE;
+ Evas_Object *layout, *entry;
+
+ layout = elm_layout_add(parent);
+ if (title && *title)
+ {
+ elm_layout_theme_set(layout, "layout", "editfield", "title");
+ elm_object_part_text_set(layout, "elm.text", title);
+ }
+ else
+ elm_layout_theme_set(layout, "layout", "editfield", "default");
+
+ if (guide && *guide)
+ elm_object_part_text_set(layout, "elm.guidetext", guide);
+
+ entry = elm_entry_add(parent);
+ if (!multiline)
+ {
+ elm_entry_scrollable_set(entry, EINA_TRUE);
+ elm_entry_single_line_set(entry, EINA_TRUE);
+ }
+ ctui_entry_limit_size_set(entry);
+ elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
+ elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+ evas_object_smart_callback_add(entry, "changed", editfield_changed_cb,
+ layout);
+ evas_object_smart_callback_add(entry, "preedit,changed",
+ editfield_changed_cb, layout);
+ evas_object_smart_callback_add(entry, "focused", editfield_focused_cb,
+ layout);
+ evas_object_smart_callback_add(entry, "unfocused", editfield_unfocused_cb,
+ layout);
+ evas_object_smart_callback_add(entry, "maxlength,reached",
+ editfield_exceed_string_cb, layout);
+ elm_object_part_content_set(layout, "elm.swallow.content", entry);
+ elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm",
+ editfield_eraser_clicked_cb, entry);
+ return layout;
+}
+
+// This function is used in Contact view, Group view
+ui_gadget_h ctui_account_ug(void *data, Evas_Object *obj, void *event_info,
+ void (*destroy_cb)(void*), void *cb_param)
+{
+ PH_TRACE;
+ struct ug_cbs cbs = { 0 };
+ ui_gadget_h ug;
+ service_h service;
+ struct ug_priv_data *priv_data;
+
+ priv_data = (ug_priv_data *) calloc(1, sizeof(struct ug_priv_data));
+ p_retvm_if(NULL == priv_data, NULL, "calloc is failed");
+ priv_data->destroy_cb = destroy_cb;
+ priv_data->cb_param = cb_param;
+
+ service_create(&service);
+ service_add_extra_data(service, "mode", "account_list");
+ service_add_extra_data(service, "capability_filter",
+ ACCOUNT_SUPPORTS_CAPABILITY_CONTACT);
+
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = ug_common_destroy_cb;
+ cbs.priv = priv_data;
+
+ ug = ug_create((ui_gadget_h) data, ACCOUNT_UG, UG_MODE_FULLVIEW, service, &cbs);
+ p_warn_if(NULL == ug, "ug_create() Failed");
+
+ service_destroy(service);
+ return ug;
+}
+
+Evas_Object* phone_create_nocontents(Evas_Object *parent, const char* label)
+{
+ PH_TRACE;
+ Evas_Object *layout;
+
+ layout = elm_layout_add(parent);
+ p_retvm_if(NULL == layout, NULL, "elm_layout_add() return NULL");
+
+ elm_layout_theme_set(layout, "layout", "nocontents", "full");
+ elm_object_part_text_set(layout, "elm.text", label);
+
+ return layout;
+}
+
+void ctui_genlist_append_separator_20px_with_line(Evas_Object *genlist)
+{
+ PH_TRACE;
+ static Elm_Genlist_Item_Class itc;
+ itc.item_style = "dialogue/separator/21/with_line";
+
+ Elm_Object_Item *item;
+ item = elm_genlist_item_append(genlist, &itc, NULL, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+}
+
+void ctui_genlist_append_separator_8px_with_line(Evas_Object *genlist)
+{
+ static Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
+ itc->item_style = "dialogue/separator/2";
+ elm_genlist_item_append(genlist, itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+}
+
+void phone_toolbar_disabled_item_append(Evas_Object *toolbar, int cnt)
+{
+ PH_TRACE;
+ int i;
+ Elm_Object_Item * item;
+ for (i = 0; i < cnt; i++)
+ {
+ item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+ elm_object_item_disabled_set(item, EINA_TRUE);
+ }
+}
+
+int ctui_get_mfc_option(void)
+{
+ PH_TRACE;
+ int fd;
+ int size;
+ char buf[PH_TEXT_SHORT_LEN];
+
+ fd = open(SETTING_MFC_PATH, O_RDONLY);
+ if (fd < 0)
+ {
+ ERR("Open(%s) O_RDONLY Failed", SETTING_MFC_PATH);
+ fd = open(SETTING_MFC_PATH, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+ p_retvm_if(fd < 0, 0, "Open(%s) Failed", SETTING_MFC_PATH);
+ if (-1 == write(fd, "0", 1))
+ ERR("write()... Failed(%s)", strerror(errno));
+ }
+ size = read(fd, buf, sizeof(buf));
+ close(fd);
+ if (0 < size)
+ return atoi(buf);
+ else
+ return 0;
+}
+
+static void genlist_selectall_mouseup_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int x, y, w, h;
+ Eina_Bool is_checked;
+ Evas_Object *check;
+ Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
+ void *cb_data;
+ selectall_changed_cb changed_cb = (selectall_changed_cb) data;
+
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+ if (ev->output.y < y || y + h < ev->output.y)
+ return;
+
+ p_retm_if(NULL == changed_cb, "changed_cb is NULL");
+
+ check = elm_object_part_content_get(obj, "elm.icon");
+ p_retm_if(NULL == check, "elm_object_part_content_get() return NULL");
+
+ cb_data = evas_object_data_get(check, "cb_data");
+ p_retm_if(NULL == cb_data, "cb_data is NULL");
+
+ is_checked = !elm_check_state_get(check);
+ elm_check_state_set(check, is_checked);
+
+ changed_cb(cb_data, is_checked);
+}
+
+static void genlist_selectall_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Eina_Bool is_checked;
+ void *cb_data;
+ selectall_changed_cb changed_cb = (selectall_changed_cb) data;
+ p_retm_if(NULL == changed_cb, "changed_cb is NULL");
+
+ cb_data = evas_object_data_get(obj, "cb_data");
+ p_retm_if(NULL == cb_data, "cb_data is NULL");
+
+ is_checked = elm_check_state_get(obj);
+ changed_cb(cb_data, is_checked);
+}
+
+Evas_Object* phone_create_select_all(Evas_Object *parent,
+ const char *selectall_text, selectall_changed_cb changed_cb,
+ void *cb_data)
+{
+ PH_TRACE;
+ Evas_Object *layout;
+ Evas_Object *check;
+
+ p_retvm_if(NULL == parent, NULL, "parameter(parent) is NULL");
+
+ layout = elm_layout_add(parent);
+ p_retvm_if(NULL == layout, NULL, "elm_layout_add() return NULL");
+ elm_layout_theme_set(layout, "genlist", "item", "select_all/default");
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0);
+ evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_UP,
+ genlist_selectall_mouseup_cb, (const void *) changed_cb);
+
+ check = elm_check_add(layout);
+ p_retvm_if(NULL == check, NULL, "elm_check_add() return NULL");
+ evas_object_propagate_events_set(check, EINA_FALSE);
+ elm_object_part_content_set(layout, "elm.icon", check);
+ evas_object_smart_callback_add(check, "changed",
+ genlist_selectall_changed_cb, (const void *) changed_cb);
+ evas_object_data_set(check, "cb_data", cb_data);
+
+ elm_object_part_text_set(layout, "elm.text", selectall_text);
+ evas_object_show(layout);
+
+ return layout;
+}
+
+void phone_move_ctxpopup(Evas_Object *popup, Evas_Object *item)
+{
+ PH_TRACE;
+ int x, y, w, h;
+ int pos_x;
+ int pos_y;
+ p_retm_if(NULL == popup, "parameter(popup) is NULL");
+ p_retm_if(NULL == item, "parameter(item) is NULL");
+
+ evas_object_geometry_get(item, &x, &y, &w, &h);
+
+ pos_x = x + (Evas_Coord) w / 2;
+ pos_y = y + (Evas_Coord) h / 2;
+
+ evas_object_move(popup, pos_x, pos_y);
+}
+
+void ctui_get_addressbook_name(int addressbook_id, char *dest, int dest_len)
+{
+ PH_TRACE;
+ char *display_name = NULL;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ p_retm_if(NULL == dest, "parameter(dest) is NULL");
+ dest[0] = '\0';
+
+ if (addressbook_id <= 0)
+ {
+ snprintf(dest, dest_len, "%s", T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE));
+ return;
+ }
+
+ err = (contacts_error_e) contacts_db_get_record(_contacts_address_book._uri,
+ addressbook_id, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() Failed(%d)",
+ err);
+
+ err = (contacts_error_e) contacts_record_get_str_p(record,
+ _contacts_address_book.name, &display_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (display_name && *display_name)
+ snprintf(dest, dest_len, "%s", display_name);
+
+ err = (contacts_error_e) contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+}
+
+void ctui_get_account_name_by_address_book_id(int address_book_id, char *dest,
+ int dest_len)
+{
+ PH_TRACE;
+ int ret;
+ int account_id;
+ char *domain_name;
+ account_h account;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = (contacts_error_e) contacts_db_get_record(_contacts_address_book._uri,
+ address_book_id, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "phone_cts_get_list() Failed(%d)",
+ err);
+
+ err = (contacts_error_e) contacts_record_get_int(record,
+ _contacts_address_book.account_id, &account_id);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ err = (contacts_error_e) contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ return;
+ }
+
+ err = (contacts_error_e) contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ if (0 == account_id)
+ return;
+
+ ret = account_connect();
+ p_retm_if(ACCOUNT_ERROR_NONE != ret, "account_connect() Failed(%d)", ret);
+
+ account = NULL;
+ ret = account_create(&account);
+ if (ACCOUNT_ERROR_NONE != ret)
+ {
+ ERR("account_create() Failed(%d)", ret);
+ account_disconnect();
+ return;
+ }
+
+ ret = account_query_account_by_account_id(account_id, &account);
+ if (ACCOUNT_ERROR_NONE != ret)
+ {
+ ERR("account_query_account_by_account_id() Failed(%d)", ret);
+ account_destroy(account);
+ account_disconnect();
+ return;
+ }
+
+ ret = account_get_domain_name(account, &domain_name);
+ if (ACCOUNT_ERROR_NONE != ret)
+ {
+ ERR("account_get_display_name() Failed(%d)", ret);
+ account_destroy(account);
+ account_disconnect();
+ return;
+ }
+ PH_DBG("domain_name = %s", domain_name);
+
+ account_destroy(account);
+ account_disconnect();
+
+ if (domain_name && *domain_name)
+ snprintf(dest, dest_len, "%s", domain_name);
+
+ free(domain_name);
+}
+
+// TODO: Fixme
+Eina_List* ctui_person_get_writable_contact_list(int person_id)
+{
+ PH_TRACE;
+ int addressbook_id;
+ int addressbook_mode;
+ Eina_List *list_contact_record = NULL;
+
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_list_h list_contact = NULL;
+ contacts_record_h record_addressbook = NULL;
+ contacts_record_h record_contact = NULL;
+ contacts_record_h record_contact_clone = NULL;
+
+ p_retvm_if(person_id <= 0, NULL, "Invalid parameter(%d)", person_id);
+
+ err = phone_cts_get_list(_contacts_contact._uri,
+ _contacts_contact.person_id, person_id, &list_contact);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "phone_cts_get_list() Failed(%d)", err);
+
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ err = phone_cts_get_int_from_list(list_contact,
+ _contacts_contact.address_book_id, &addressbook_id);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_int_from_list() Failed(%d)", err);
+ break;
+ }
+
+ err = (contacts_error_e) contacts_db_get_record(
+ _contacts_address_book._uri, addressbook_id,
+ &record_addressbook);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_get_record() Failed(%d)", err);
+ break;
+ }
+
+ err = (contacts_error_e) contacts_record_get_int(record_addressbook,
+ _contacts_address_book.mode, &addressbook_mode);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_int_from_list() Failed(%d)", err);
+ err = (contacts_error_e) contacts_record_destroy(record_addressbook,
+ true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ break;
+ }
+
+ err = (contacts_error_e) contacts_record_destroy(record_addressbook,
+ true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ if (CONTACTS_ADDRESS_BOOK_MODE_READONLY == addressbook_mode)
+ {
+ err = (contacts_error_e) contacts_list_next(list_contact);
+ continue;
+ }
+
+ err = (contacts_error_e) contacts_list_get_current_record_p(
+ list_contact, &record_contact);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+
+ err = (contacts_error_e) contacts_record_clone(record_contact,
+ &record_contact_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_clone() Failed(%d)", err);
+ break;
+ }
+
+ list_contact_record = eina_list_append(list_contact_record,
+ record_contact_clone);
+
+ err = (contacts_error_e) contacts_list_next(list_contact);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ }
+ phone_cts_free_list(list_contact);
+
+ return list_contact_record;
+}
+
+static bool __phone_list_is_email_exist(Eina_List *list, char *email_address)
+{
+ PH_TRACE;
+ Eina_List *l;
+ char *email_address_temp;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ void *v_record_temp = NULL;
+
+ EINA_LIST_FOREACH(list, l, v_record_temp)
+ {
+ contacts_record_h record_temp = (contacts_record_h) v_record_temp;
+ if (NULL == record_temp)
+ continue;
+
+ err = (contacts_error_e) contacts_record_get_str_p(record_temp,
+ _contacts_email.email, &email_address_temp);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (NULL == email_address_temp)
+ continue;
+
+ if (0 == strcmp(email_address_temp, email_address))
+ return true;
+ }
+ return false;
+}
+
+Eina_List* ctui_person_get_email_list(Eina_List *contact_list)
+{
+ PH_TRACE;
+ Eina_Bool checkduplicate = false;
+ int index = 0;
+ char *email_address;
+ Eina_List *l;
+ Eina_List *list_email_record = NULL;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record_email = NULL;
+ contacts_record_h record_clone = NULL;
+ void *v_record = NULL;
+
+ EINA_LIST_FOREACH(contact_list, l, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ index = 0;
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record,
+ _contacts_contact.email, index++, &record_email))
+ {
+ err = (contacts_error_e) contacts_record_get_str_p(record_email,
+ _contacts_email.email, &email_address);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_str_from_list() Failed(%d)", err);
+ break;
+ }
+ if (checkduplicate)
+ {
+ if (__phone_list_is_email_exist(list_email_record,
+ email_address))
+ {
+ ERR(
+ "__phone_list_is_email_exist() return true (email address = %s",
+ email_address);
+ continue;
+ }
+ }
+ err = (contacts_error_e) contacts_record_clone(record_email,
+ &record_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+ list_email_record = eina_list_append(list_email_record,
+ record_clone);
+ }
+ checkduplicate = true;
+ }
+ return list_email_record;
+}
+
+static bool __phone_list_is_number_exist(Eina_List *list, char *number_str)
+{
+ PH_TRACE;
+ Eina_List *l;
+ char *number_str_temp;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ void *v_record_temp = NULL;
+
+ EINA_LIST_FOREACH(list, l, v_record_temp)
+ {
+ contacts_record_h record_temp = (contacts_record_h) v_record_temp;
+ if (NULL == record_temp)
+ continue;
+
+ err = (contacts_error_e) contacts_record_get_str_p(record_temp,
+ _contacts_number.number, &number_str_temp);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (NULL == number_str_temp)
+ continue;
+
+ if (0 == strcmp(number_str_temp, number_str))
+ return true;
+ }
+ return false;
+}
+
+Eina_List* ctui_person_get_number_list(Eina_List *contact_list)
+{
+ PH_TRACE;
+ Eina_Bool checkduplicate = false;
+ int index = 0;
+ char *number_str;
+ Eina_List *l;
+ Eina_List *list_number_record = NULL;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record_number = NULL;
+ contacts_record_h record_clone = NULL;
+ void *v_record = NULL;
+
+ EINA_LIST_FOREACH(contact_list, l, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ index = 0;
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record,
+ _contacts_contact.number, index++, &record_number))
+ {
+ err = (contacts_error_e) contacts_record_get_str_p(record_number,
+ _contacts_number.number, &number_str);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_str_from_list() Failed(%d)", err);
+ break;
+ }
+ if (checkduplicate)
+ {
+ if (__phone_list_is_number_exist(list_number_record,
+ number_str))
+ {
+ ERR(
+ "__phone_list_is_number_exist() return true (number = %s",
+ number_str);
+ continue;
+ }
+ }
+ err = (contacts_error_e) contacts_record_clone(record_number,
+ &record_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+ list_number_record = eina_list_append(list_number_record,
+ record_clone);
+ }
+ checkduplicate = true;
+ }
+ return list_number_record;
+}
+
+Eina_List* ctui_person_get_contact_list(int person_id)
+{
+ PH_TRACE;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record_contact = NULL;
+ contacts_record_h record_contact_clone = NULL;
+ contacts_list_h list_contacts = NULL;
+ Eina_List *list_contact_records = NULL;
+
+ err = phone_cts_get_list(_contacts_contact._uri,
+ _contacts_contact.person_id, person_id, &list_contacts);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "phone_cts_get_list() Failed(%d)", err);
+
+ while (err == CONTACTS_ERROR_NONE)
+ {
+ err = (contacts_error_e) contacts_list_get_current_record_p(
+ list_contacts, &record_contact);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+
+ err = (contacts_error_e) contacts_record_clone(record_contact,
+ &record_contact_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_clone() Failed(%d)", err);
+ break;
+ }
+
+ list_contact_records = eina_list_append(list_contact_records,
+ record_contact_clone);
+
+ err = (contacts_error_e) contacts_list_next(list_contacts);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_next() Failed(%d)",
+ err);
+ }
+ phone_cts_free_list(list_contacts);
+
+ return list_contact_records;
+}
+
+void ctui_free_record_list(Eina_List *contact_list)
+{
+ PH_TRACE;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ void *v_record = NULL;
+ p_retm_if(NULL == contact_list, "contact_list is NULL");
+
+ EINA_LIST_FREE(contact_list, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ if (NULL == record)
+ continue;
+ err = (contacts_error_e) contacts_record_destroy(record, true);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_destroy() Failed(%d)", err);
+ continue;
+ }
+ }
+}
+
+// TODO: Fixme
+int ctui_get_email_type_index(int type)
+{
+ PH_TRACE;
+ switch (type)
+ {
+ case CONTACTS_EMAIL_TYPE_CUSTOM:
+ return 1;
+ case CONTACTS_EMAIL_TYPE_HOME:
+ return 2;
+ case CONTACTS_EMAIL_TYPE_WORK:
+ return 3;
+ default:
+ return 0;
+ }
+}
+
+int ctui_get_view_mode(void)
+{
+ PH_TRACE;
+ int fd;
+ int size;
+ char buf[PH_TEXT_SHORT_LEN];
+
+ fd = open(VIEW_MODE_PATH, O_RDONLY);
+ if (fd < 0)
+ {
+ ctui_set_view_mode(-1);
+ PH_DBG("Open(%s) Failed so create new", VIEW_MODE_PATH);
+ return -1;
+ }
+ size = read(fd, buf, sizeof(buf));
+ close(fd);
+ if (0 < size)
+ return atoi(buf);
+ else
+ return -1;
+}
+
+void ctui_set_view_mode(int addressbook_id)
+{
+ PH_TRACE;
+ int fd;
+ char buf[PH_TEXT_SHORT_LEN] = { 0 };
+
+ fd = open(VIEW_MODE_PATH, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+ p_retm_if(fd < 0, "Open(%s) Failed", VIEW_MODE_PATH);
+ snprintf(buf, sizeof(buf), "%d", addressbook_id);
+ if (-1 == write(fd, buf, strlen(buf)))
+ ERR("write()... Failed(%s)", strerror(errno));
+ close(fd);
+}
+
+contacts_error_e phone_cts_get_default_number(int person_id,
+ contacts_record_h *record_clone)
+{
+ PH_TRACE;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ contacts_list_h list = NULL;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+
+ p_retvm_if(NULL == record_clone, CONTACTS_ERROR_INVALID_PARAMETER,
+ "parameter(record_clone) is NULL");
+
+ err = (contacts_error_e) contacts_query_create(_contacts_person_number._uri,
+ &query);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, err,
+ "contacts_query_create() Failed(%d)", err);
+
+ err = (contacts_error_e) contacts_filter_create(
+ _contacts_person_number._uri, &filter);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_filter_create() Failed(%d)", err);
+ contacts_query_destroy(query);
+ return err;
+ }
+
+ do
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_int(filter,
+ _contacts_person_number.person_id, CONTACTS_MATCH_EQUAL,
+ person_id)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_operator(
+ filter, CONTACTS_FILTER_OPERATOR_AND)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_bool(filter,
+ _contacts_person_number.is_primary_default, true)))
+ break;
+ if (CONTACTS_ERROR_NONE != (err =
+ (contacts_error_e) contacts_query_set_filter(query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_list_get_current_record_p(
+ list, &record)))
+ break;
+ if (CONTACTS_ERROR_NONE != (err =
+ (contacts_error_e) contacts_record_clone(record, record_clone)))
+ break;
+
+ contacts_query_destroy(query);
+ contacts_filter_destroy(filter);
+ contacts_list_destroy(list, true);
+
+ return CONTACTS_ERROR_NONE;
+ }
+ while (0);
+
+ contacts_query_destroy(query);
+ contacts_filter_destroy(filter);
+ if (list)
+ contacts_list_destroy(list, true);
+
+ return err;
+}
+
+contacts_error_e phone_cts_get_default_email(int person_id,
+ contacts_record_h *record_clone)
+{
+ PH_TRACE;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ contacts_list_h list = NULL;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+
+ p_retvm_if(NULL == record_clone, CONTACTS_ERROR_INVALID_PARAMETER,
+ "parameter(record_clone) is NULL");
+
+ err = (contacts_error_e) contacts_query_create(_contacts_person_email._uri,
+ &query);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, err,
+ "contacts_query_create() Failed(%d)", err);
+
+ err = (contacts_error_e) contacts_filter_create(_contacts_person_email._uri,
+ &filter);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_filter_create() Failed(%d)", err);
+ contacts_query_destroy(query);
+ return err;
+ }
+
+ do
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_int(filter,
+ _contacts_person_email.person_id, CONTACTS_MATCH_EQUAL,
+ person_id)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_operator(
+ filter, CONTACTS_FILTER_OPERATOR_AND)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_bool(filter,
+ _contacts_person_email.is_primary_default, true)))
+ break;
+ if (CONTACTS_ERROR_NONE != (err =
+ (contacts_error_e) contacts_query_set_filter(query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, &list)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_list_get_current_record_p(
+ list, &record)))
+ break;
+ if (CONTACTS_ERROR_NONE != (err =
+ (contacts_error_e) contacts_record_clone(record, record_clone)))
+ break;
+
+ contacts_query_destroy(query);
+ contacts_filter_destroy(filter);
+ contacts_list_destroy(list, true);
+
+ return CONTACTS_ERROR_NONE;
+ }
+ while (0);
+
+ contacts_query_destroy(query);
+ contacts_filter_destroy(filter);
+
+ if (list)
+ contacts_list_destroy(list, true);
+ return err;
+}
+
+bool ctui_list_make_vcard(int person_id, char *path, int path_length)
+{
+ PH_TRACE;
+ int fd;
+ char *display = NULL;
+ char *vcard = NULL;
+ contacts_record_h record = NULL;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ err = (contacts_error_e) contacts_db_get_record(_contacts_person._uri,
+ person_id, &record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_get_record() Failed(%d)", err);
+ return false;
+ }
+
+ err = (contacts_error_e) contacts_record_get_str_p(record,
+ _contacts_person.display_name, &display);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (display && *display)
+ snprintf(path, path_length, "%s/%s.vcf", UGDATAIDR, display);
+ else
+ snprintf(path, path_length, "%s/%s.vcf", UGDATAIDR,
+ T_(CT_GET_TEXT_ERR, CTTEXT_NONAME));
+
+ err = (contacts_error_e) contacts_vcard_make_from_person(record, &vcard);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_vcard_make_from_person() Failed(%d)", err);
+ err = (contacts_error_e) contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ return false;
+ }
+
+ fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+
+ if (-1 == write(fd, vcard, strlen(vcard)))
+ {
+ ERR("write()... Failed(%s)", strerror(errno));
+ free(vcard);
+ return false;
+ }
+ free(vcard);
+ return true;
+}
+
+int ctui_get_addressbook_id_by_index(Eina_List *list, unsigned int index)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == list, -1, "list is NULL");
+ void *addressbook_id;
+
+ if (eina_list_count(list) <= index)
+ {
+ ERR("index is bigger than count");
+ return -1;
+ }
+
+ addressbook_id = eina_list_nth(list, index);
+
+ return (int) addressbook_id;
+}
+
+Eina_List* ctui_get_addressbook_id_list(const char *ori_string, const char *sep)
+{
+ PH_TRACE;
+ Eina_List *e_list = NULL;
+ char *p = NULL;
+ char *copy_string;
+ char *save_p;
+
+ if (!ori_string)
+ {
+ PH_DBG("Input string is NULL");
+ return NULL;
+ }
+
+ copy_string = SAFE_STRDUP(ori_string);
+
+ if (copy_string)
+ {
+ p = strtok_r(copy_string, sep, &save_p);
+
+ while (p)
+ {
+ int id = atoi(p);
+ if (eina_list_data_find(e_list, (void*) id) == NULL)
+ e_list = eina_list_append(e_list, (void*) id);
+
+ p = strtok_r(NULL, sep, &save_p);
+ }
+
+ free(copy_string);
+ }
+
+ return e_list;
+}
+
+Eina_List* __make_tokenize_list(const char *ori_string, const char *sep)
+{
+ PH_TRACE;
+ Eina_List *e_list = NULL;
+ char *p = NULL;
+ char *copy_string;
+ char *save_p;
+
+ if (!ori_string)
+ {
+ PH_DBG("Input string is NULL");
+ return NULL;
+ }
+
+ copy_string = SAFE_STRDUP(ori_string);
+
+ if (copy_string)
+ {
+ p = strtok_r(copy_string, sep, &save_p);
+
+ if (p)
+ PH_DBG("list item = %s", p);
+
+ while (p)
+ {
+ char *c = SAFE_STRDUP(p);
+
+ e_list = eina_list_append(e_list, c);
+
+ p = strtok_r(NULL, sep, &save_p);
+
+ if (p)
+ PH_DBG("list item = %s", p);
+ }
+
+ free(copy_string);
+ }
+
+ return e_list;
+}
+
+contacts_record_h ctui_get_record_image(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ p_retvm_if(NULL == record_contact, NULL,
+ "parameter(record_contact) is NULL");
+
+ err = (contacts_error_e) contacts_record_get_child_record_at_p(
+ record_contact, _contacts_contact.image, 0, &record);
+ if (NULL != record)
+ return record;
+
+ err = (contacts_error_e) contacts_record_create(_contacts_image._uri,
+ &record);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = (contacts_error_e) contacts_record_add_child_record(record_contact,
+ _contacts_contact.image, record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_add_child_record() Failed(%d)", err);
+
+ return record;
+}
+
+Evas_Object *phone_create_toolbar_btn(Evas_Object *parent, const char *text,
+ Evas_Smart_Cb func, void *data)
+{
+ PH_TRACE;
+ const Evas_Coord height = 100;
+ if (!parent || !data)
+ {
+ return NULL;
+ }
+ Evas_Object *btn = elm_button_add(parent);
+ if (!btn)
+ {
+ return NULL;
+ }
+ evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_style_set(btn, "naviframe/toolbar/default");
+ elm_object_text_set(btn, text);
+ evas_object_size_hint_min_set(btn, 0, height);
+ evas_object_size_hint_max_set(btn, 999999, height);
+ evas_object_smart_callback_add(btn, "clicked", func, data);
+ evas_object_show(btn);
+ return btn;
+}
+
+int ctui_get_addressbook_id(char* addressbook_name)
+{
+ PH_TRACE;
+ PH_DBG("addressbook_name = %s", addressbook_name);
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+ contacts_list_h list = NULL;
+ contacts_record_h record = NULL;
+ unsigned int count = 0;
+ int addressbook_id = -1; //0 is phone addressbook id
+
+ err = (contacts_error_e) contacts_filter_create(_contacts_address_book._uri,
+ &filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contactcs_filter_create() Failed(%d)", err);
+
+ err = (contacts_error_e) contacts_filter_add_str(filter,
+ _contacts_address_book.name, CONTACTS_MATCH_FULLSTRING,
+ addressbook_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_add_str() Failed(%d)", err);
+ err = (contacts_error_e) contacts_query_create(_contacts_address_book._uri,
+ &query);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_query_create() Failed(%d)",
+ err);
+ err = (contacts_error_e) contacts_query_set_filter(query, filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_set_filter() Failed(%d)", err);
+ err = (contacts_error_e) contacts_db_get_records_with_query(query, 0, 0,
+ &list);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_records_with_query() Failed(%d)", err);
+
+ if (list != NULL)
+ {
+ err = (contacts_error_e) contacts_list_get_count(list, &count);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_get_count() Failed(%d)", err);
+ PH_DBG("count = %d", count);
+ if (count > 0)
+ {
+ err = (contacts_error_e) contacts_list_get_current_record_p(list,
+ &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_get_current_record_p() Failed(%d)", err);
+ contacts_record_get_int(record, _contacts_address_book.id,
+ &addressbook_id);
+ err = (contacts_error_e) contacts_list_destroy(list, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_destroy() Failed(%d)", err);
+ }
+ }
+ err = (contacts_error_e) contacts_filter_destroy(filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_destroy() Failed(%d)", err);
+ err = (contacts_error_e) contacts_query_destroy(query);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_query_destroy() Failed(%d)",
+ err);
+
+ PH_DBG("addressbook id = %d", addressbook_id);
+ return addressbook_id;
+
+}
+
+void ctui_create_contacts_error_popup(Evas_Object *parent, int err)
+{
+ PH_TRACE;
+ p_retm_if(CONTACTS_ERROR_NONE == err,
+ "ctui_create_contacts_error_popup no errer");
+ p_retm_if(NULL == parent,
+ "ctui_create_contacts_error_popup parent is null");
+
+ ERR("ctui_create_contacts_error_popup() err(%d)", err);
+ switch (err)
+ {
+ case CONTACTS_ERROR_DB:
+ phone_show_popup(parent, T_(CT_GET_TEXT_ERR, CTTEXT_ERR_DB_LOCKED),
+ 1.5);
+ break;
+ case CONTACTS_ERROR_FILE_NO_SPACE:
+ phone_show_popup(parent, S_(CT_SYS_POP_NOT_ENOUGH_MEMORY), 1.5);
+ break;
+ default:
+ phone_show_popup(parent, S_(PH_SYS_POP_FAILED), 1.5);
+ break;
+ }
+
+ return;
+}
+
+bool hasBadge()
+{
+ PH_TRACE;
+ bool badgeExists(false);
+ badge_error_e badgeRes = badge_is_existing(DIALER_PKG, &badgeExists);
+ p_warn_if(BADGE_ERROR_NONE != badgeRes, "badge_is_existing is failed(%d)", badgeRes);
+ if (badgeRes != BADGE_ERROR_NONE)
+ {
+ badgeExists = false;
+ }
+
+ return badgeExists;
+}
+
+bool removeBadge()
+{
+ PH_TRACE;
+ bool shouldRemove(hasBadge());
+ if (shouldRemove)
+ {
+ badge_remove(DIALER_PKG);
+ }
+
+ return shouldRemove;
+}
+
+void phone_set_searchbar_add_button_visible(ct_list_data &clist_d, bool visible)
+{
+ PH_TRACE;
+ Evas_Object * add_button = (Evas_Object *) evas_object_data_get(clist_d.searchbar, "add_button");
+ if(add_button)
+ {
+ if(visible)
+ {
+ elm_object_part_content_set(clist_d.searchbar, "add_button_show_swall_search", clist_d.search_layout);
+ elm_object_part_content_set(clist_d.searchbar,"button_add",add_button);
+ }
+ else
+ {
+ elm_object_part_content_set(clist_d.searchbar, "add_button_hide_swall_search", clist_d.search_layout);
+ elm_object_part_content_unset(clist_d.searchbar, "button_add");
+ evas_object_hide(add_button);
+ }
+ }
+}
+
+bool phone_copy_to_dialing_screen(const std::string& number)
+{
+ PH_TRACE;
+ bool result(false);
+ service_h service = NULL;
+ std::string uri = "tel:" + number;
+
+ if(service_create(&service) == SERVICE_ERROR_NONE)
+ {
+ if( service_set_package(service, DIALER_PKG) == SERVICE_ERROR_NONE
+ && service_set_operation(service,
+ "http://tizen.org/appcontrol/operation/dial") == SERVICE_ERROR_NONE
+ && service_set_uri(service, uri.c_str()) == SERVICE_ERROR_NONE)
+ {
+ if( service_send_launch_request(service, NULL, NULL) == SERVICE_ERROR_NONE)
+ {
+ result = (service_destroy(service) == SERVICE_ERROR_NONE);
+ }
+ }
+ }
+ return result;
+}
+
+char* phone_get_datetime_str(UDateFormat* formatter, int year, int month,
+ int day)
+{
+ PH_TRACE;
+ time_t timer;
+ struct tm stime;
+ char *ret_str = NULL;
+ char formatted_str[PH_TEXT_SHORT_LEN];
+ int32_t formattedCapacity;
+ UChar formatted[PH_TEXT_SHORT_LEN];
+ UErrorCode status = U_ZERO_ERROR;
+ if(formatter)
+ {
+ memset(&stime, 0, sizeof(struct tm));
+ stime.tm_year = year - 1900;
+ stime.tm_mon = month - 1;
+ stime.tm_mday = day;
+ timer = mktime(&stime);
+
+ formattedCapacity = (int32_t)(sizeof(formatted) / sizeof((formatted)[0]));
+ udat_format(formatter, (UDate) timer * 1000, formatted, formattedCapacity,
+ NULL, &status);
+ p_retvm_if(U_FAILURE(status), NULL, "udat_format() Failed()");
+
+ u_austrcpy(formatted_str, formatted);
+ ret_str = strdup(formatted_str);
+ }
+
+ return ret_str;
+}
+
+// TODO: Fixme
+int phone_get_address_type_index(int type)
+{
+ PH_TRACE;
+ switch (type)
+ {
+ case CONTACTS_ADDRESS_TYPE_CUSTOM:
+ return 1;
+ case CONTACTS_ADDRESS_TYPE_HOME:
+ return 2;
+ case CONTACTS_ADDRESS_TYPE_WORK:
+ return 3;
+ default:
+ return 0;
+ }
+}
+
+// TODO: Fixme
+int phone_get_website_type_index(int type)
+{
+ PH_TRACE;
+ switch (type)
+ {
+ case CONTACTS_URL_TYPE_CUSTOM:
+ return 1;
+ case CONTACTS_URL_TYPE_HOME:
+ return 2;
+ case CONTACTS_URL_TYPE_WORK:
+ return 3;
+ default:
+ return 0;
+ }
+}
+
+int phone_get_number_type_index(int ct_num_type)
+{
+ PH_TRACE;
+ int ret_type;
+
+ switch (ct_num_type)
+ {
+ case CTTEXT_TYPE_MOBILE:
+ ret_type = CONTACTS_NUMBER_TYPE_CELL;
+ break;
+ case CTTEXT_TYPE_HOME:
+ ret_type = CONTACTS_NUMBER_TYPE_VOICE | CONTACTS_NUMBER_TYPE_HOME;
+ break;
+ case CTTEXT_TYPE_HOME2:
+ ret_type = CONTACTS_NUMBER_TYPE_CELL | CONTACTS_NUMBER_TYPE_HOME;
+ break;
+ case CTTEXT_TYPE_WORK:
+ ret_type = CONTACTS_NUMBER_TYPE_VOICE | CONTACTS_NUMBER_TYPE_WORK;
+ break;
+ case CTTEXT_TYPE_WORK2:
+ ret_type = CONTACTS_NUMBER_TYPE_CELL | CONTACTS_NUMBER_TYPE_WORK;
+ break;
+ case CTTEXT_TYPE_FAX_HOME:
+ ret_type = CONTACTS_NUMBER_TYPE_FAX | CONTACTS_NUMBER_TYPE_HOME;
+ break;
+ case CTTEXT_TYPE_FAX_WORK:
+ ret_type = CONTACTS_NUMBER_TYPE_FAX | CONTACTS_NUMBER_TYPE_WORK;
+ break;
+ case CTTEXT_TYPE_ASSISTANT:
+ ret_type = CONTACTS_NUMBER_TYPE_ASSISTANT;
+ break;
+ case CTTEXT_TYPE_PAGER:
+ ret_type = CONTACTS_NUMBER_TYPE_PAGER;
+ break;
+ case CTTEXT_TYPE_CAR:
+ ret_type = CONTACTS_NUMBER_TYPE_CAR;
+ break;
+ case CTTEXT_TYPE_CUSTOM:
+ ret_type = CONTACTS_NUMBER_TYPE_CUSTOM;
+ break;
+ case CTTEXT_TYPE_OTHER:
+ default:
+ ret_type = CONTACTS_NUMBER_TYPE_OTHER;
+ break;
+ }
+
+ return ret_type;
+}
+
+UDateFormat* phone_init_time_formatter(void)
+{
+ PH_TRACE;
+ UChar pattern[PH_TEXT_SHORT_LEN] = {0,};
+ UChar customSkeleton[PH_TEXT_SHORT_LEN] = {0,};
+ UDateFormat *formatter = NULL;
+ UErrorCode status = U_ZERO_ERROR;
+
+ u_uastrncpy(customSkeleton, UDAT_YEAR_MONTH_DAY,
+ strlen(UDAT_YEAR_MONTH_DAY));
+
+ const char *locale = uloc_getDefault();
+ p_retvm_if(NULL == locale, NULL, "uloc_getDefault() return NULL");
+
+ UDateTimePatternGenerator *generator = udatpg_open(locale, &status);
+ p_retvm_if(U_FAILURE(status), NULL, "udatpg_open() Failed()");
+
+ int32_t pattern_capacity = (int32_t)(sizeof(pattern) / sizeof((pattern)[0]));
+ udatpg_getBestPattern(generator, customSkeleton, 6, pattern,
+ pattern_capacity, &status);
+
+ if (!U_FAILURE(status))
+ formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1,
+ pattern, -1, &status);
+
+ udatpg_close(generator);
+ return formatter;
+}
+
+void phone_destroy_confirm_popup_data(ct_confirm_popup_data* p_popup_data)
+{
+ PH_TRACE;
+ p_retm_if(NULL == p_popup_data, "popup data is null");
+ p_popup_data->parent = NULL;
+ evas_object_del(p_popup_data->button1);
+ p_popup_data->button1 = NULL;
+ evas_object_del(p_popup_data->button2);
+ p_popup_data->button2 = NULL;
+ free(p_popup_data->popup_label);
+ p_popup_data->popup_label = NULL;
+ free(p_popup_data->button1_label);
+ p_popup_data->button1_label = NULL;
+ free(p_popup_data->button2_label);
+ p_popup_data->button2_label = NULL;
+ p_popup_data->button1_cb = NULL;
+ p_popup_data->button2_cb = NULL;
+ p_popup_data->button1_data = NULL;
+ p_popup_data->button2_data = NULL;
+ evas_object_del(p_popup_data->popup);
+ p_popup_data->popup = NULL;
+}
+
+bool phone_fill_confirm_popup_data(ct_confirm_popup_data* p_popup_data)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == p_popup_data, false, "pointer to popup data is null");
+ p_retvm_if(NULL == p_popup_data->parent, false, "parent is null");
+
+ Evas_Object *p_popup = elm_popup_add(p_popup_data->parent);
+ p_retvm_if(NULL == p_popup, NULL, "p_popup is null");
+ elm_object_part_text_set(p_popup,TITLE_TEXT, p_popup_data->popup_label);
+ evas_object_size_hint_weight_set(p_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ Evas_Object *p_ok_button = elm_button_add(p_popup);
+ p_retvm_if(NULL == p_ok_button, NULL, "p_cancel_button is null");
+ elm_object_text_set(p_ok_button, p_popup_data->button1_label);
+ elm_object_part_content_set(p_popup, BUTTON1, p_ok_button);
+ elm_object_style_set(p_ok_button, "popup_button/default");
+ evas_object_smart_callback_add(p_ok_button, CLICKED, p_popup_data->button1_cb, p_popup_data->button1_data);
+
+ Evas_Object *p_cancel_button = elm_button_add(p_popup);
+ p_retvm_if(NULL == p_cancel_button, NULL, "p_cancel_button is null");
+ elm_object_text_set(p_cancel_button, p_popup_data->button2_label);
+ elm_object_part_content_set(p_popup, BUTTON2, p_cancel_button);
+ elm_object_style_set(p_cancel_button, "popup_button/default");
+ evas_object_smart_callback_add(p_cancel_button, CLICKED, p_popup_data->button2_cb, p_popup_data->button2_data);
+
+ bool result = (p_popup && p_ok_button && p_cancel_button);
+ if(result)
+ {
+ p_popup_data->popup = p_popup;
+ p_popup_data->button1 = p_ok_button;
+ p_popup_data->button2 = p_cancel_button;
+ }
+ return result;
+}
+
+int phone_get_contact_id_by_person_id(int personId)
+{
+ PH_TRACE;
+ int retId(0);
+ contacts_list_h tempList= NULL;
+ if(get_records_list(_contacts_contact._uri, _contacts_contact.person_id, personId, &tempList))
+ {
+ contacts_record_h tempRecord = NULL;
+ if(contacts_list_get_current_record_p(tempList, &tempRecord)
+ == CONTACTS_ERROR_NONE)
+ {
+ if(contacts_record_get_int(tempRecord, _contacts_contact.id, &retId)
+ != CONTACTS_ERROR_NONE)
+ {
+ ERR("error getting contact ID");
+ }
+ }
+ }
+ contacts_list_destroy(tempList, true);
+ return retId;
+}
+
+const char * phone_get_group_name(contacts_record_h group_record)
+{
+ char *system_id = NULL;
+ int err = contacts_record_get_str_p(group_record, _contacts_group.extra_data, &system_id);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_str_p() is Failed(%d)");
+
+ if (system_id)
+ {
+ const char *name = NULL;
+ if (strcmp(system_id, "friends") == 0)
+ name = T_(CT_GET_TEXT_BASIC, CTTEXT_FRIENDS);
+ else if (strcmp(system_id, "family") == 0)
+ name = T_(CT_GET_TEXT_BASIC, CTTEXT_FAMILY);
+ else if (strcmp(system_id, "coworkers") == 0)
+ name = T_(CT_GET_TEXT_BASIC, CTTEXT_CO_WORKERS);
+ else if (strcmp(system_id, "emergency") == 0)
+ name = T_(CT_GET_TEXT_BASIC, CTTEXT_EMERGENCY_CONTACTS);
+ else
+ name = T_(CT_GET_TEXT_ERR, CTTEXT_NONAME);
+
+ return name;
+ }
+ else
+ {
+ char *name = NULL;
+ err = contacts_record_get_str_p(group_record, _contacts_group.name, &name);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL, "contacts_record_get_str_p() is Failed(%d)");
+ return name;
+ }
+}
+
+bool has_emergency_contacts()
+{
+ PH_TRACE;
+ int ret = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ contacts_list_h group_list = NULL;
+
+ phone_cts_get_list(_contacts_group._uri, _contacts_group.address_book_id, 0, &group_list);
+ CONTACTS_LIST_FOREACH(group_list, record)
+ {
+ char* group_name = NULL;
+ ret = contacts_record_get_str_p(record, _contacts_group.extra_data, &group_name);
+ if (group_name != NULL)
+ {
+ if (CONTACTS_ERROR_NONE == ret)
+ {
+ if (strcmp(group_name, EMERGENCY) == 0)
+ {
+ phone_cts_free_list(group_list);
+ return true;
+ }
+ }
+ }
+ }
+ phone_cts_free_list(group_list);
+ return false;
+}
+
+void create_emergency_contacts_group()
+{
+ PH_TRACE;
+ contacts_record_h group_record = NULL;
+ int id_grp = 0;
+
+ int ret = contacts_record_create(_contacts_group._uri, &group_record);
+ if (CONTACTS_ERROR_NONE == ret)
+ {
+ ret = contacts_record_set_str(group_record, _contacts_group.name, EMERGENCY);
+ ret = contacts_record_set_str(group_record, _contacts_group.extra_data, EMERGENCY);
+ if (CONTACTS_ERROR_NONE == ret)
+ {
+ ret = contacts_db_insert_record(group_record, &id_grp);
+ }
+ ret = contacts_record_destroy(group_record, true);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_record_destroy() Failed(%d)");
+ }
+}
+
+static void phone_popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if(data)
+ {
+ evas_object_hide((Evas_Object *) data);
+ }
+}
+
+Evas_Object * phone_popup_add_button(Evas_Object *popup, const char *text, Evas_Smart_Cb func, void *data)
+{
+ static const char *button_parts[] =
+ {
+ "button1",
+ "button2",
+ "button3",
+ NULL
+ };
+ const char **part = button_parts;
+ Evas_Object *button = NULL;
+
+ while(*part && elm_object_part_content_get(popup, *part))
+ {
+ ++part;
+ }
+
+ p_retvm_if(NULL == part, NULL, "No empty button parts left");
+
+ button = elm_button_add(popup);
+ p_retvm_if(NULL == button, NULL, "Failed to create button");
+ elm_object_style_set(button, "popup_button/default");
+ elm_object_text_set(button, text);
+ elm_object_part_content_set(popup, *part, button);
+ evas_object_smart_callback_add(button, "clicked", phone_popup_hide_cb, popup);
+ evas_object_smart_callback_add(button, "clicked", func, data);
+
+ return button;
+}
+
+char* phone_get_contact_name(int id)
+{
+ p_retvm_if(0 >= id, NULL, "incorrect id");
+ char* contact_name = NULL;
+ contacts_record_h contact = NULL;
+
+ if (contacts_db_get_record(_contacts_contact._uri, id, &contact) == CONTACTS_ERROR_NONE)
+ {
+ if(contacts_record_get_str(contact, _contacts_contact.display_name, &contact_name) != CONTACTS_ERROR_NONE)
+ {
+ ERR("getting contact name failed");
+ free(contact_name);
+ contact_name = NULL;
+ }
+ contacts_record_destroy(contact, true);
+ }
+ PH_DBG("contact_name: %s", contact_name);
+ return contact_name;
+}
+
+Elm_Genlist_Item_Class* phone_create_item_class(const char* style, const char* decorate_style, const char* decorate_all_style,
+ Elm_Gen_Item_Text_Get_Cb get_text, Elm_Gen_Item_Content_Get_Cb get_content,
+ Elm_Gen_Item_State_Get_Cb get_state, Elm_Gen_Item_Del_Cb del_func)
+{
+ PH_TRACE;
+ Elm_Genlist_Item_Class *item_class = elm_genlist_item_class_new();
+ p_retvm_if(NULL == item_class, NULL, "item_class is null");
+
+ item_class->item_style = style;
+ item_class->decorate_item_style = decorate_style;
+ item_class->decorate_all_item_style = decorate_all_style;
+ item_class->func.text_get = get_text;
+ item_class->func.content_get = get_content;
+ item_class->func.state_get = get_state;
+ item_class->func.del = del_func;
+ return item_class;
+}
+
+static void phone_hide_block_contact_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_contact_block_data* p_block_contact_data = (ct_contact_block_data*)data;
+ p_retm_if(NULL == p_block_contact_data->p_popup_data, "popup data is null");
+ p_retm_if(NULL == p_block_contact_data->p_popup_data->popup, "popup is null");
+ evas_object_hide(p_block_contact_data->p_popup_data->popup);
+}
+
+
+void phone_destroy_block_contact_popup_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_contact_block_data* p_block_contact_data = (ct_contact_block_data*)data;
+
+ if(p_block_contact_data->p_popup_data)
+ {
+ phone_destroy_confirm_popup_data(p_block_contact_data->p_popup_data);
+ p_block_contact_data->p_popup_data = NULL;
+ }
+ if(p_block_contact_data->msg_handle)
+ {
+ msg_close_msg_handle(&p_block_contact_data->msg_handle);
+ p_block_contact_data->msg_handle = NULL;
+ }
+ p_block_contact_data->contact_id = 0;
+ free(p_block_contact_data);
+}
+
+bool phone_check_number_in_spam_for_messages(msg_handle_t msg_handle, const char *number)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == msg_handle, false, "msgHandle is NULL");
+ p_retvm_if(NULL == number, false, "address is NULL");
+ bool result(false);
+ msg_struct_list_s filter_list = {0,};
+
+ if(msg_get_filter_list(msg_handle, &filter_list) == MSG_SUCCESS)
+ {
+ if (filter_list.nCount == 0)
+ {
+ result = false;
+ }
+ else
+ {
+ int i = 0;
+ int filter_type = -1;
+ char filter_address[DEF_BUF_LEN] = {0,};
+ for (i = 0; i < filter_list.nCount; ++i)
+ {
+ msg_get_int_value(filter_list.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+ if (filter_type == MSG_FILTER_BY_ADDRESS_SAME)
+ {
+ msg_get_str_value(filter_list.msg_struct_info[i], MSG_FILTER_VALUE_STR, filter_address, sizeof(filter_address));
+ if (strncmp(filter_address, number, sizeof(filter_address)) == 0)
+ {
+ result = true;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ msg_release_list_struct(&filter_list);
+ return result;
+}
+
+bool phone_add_number_to_spam_for_messages(msg_handle_t msg_handle, const char* number)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == msg_handle, false, "msgHandle is null");
+ p_retvm_if(NULL == number, false, "number is null");
+ bool result(false);
+ msg_error_t err = MSG_SUCCESS;
+ msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
+
+ msg_set_int_value(filter, MSG_FILTER_TYPE_INT, MSG_FILTER_BY_ADDRESS_SAME);
+ msg_set_str_value(filter, MSG_FILTER_VALUE_STR, (char *)number, DEF_MAX_FILTER_LEN);
+ msg_set_filter_operation(msg_handle, true);
+
+ err = msg_add_filter(msg_handle, filter);
+ if (err != MSG_SUCCESS)
+ {
+ ERR("failed to add filter");
+ msg_release_struct(&filter);
+ }
+ else
+ {
+ result = true;
+ }
+
+ if (filter)
+ {
+ msg_release_struct(&filter);
+ }
+ return result;
+}
+
+bool phone_delete_number_from_spam_for_messages(msg_handle_t msg_handle, const char* number)
+{
+ PH_TRACE;
+ bool result(false);
+ p_retvm_if(NULL == msg_handle, false, "msgHandle is NULL");
+ p_retvm_if(NULL == number, false, "number is NULL");
+
+ msg_struct_list_s filter_list = {0,};
+
+ if(msg_get_filter_list(msg_handle, &filter_list) == MSG_SUCCESS)
+ {
+
+ if (filter_list.nCount > 0)
+ {
+ int i = 0;
+ int filter_type = -1;
+ int filter_id = -1;
+ char filter_address[DEF_BUF_LEN] = {0,};
+
+ for (i = 0; i < filter_list.nCount; ++i)
+ {
+ msg_get_int_value(filter_list.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+ if (filter_type == MSG_FILTER_BY_ADDRESS_SAME)
+ {
+ msg_get_str_value(filter_list.msg_struct_info[i], MSG_FILTER_VALUE_STR, filter_address, sizeof(filter_address));
+ if (strncmp(filter_address, number, sizeof(filter_address)) == 0)
+ {
+ msg_get_int_value(filter_list.msg_struct_info[i], MSG_FILTER_ID_INT, &filter_id);
+ break;
+ }
+ }
+ }
+ if (filter_id != -1)
+ {
+ msg_delete_filter(msg_handle, filter_id);
+ result = true;
+ }
+ }
+ }
+ msg_release_list_struct(&filter_list);
+ return result;
+}
+
+bool phone_handle_contact_for_spam_messages(ct_contact_block_data* p_block_contact_data, number_handler_for_spam_messages handler_function)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == handler_function, false, "func handler is null");
+ bool result(false);
+ contacts_list_h number_list = NULL;
+ if(get_records_list(_contacts_number._uri, _contacts_number.contact_id,
+ p_block_contact_data->contact_id, &number_list))
+ {
+ contacts_record_h record = NULL;
+ CONTACTS_LIST_FOREACH(number_list, record)
+ {
+ char* number = NULL;
+ if(contacts_record_get_str_p(record, _contacts_number.number, &number) == CONTACTS_ERROR_NONE)
+ {
+ if(handler_function(p_block_contact_data->msg_handle, number))
+ {
+ result = true;
+ }
+ else
+ {
+ ERR("number is not blocked/unblocked");
+ break;
+ }
+ }
+ }
+ }
+ contacts_list_destroy(number_list, true);
+ return result;
+}
+
+static void phone_handle_blocking_contact_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_contact_block_data* p_block_contact_data = (ct_contact_block_data*)data;
+
+ if(p_block_contact_data->block_calls != phone_is_blocked_contact_for_calls(p_block_contact_data->contact_id))
+ {
+ if(!phone_toggle_blocked_contact_for_calls(p_block_contact_data->contact_id))
+ {
+ ERR("Contact is not blocked/unblocked");
+ }
+ }
+
+ if(p_block_contact_data->block_messages)
+ {
+ phone_handle_contact_for_spam_messages(p_block_contact_data, phone_add_number_to_spam_for_messages);
+ }
+ else
+ {
+ phone_handle_contact_for_spam_messages(p_block_contact_data, phone_delete_number_from_spam_for_messages);
+ }
+ evas_object_hide(p_block_contact_data->p_popup_data->popup);
+}
+
+static ct_confirm_popup_data* phone_create_block_confirm_popup(Evas_Object* parent, int contact_id, void* data)
+{
+ PH_TRACE;
+ ct_confirm_popup_data* inner_popup_as_data = NULL;
+ inner_popup_as_data = (ct_confirm_popup_data*)calloc(1, sizeof(ct_confirm_popup_data));
+ inner_popup_as_data->parent = parent;
+ inner_popup_as_data->popup = NULL;
+ inner_popup_as_data->button1 = NULL;
+ inner_popup_as_data->button2 = NULL;
+ inner_popup_as_data->popup_label = phone_get_contact_name(contact_id);
+ inner_popup_as_data->button1_label = strdup(S_(PH_SYS_SK_OK));
+ inner_popup_as_data->button2_label = strdup(S_(PH_SYS_SK_CANCEL));
+ inner_popup_as_data->button1_cb = phone_handle_blocking_contact_cb;
+ inner_popup_as_data->button2_cb = phone_hide_block_contact_popup_cb;
+ inner_popup_as_data->button1_data = data;
+ inner_popup_as_data->button2_data = data;
+ return inner_popup_as_data;
+}
+
+static char* phone_block_popup_genlist_item_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data, NULL, "data is null");
+ ct_contact_block_item_data* p_block_item_data = (ct_contact_block_item_data*)data;
+ return strdup(p_block_item_data->item_caption);
+}
+
+bool phone_check_contact_in_spam_for_messages(msg_handle_t msg_handle, int contact_id)
+{
+ PH_TRACE;
+ bool result(false);
+ contacts_list_h number_list = NULL;
+ if(get_records_list(_contacts_number._uri, _contacts_number.contact_id,
+ contact_id, &number_list))
+ {
+ contacts_record_h record = NULL;
+ CONTACTS_LIST_FOREACH(number_list, record)
+ {
+ char* number = NULL;
+ if(contacts_record_get_str_p(record, _contacts_number.number, &number) == CONTACTS_ERROR_NONE)
+ {
+ if(phone_check_number_in_spam_for_messages(msg_handle, number))
+ {
+ result = true;
+ break;
+ }
+ }
+ }
+ }
+ contacts_list_destroy(number_list, true);
+ return result;
+}
+
+static bool phone_contact_block_is_any_changes(ct_contact_block_data* p_block_contact_data)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == p_block_contact_data, false, "data is null");
+ return (p_block_contact_data->is_blocked_calls != p_block_contact_data->block_calls)
+ || (p_block_contact_data->is_blocked_messages != p_block_contact_data->block_messages);
+}
+
+static void phone_block_popup_check(Elm_Object_Item* item, ct_contact_block_data* p_block_contact_data, bool* p_bool_value)
+{
+ PH_TRACE;
+ p_retm_if(NULL == item, "item is null");
+ *p_bool_value = !(*p_bool_value);
+ elm_object_disabled_set(p_block_contact_data->p_popup_data->button1,
+ !phone_contact_block_is_any_changes(p_block_contact_data));
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ Evas_Object* check = elm_object_item_part_content_get(item, "elm.icon");
+ if(check)
+ {
+ elm_check_state_set(check, *p_bool_value);
+ }
+}
+
+static void phone_block_check_calls_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_contact_block_data* p_block_contact_data = (ct_contact_block_data*)data;
+ phone_block_popup_check((Elm_Object_Item*)event_info, p_block_contact_data, &p_block_contact_data->block_calls);
+}
+
+static void phone_block_check_messages_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_contact_block_data* p_block_contact_data = (ct_contact_block_data*)data;
+ phone_block_popup_check((Elm_Object_Item*)event_info, p_block_contact_data, &p_block_contact_data->block_messages);
+}
+
+static Evas_Object* phone_block_popup_genlist_item_content_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data, NULL, "data is null");
+ ct_contact_block_item_data* p_block_additional_data = (ct_contact_block_item_data*)data;
+ DBG("part: %s", part);
+ Evas_Object* check = elm_check_add(obj);
+ if(check)
+ {
+ evas_object_propagate_events_set(check, EINA_TRUE);
+ elm_check_state_set(check, *p_block_additional_data->is_checked);
+ }
+ return check;
+}
+
+void phone_block_popup_item_deleter(void *data, Evas_Object *obj)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_contact_block_item_data* p_block_item_data = (ct_contact_block_item_data*)data;
+ free(p_block_item_data);
+}
+
+Evas_Object* phone_create_block_contact_popup(Evas_Object* parent, int contact_id)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == parent, NULL, "parent is null");
+ p_retvm_if(contact_id < 1, NULL, "bad contact id");
+ Evas_Object* result = NULL;
+ ct_contact_block_data* p_block_contact_data = (ct_contact_block_data*)calloc(1, sizeof(ct_contact_block_data));
+ p_block_contact_data->contact_id = contact_id;
+ p_block_contact_data->p_popup_data = phone_create_block_confirm_popup(parent, contact_id, p_block_contact_data);
+ if(p_block_contact_data->p_popup_data)
+ {
+ if(msg_open_msg_handle(&p_block_contact_data->msg_handle) == MSG_SUCCESS)
+ {
+ if(phone_fill_confirm_popup_data(p_block_contact_data->p_popup_data))
+ {
+ elm_object_style_set(p_block_contact_data->p_popup_data->popup, "content_no_vhpad");
+ elm_object_disabled_set(p_block_contact_data->p_popup_data->button1, EINA_TRUE);
+ Elm_Genlist_Item_Class* genlist_item_class = phone_create_item_class("1text.1icon.3/popup",
+ NULL, NULL, phone_block_popup_genlist_item_text_get, phone_block_popup_genlist_item_content_get, NULL, phone_block_popup_item_deleter);
+ p_block_contact_data->genlist = elm_genlist_add(p_block_contact_data->p_popup_data->popup);
+ if(p_block_contact_data->genlist)
+ {
+ elm_object_content_set(p_block_contact_data->p_popup_data->popup, p_block_contact_data->genlist);
+ evas_object_size_hint_weight_set(p_block_contact_data->genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(p_block_contact_data->genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ ct_contact_block_item_data* p_call_block_data =
+ (ct_contact_block_item_data*)malloc(sizeof(ct_contact_block_item_data));
+ p_call_block_data->item_caption = T_(PH_GET_TEXT_BASIC, PHTEXT_CALLS);
+ p_call_block_data->is_checked = &p_block_contact_data->block_calls;
+ elm_genlist_item_append(p_block_contact_data->genlist, genlist_item_class,
+ p_call_block_data, NULL, ELM_GENLIST_ITEM_NONE,
+ phone_block_check_calls_changed_cb, p_block_contact_data);
+
+ ct_contact_block_item_data* p_message_block_data =
+ (ct_contact_block_item_data*)malloc(sizeof(ct_contact_block_item_data));
+ p_message_block_data->item_caption = T_(PH_GET_TEXT_BASIC, PHTEXT_MESSAGES);
+ p_message_block_data->is_checked = &p_block_contact_data->block_messages;
+ elm_genlist_item_append(p_block_contact_data->genlist, genlist_item_class,
+ p_message_block_data, NULL, ELM_GENLIST_ITEM_NONE,
+ phone_block_check_messages_changed_cb, p_block_contact_data);
+
+ evas_object_show(p_block_contact_data->p_popup_data->popup);
+ evas_object_show(p_block_contact_data->genlist);
+
+ p_block_contact_data->is_blocked_calls =
+ phone_is_blocked_contact_for_calls(p_block_contact_data->contact_id);
+ p_block_contact_data->is_blocked_messages =
+ phone_check_contact_in_spam_for_messages(p_block_contact_data->msg_handle,
+ p_block_contact_data->contact_id);
+ p_block_contact_data->block_calls = p_block_contact_data->is_blocked_calls;
+ p_block_contact_data->block_messages = p_block_contact_data->is_blocked_messages;
+
+ evas_object_event_callback_add(p_block_contact_data->p_popup_data->popup, EVAS_CALLBACK_DEL,
+ phone_destroy_block_contact_popup_cb, p_block_contact_data);
+
+ result = p_block_contact_data->p_popup_data->popup;
+ }
+ elm_genlist_item_class_free(genlist_item_class);
+ }
+ }
+ }
+ return result;
+}
diff --git a/lib/common/ph-detail-log.cpp b/lib/common/ph-detail-log.cpp
new file mode 100755
index 0000000..b7a1f41
--- /dev/null
+++ b/lib/common/ph-detail-log.cpp
@@ -0,0 +1,530 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "phone.h"
+#include <unicode/udat.h>
+#include <unicode/udatpg.h>
+#include <unicode/ucal.h>
+#include <unicode/ustring.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <runtime_info.h>
+#include <string>
+
+#include "phone-common.h"
+
+enum
+{
+ LOG_FORMAT_TIME_12 = 0,
+ LOG_FORMAT_TIME_24,
+ LOG_FORMAT_DATE,
+ LOG_FORMAT_MAX,
+};
+
+static const char *date_time_format[] = { "hm", "Hm", "yMMMdd", "yMMMddhm",
+ "yMMMddHm", };
+
+static std::string m_img_logtype_tbl[LOG_TYPE_MAX] = {
+ IMGDIR"/C01-4_list_icon_call.png", IMGDIR"/C01-4_list_icon_vt-call.png",
+ IMGDIR"/C01-4_list_icon_sms.png", IMGDIR"/C01-4_list_icon_mms.png" };
+
+static std::string m_img_logaction_tbl[LOG_ACTION_MAX] = {
+ IMGDIR"/C01-4_icon_dialed.png", IMGDIR"/C01-4_icon_missed-call.png",
+ IMGDIR"/C01-4_icon_received.png", IMGDIR"/C01-4_icon_rejected.png",
+ IMGDIR"/C01-4_icon_Blocked(Auto-rejected).png" };
+
+static bool is_24hour_enabled = false;
+
+int phone_detail_log_is_call_ing_type(int type)
+{
+ PH_TRACE;
+ switch (type)
+ {
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING:
+ case CONTACTS_PLOG_TYPE_VOICE_OUTGOING:
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING:
+ case CONTACTS_PLOG_TYPE_VIDEO_OUTGOING:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+static int detail_log_is_voice_call_type(int type)
+{
+ PH_TRACE;
+ switch (type)
+ {
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING:
+ case CONTACTS_PLOG_TYPE_VOICE_OUTGOING:
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN:
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_SEEN:
+ case CONTACTS_PLOG_TYPE_VOICE_REJECT:
+ case CONTACTS_PLOG_TYPE_VOICE_BLOCKED:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+int phone_detail_log_is_mms_type(int type)
+{
+ PH_TRACE;
+ if (type == CONTACTS_PLOG_TYPE_MMS_INCOMMING
+ || type == CONTACTS_PLOG_TYPE_MMS_OUTGOING
+ || type == CONTACTS_PLOG_TYPE_MMS_BLOCKED)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+int phone_detail_log_is_sms_type(int type)
+{
+ PH_TRACE;
+ if (type == CONTACTS_PLOG_TYPE_SMS_INCOMMING
+ || type == CONTACTS_PLOG_TYPE_SMS_OUTGOING
+ || type == CONTACTS_PLOG_TYPE_SMS_BLOCKED)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+int phone_detail_log_is_email_type(int type)
+{
+ PH_TRACE;
+ if (type == CONTACTS_PLOG_TYPE_EMAIL_RECEIVED
+ || type == CONTACTS_PLOG_TYPE_EMAIL_SENT)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static int detail_log_is_video_call_type(int type)
+{
+ PH_TRACE;
+ switch (type)
+ {
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING:
+ case CONTACTS_PLOG_TYPE_VIDEO_OUTGOING:
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN:
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_SEEN:
+ case CONTACTS_PLOG_TYPE_VIDEO_REJECT:
+ case CONTACTS_PLOG_TYPE_VIDEO_BLOCKED:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+static int phone_detail_log_is_call_dial_type(int type)
+{
+ PH_TRACE;
+ if (type == CONTACTS_PLOG_TYPE_VOICE_OUTGOING
+ || type == CONTACTS_PLOG_TYPE_VIDEO_OUTGOING)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static int detail_log_is_msg_out_type(int type)
+{
+ PH_TRACE;
+ if (type == CONTACTS_PLOG_TYPE_MMS_OUTGOING
+ || type == CONTACTS_PLOG_TYPE_SMS_OUTGOING
+ || type == CONTACTS_PLOG_TYPE_EMAIL_SENT)
+ return TRUE;
+ else
+ return FALSE;
+
+}
+
+static int detail_log_is_call_receive_type(int type)
+{
+ PH_TRACE;
+ if (type == CONTACTS_PLOG_TYPE_VOICE_INCOMMING
+ || type == CONTACTS_PLOG_TYPE_VIDEO_INCOMMING)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static int detail_log_is_msg_income_type(int type)
+{
+ PH_TRACE;
+ if (type == CONTACTS_PLOG_TYPE_MMS_INCOMMING
+ || type == CONTACTS_PLOG_TYPE_SMS_INCOMMING
+ || type == CONTACTS_PLOG_TYPE_EMAIL_RECEIVED)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static int detail_log_is_call_miss_type(int type)
+{
+ PH_TRACE;
+ switch (type)
+ {
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN:
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_SEEN:
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN:
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_SEEN:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+static int detail_log_is_call_rejected_type(int type)
+{
+ PH_TRACE;
+ if (type == CONTACTS_PLOG_TYPE_VOICE_REJECT
+ || type == CONTACTS_PLOG_TYPE_VIDEO_REJECT)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static int detail_log_is_blocked_type(int type)
+{
+ PH_TRACE;
+ switch (type)
+ {
+ case CONTACTS_PLOG_TYPE_VOICE_BLOCKED:
+ case CONTACTS_PLOG_TYPE_VIDEO_BLOCKED:
+ case CONTACTS_PLOG_TYPE_SMS_BLOCKED:
+ case CONTACTS_PLOG_TYPE_MMS_BLOCKED:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+char* phone_detail_log_get_icon_type(int log_type)
+{
+ PH_TRACE;
+ Log_Type type = (Log_Type) -1;
+ char buf[PATH_MAX] = { 0 };
+
+ if (TRUE == detail_log_is_voice_call_type(log_type))
+ type = LOG_TYPE_CALL;
+ else if (TRUE == detail_log_is_video_call_type(log_type))
+ type = LOG_TYPE_VIDEO_CALL;
+ else if (TRUE == phone_detail_log_is_sms_type(log_type))
+ type = LOG_TYPE_SMS_MESSAGE;
+ else if (TRUE == phone_detail_log_is_mms_type(log_type))
+ type = LOG_TYPE_MMS_MESSAGE;
+ else if (TRUE == phone_detail_log_is_email_type(log_type))
+ type = LOG_TYPE_MMS_MESSAGE;
+ else
+ {
+ PH_DBG("error invalid type");
+ return NULL;
+ }
+ snprintf(buf, sizeof(buf), "%s", m_img_logtype_tbl[type].c_str());
+ return strdup(buf);
+}
+
+char* phone_detail_log_get_duration_from_number(int number)
+{
+ PH_TRACE;
+ int sec, min, hour, day;
+ struct tm tmp = { 0 };
+ char buf[PATH_MAX] = { 0 };
+ char buf_t[PATH_MAX] = { 0 };
+
+ sec = number;
+ day = sec / (60 * 60 * 24);
+ sec %= (60 * 60 * 24);
+ hour = sec / (60 * 60);
+ sec %= (60 * 60);
+ min = sec / (60);
+ sec %= (60);
+ tmp.tm_mday = day;
+ tmp.tm_hour = hour;
+ tmp.tm_min = min;
+ tmp.tm_sec = sec;
+ strftime(buf_t, sizeof(buf_t), "%H:%M:%S", &tmp);
+ snprintf(buf, sizeof(buf), "%s", buf_t);
+
+ return strdup(buf_t);
+}
+
+void phone_detail_log_init_time_format(void)
+{
+ PH_TRACE;
+ static int already_init = FALSE;
+
+ if (!already_init)
+ {
+ UErrorCode status = U_ZERO_ERROR;
+
+ uloc_setDefault(getenv("LC_TIME"), &status);
+ PH_DBG("phone_detail_log_init_time_format : %s", getenv("LC_TIME"));
+ already_init = TRUE;
+ }
+}
+
+void phone_detail_log_delete_date_format(UDateFormat **formatter)
+{
+ PH_TRACE;
+ int i;
+ for (i = LOG_FORMAT_TIME_12; i < LOG_FORMAT_MAX; i++)
+ {
+ if (formatter[i])
+ {
+ udat_close(formatter[i]);
+ formatter[i] = NULL;
+ }
+ }
+}
+
+static void _ph_set_default_timezone_id()
+{
+ PH_TRACE;
+ UErrorCode error = U_ZERO_ERROR;
+ UChar utimezone_id[PH_TEXT_SHORT_LEN] = { 0 };
+ char timezone_buffer[PH_TEXT_SHORT_LEN] = { 0 };
+ char timezone_id[PH_TEXT_SHORT_LEN] = { 0 };
+
+ int timezone_str_size;
+
+ strncpy(timezone_id, vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID),
+ sizeof(timezone_id));
+ timezone_str_size = readlink("/opt/etc/localtime", timezone_buffer,
+ sizeof(timezone_buffer));
+
+ if (timezone_str_size > 0)
+ {
+ char *ptr, *sp, *zone = NULL, *city = NULL;
+ ptr = strtok_r(timezone_buffer, "/", &sp);
+
+ while ((ptr = strtok_r(NULL, "/", &sp)))
+ {
+ zone = city;
+ city = ptr;
+ }
+
+ if (zone != NULL && city != NULL)
+ {
+ if (strcmp("zoneinfo", zone) == 0)
+ sprintf(timezone_id, "%s", city);
+ else
+ sprintf(timezone_id, "%s/%s", zone, city);
+ }
+ }
+
+ else
+ {
+ PH_DBG("%s", "readlink fail");
+ }
+
+ if (*timezone_id)
+ {
+ u_uastrncpy(utimezone_id, timezone_id, sizeof(timezone_buffer) / 2);
+ ucal_setDefaultTimeZone(utimezone_id, &error);
+ }
+ else
+ {
+ p_retm_if(NULL == timezone_id, "get timezone_id is failed(%d)", error);
+ }
+}
+
+void phone_detail_log_generate_date_format(UDateFormat **formatter)
+{
+ PH_TRACE;
+ UDateTimePatternGenerator *generator;
+ UErrorCode error = U_ZERO_ERROR;
+
+ int i;
+ int ret;
+ const char *locale = NULL;
+
+ _ph_set_default_timezone_id();
+
+ ret = runtime_info_get_value_bool(
+ RUNTIME_INFO_KEY_24HOUR_CLOCK_FORMAT_ENABLED, &is_24hour_enabled);
+ if (RUNTIME_INFO_ERROR_NONE != ret || false == is_24hour_enabled)
+ is_24hour_enabled = false;
+
+ locale = uloc_getDefault();
+ phone_detail_log_delete_date_format(formatter);
+
+ generator = udatpg_open(locale, &error);
+ p_retm_if(NULL == generator, "udatpg_open is failed(%d)", error);
+
+ for (i = LOG_FORMAT_TIME_12; i < LOG_FORMAT_MAX; i++)
+ {
+ UChar skeleton[64] = { '\0' };
+ UChar best_pattern[64] = { 0 };
+
+ u_uastrncpy(skeleton, date_time_format[i], strlen(date_time_format[i]));
+ udatpg_getBestPattern(generator, skeleton, u_strlen(skeleton),
+ best_pattern, (int32_t)(sizeof(best_pattern) / sizeof(UChar)),
+ &error);
+ formatter[i] = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1,
+ best_pattern, -1, &error);
+ }
+ udatpg_close(generator);
+}
+
+char* phone_detail_log_get_icon_path_with_action(int log_type)
+{
+ PH_TRACE;
+ char buf[PATH_MAX] = { 0 };
+ Log_Action action = (Log_Action) -1;
+
+ if (TRUE == phone_detail_log_is_call_dial_type(log_type)
+ || TRUE == detail_log_is_msg_out_type(log_type))
+ action = LOG_ACTION_DIALLED;
+ else if (TRUE == detail_log_is_call_miss_type(log_type))
+ action = LOG_ACTION_MISSED;
+ else if (TRUE == detail_log_is_call_receive_type(log_type)
+ || TRUE == detail_log_is_msg_income_type(log_type))
+ action = LOG_ACTION_RECEIVED;
+ else if (TRUE == detail_log_is_call_rejected_type(log_type))
+ action = LOG_ACTION_REJECTED;
+ else if (TRUE == detail_log_is_blocked_type(log_type))
+ action = LOG_ACTION_BLOCKED;
+ else
+ {
+ PH_DBG("error invalid type %d", log_type);
+ return NULL;
+ }
+ snprintf(buf, sizeof(buf), "%s", m_img_logaction_tbl[action].c_str());
+ return strdup(buf);
+}
+
+char *ph_log_util_get_formatted_date(UDateFormat **formatter, int log_time,
+ date_style style)
+{
+ PH_TRACE;
+ time_t stime;
+ UErrorCode status = U_ZERO_ERROR;
+ UDate date;
+ UChar formatted[64] = { 0 };
+ int32_t formatted_size;
+ int32_t formatted_len __attribute__ ((unused));
+ char formatted_str[PH_TEXT_SHORT_LEN] = { 0 };
+ int type = LOG_FORMAT_DATE;
+
+ stime = log_time;
+ date = (UDate) stime * 1000;
+
+ formatted_size = (int32_t)(sizeof(formatted) / sizeof(UChar));
+ if (PH_LOG_TIME_ONLY == style)
+ {
+ if (true == is_24hour_enabled)
+ type = LOG_FORMAT_TIME_24;
+ else
+ type = LOG_FORMAT_TIME_12;
+ }
+ else if (PH_LOG_DATE_ONLY == style)
+ type = LOG_FORMAT_DATE;
+ formatted_len = udat_format(formatter[type], date, formatted,
+ formatted_size, NULL, &status);
+ u_austrncpy(formatted_str, formatted, PH_TEXT_SHORT_LEN);
+ return strdup(formatted_str);
+}
+
+char *phone_detail_log_get_date(UDateFormat ** formatter, int log_time)
+{
+ PH_TRACE;
+ return ph_log_util_get_formatted_date(formatter, log_time, PH_LOG_DATE_ONLY);
+}
+
+char *phone_detail_log_get_time(UDateFormat ** formatter, int log_time)
+{
+ PH_TRACE;
+ return ph_log_util_get_formatted_date(formatter, log_time, PH_LOG_TIME_ONLY);;
+}
+
+int phone_detail_log_get_date_type(int log_time, int log_duration)
+{
+ PH_TRACE;
+ time_t stime;
+ struct timeval timeval;
+ struct tm *tmp;
+ int yday, cur_yday;
+
+ gettimeofday(&timeval, 0);
+ tmp = localtime(&timeval.tv_sec);
+ p_retvm_if(NULL == tmp, 2, "localtime is null");
+ cur_yday = tmp->tm_yday;
+
+ stime = log_time - log_duration;
+ tmp = localtime(&stime);
+ p_retvm_if(NULL == tmp, 2, "localtime is null");
+
+ yday = tmp->tm_yday;
+
+ if (yday == cur_yday)
+ return CT_GROUP_INDEX_TODAY;
+ else if (yday == cur_yday - 1)
+ return CT_GROUP_INDEX_YESTERDAY;
+ else
+ return yday;
+}
+
+int phone_detail_log_get_phonenumber_type(int number_type)
+{
+ PH_TRACE;
+ if (number_type & CONTACTS_NUMBER_TYPE_CUSTOM)
+ {
+ return (CTTEXT_TYPE_OTHER);
+ }
+ else if (number_type & CONTACTS_NUMBER_TYPE_CELL)
+ {
+ if (number_type & CONTACTS_NUMBER_TYPE_HOME)
+ return (CTTEXT_TYPE_HOME2);
+ else if (number_type & CONTACTS_NUMBER_TYPE_WORK)
+ return (CTTEXT_TYPE_WORK2);
+ else
+ return (CTTEXT_TYPE_MOBILE);
+ }
+ else if (number_type & CONTACTS_NUMBER_TYPE_VOICE)
+ {
+ if (number_type & CONTACTS_NUMBER_TYPE_HOME)
+ return (CTTEXT_TYPE_HOME);
+ else if (number_type & CONTACTS_NUMBER_TYPE_WORK)
+ return (CTTEXT_TYPE_WORK);
+ else
+ return (CTTEXT_TYPE_TELEPHONE);
+ }
+ else if (number_type & CONTACTS_NUMBER_TYPE_FAX)
+ {
+ if (number_type & CONTACTS_NUMBER_TYPE_HOME)
+ return (CTTEXT_TYPE_FAX_HOME);
+ else if (number_type & CONTACTS_NUMBER_TYPE_WORK)
+ return (CTTEXT_TYPE_FAX_WORK);
+ else
+ return (CTTEXT_TYPE_FAX);
+ }
+ else if (number_type & CONTACTS_NUMBER_TYPE_PAGER)
+ return (CTTEXT_TYPE_PAGER);
+ else if (number_type & CONTACTS_NUMBER_TYPE_CAR)
+ return (CTTEXT_TYPE_CAR);
+ else if (number_type & CONTACTS_NUMBER_TYPE_ASSISTANT)
+ return (CTTEXT_TYPE_ASSISTANT);
+ else
+ {
+ if (number_type == CONTACTS_NUMBER_TYPE_HOME)
+ return (CTTEXT_TYPE_HOME);
+ else if (number_type == CONTACTS_NUMBER_TYPE_WORK)
+ return (CTTEXT_TYPE_WORK);
+ else
+ return (CTTEXT_TYPE_OTHER);
+ }
+}
diff --git a/lib/common/ph-dialer-speed.cpp b/lib/common/ph-dialer-speed.cpp
new file mode 100755
index 0000000..c9fdf49
--- /dev/null
+++ b/lib/common/ph-dialer-speed.cpp
@@ -0,0 +1,187 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "msg.h"
+#include "phone.h"
+#include "phone-common.h"
+
+char *phone_get_voice_mail_number()
+{
+ PH_TRACE;
+ int ret;
+ msg_handle_t handle;
+ msg_struct_t voice_mail;
+ char strValue[MAX_PHONE_NUMBER_LEN + 1] = { 0, };
+
+ ret = msg_open_msg_handle(&handle);
+ p_retvm_if(MSG_SUCCESS != ret, NULL, "msg_open_msg_handle is Failed(%d)",
+ ret);
+
+ voice_mail = msg_create_struct(MSG_STRUCT_SETTING_VOICE_MSG_OPT);
+ ret = msg_get_voice_msg_opt(handle, voice_mail);
+
+ if (ret != MSG_SUCCESS)
+ {
+ ERR("msg_get_confi is faild(%d)", ret);
+ ret = msg_close_msg_handle(&handle);
+ p_warn_if(MSG_SUCCESS != ret, "msg_close_msg_handles is Failed(%d)",
+ ret);
+ return NULL;
+ }
+
+ ret = msg_get_str_value(voice_mail, MSG_VOICEMSG_ADDRESS_STR, strValue,
+ MAX_PHONE_NUMBER_LEN);
+ p_warn_if(MSG_SUCCESS != ret, "msg_get_str_value is Failed(%d)", ret);
+ p_warn_if(strlen(strValue) == 0, "voicemail number is none");
+ PH_DBG("Voicemail Number : %s", strValue);
+
+ ret = msg_close_msg_handle(&handle);
+ p_warn_if(MSG_SUCCESS != ret, "msg_close_msg_handles is Failed(%d)", ret);
+
+ return strdup(strValue);
+}
+
+Eina_List *phone_load_speeddial_data(int *ref_count)
+{
+ PH_TRACE;
+ Eina_List *list = NULL;
+ int count = 0;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_list_h spdial_list = NULL;
+ ph_speeddial_info *voice_mail;
+ unsigned int record_cnt = 0;
+
+ err = (contacts_error_e) contacts_db_get_all_records(
+ _contacts_speeddial._uri, 0, 0, &spdial_list);
+ contacts_list_get_count(spdial_list, &record_cnt);
+ PH_DBG("get speeddial records (%d)", record_cnt);
+ while (CONTACTS_ERROR_NONE == err && record_cnt > 0)
+ {
+ ph_speeddial_info *speed_info;
+ speed_info = (ph_speeddial_info *) calloc(1, sizeof(ph_speeddial_info));
+
+ err = phone_cts_get_str_from_list(spdial_list,
+ _contacts_speeddial.number, &speed_info->ph_number);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() for number Failed(%d)", err);
+ err = phone_cts_get_int_from_list(spdial_list,
+ _contacts_speeddial.person_id, &speed_info->contact_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_int_from_list() for person_id Failed(%d)", err);
+ err = phone_cts_get_int_from_list(spdial_list,
+ _contacts_speeddial.speeddial_number, &speed_info->dial_number);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_int_from_list() for speeddial_number Failed(%d)",
+ err);
+ err = phone_cts_get_int_from_list(spdial_list,
+ _contacts_speeddial.number_type, &speed_info->number_type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_int_from_list() for speeddial_number Failed(%d)",
+ err);
+ err = phone_cts_get_str_from_list(spdial_list,
+ _contacts_speeddial.number_label, &speed_info->numtype_label);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() for number_lable Failed(%d)",
+ err);
+ err = phone_cts_get_str_from_list(spdial_list,
+ _contacts_speeddial.display_name, &speed_info->display);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() for display_name Failed(%d)",
+ err);
+ err = phone_cts_get_str_from_list(spdial_list,
+ _contacts_speeddial.image_thumbnail_path,
+ &speed_info->img_path);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() for image_thumbnail_path Failed(%d)",
+ err);
+
+ list = eina_list_append(list, (void*) speed_info);
+ count++;
+
+ err = (contacts_error_e) contacts_list_next(spdial_list);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_next() Failed(%d)",
+ err);
+ }
+ err = (contacts_error_e) contacts_list_destroy(spdial_list, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_destroy() Failed(%d)",
+ err);
+
+ voice_mail = (ph_speeddial_info *) calloc(1, sizeof(ph_speeddial_info));
+ if (NULL == voice_mail)
+ {
+ ERR("calloc Failed");
+ *ref_count = count;
+ phone_free_speeddial_data(list);
+ return NULL;
+ }
+ voice_mail->ph_number = phone_get_voice_mail_number();
+ voice_mail->contact_id = 0;
+ voice_mail->dial_number = 1;
+ voice_mail->display = strdup(T_(PH_GET_TEXT_BASIC, PHTEXT_VOICE_MAIL));
+ voice_mail->img_path = strdup(IMG_VOICEMAIL_ICON);
+ list = eina_list_prepend(list, (void*) voice_mail);
+
+ *ref_count = count;
+ return list;
+}
+
+void phone_free_speeddial_data(Eina_List *list)
+{
+ PH_TRACE;
+ Eina_List *l;
+ void *info;
+
+ p_retm_if(NULL == list, "List is null");
+
+ EINA_LIST_FOREACH(list, l, info)
+ {
+ ph_speeddial_info *s_info = (ph_speeddial_info *) info;
+ if (NULL == s_info)
+ continue;
+ free(s_info->display);
+ free(s_info->img_path);
+ free(s_info->ph_number);
+ free(s_info);
+ }
+ eina_list_free(list);
+}
+
+int speed_set_speeddial(int spdial_num, int number_id)
+{
+ PH_TRACE;
+ contacts_record_h spd_record = NULL;
+ int ret_id = 0;
+ int err = CONTACTS_ERROR_NONE;
+
+ contacts_record_create(_contacts_speeddial._uri, &spd_record);
+
+ err = contacts_record_set_int(spd_record,
+ _contacts_speeddial.speeddial_number, spdial_num);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_set_int(spd_record, _contacts_speeddial.number_id,
+ number_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_db_insert_record(spd_record, &ret_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_insert_record() Failed(%d)", err);
+
+ contacts_record_destroy(spd_record, true);
+ return err;
+}
diff --git a/lib/common/ph-text.cpp b/lib/common/ph-text.cpp
new file mode 100755
index 0000000..4cdcca3
--- /dev/null
+++ b/lib/common/ph-text.cpp
@@ -0,0 +1,390 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "phone.h"
+#include "phone-text.h"
+
+static const char *basic_str[] = {
+ N_("IDS_KPD_TAB4_KEYPAD"),
+ N_("IDS_PB_ITAB4_FAVOURITES"), N_("IDS_PB_HEADER_SPEEDDIAL"),
+ N_("IDS_CST_BODY_VOICE_MAIL"), N_("IDS_CLOG_ITAB4_LOGS"),
+ N_("IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"),
+ N_("IDS_PB_POP_REQUEST_FAILED"), N_("IDS_PB_POP_REQUEST_SUCCESS"),
+ N_("IDS_CALL_POP_EMERGENCY_CALL"), N_("IDS_CLOG_BODY_NO_LOGS"),
+ N_("IDS_PB_BODY_NO_FAVOURITES"),
+ N_("IDS_CLOG_POP_MESSAGE_DELETED"),
+ N_("IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"),
+ N_("IDS_CLOG_POP_DELETING_LOGS_ING"),
+ N_("IDS_PB_POP_DELETING_FAVOURITES_ING"),
+ N_("IDS_PB_POP_INITIALISING_TRY_LATER_ING"),
+ N_("IDS_COM_POP_SOUND_OFF"), N_("IDS_COM_POP_SOUND_ON"),
+ N_("IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"),
+ N_("IDS_COM_BODY_BACK_TO_CALL"), N_("IDS_ST_BODY_INCOMMING_CALL"),
+ N_("IDS_ST_BODY_OUTGOING_CALL"), N_("IDS_CLOG_HEADER_MISSED_CALL"),
+ N_("IDS_CLOG_OPT_SENT_MESSAGE"),
+ N_("IDS_CLOG_OPT_RECEIVED_MESSAGE"),
+ N_("IDS_LOGS_BODY_REJECTED_CALL_ABB"),
+ N_("IDS_LOGS_BODY_BLOCKED_CALL_ABB"),
+ N_("IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"),
+ N_("IDS_KPD_POP_ADD_TO_CONTACTS"), N_("IDS_KPD_POP_SETTINGS"),
+ N_("IDS_CLOG_POP_CALL_DURATION"),
+ N_("IDS_CLOG_POP_BLOCK_CONTACT"),
+ N_("IDS_CLOG_POP_SEND_NUMBER"),
+ N_("IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"),
+ N_("IDS_PB_BODY_UNSAVED"),
+ N_("IDS_CST_POP_CONTACTS_TO_DISPLAY"),
+ N_("IDS_CST_POP_SETTINGS"),
+ N_("IDS_CST_POP_DELETE"),
+ N_("IDS_CST_POP_CONTACTS"),
+ N_("IDS_CST_BUTTON_DELETE"),
+ N_("IDS_CST_BUTTON_CANCEL"),
+ N_("IDS_CLOG_DURATION_RESET"),
+ N_("IDS_CLOG_DURATION_LAST"),
+ N_("IDS_CLOG_DURATION_DIALED"),
+ N_("IDS_CLOG_DURATION_RECEIVED"),
+ N_("IDS_CLOG_DURATION_ALL"),
+ N_("IDS_CLOG_POP_DELETE_N_LOGS"),
+ N_("IDS_CLOG_ENTRY_SEARCH"),
+ N_("IDS_REMOVE"),
+ N_("IDS_CREATE_CONTACT"),
+ N_("IDS_SPEED_CHANGE_ORDER"),
+ N_("IDS_CLOG_BUTTON_MESSAGE"),
+ N_("IDS_CLOG_BUTTON_EMAIL"),
+ N_("IDS_DEFAULT_NUMBER"),
+ N_("IDS_SEND_CONTACT_AS_TEXT"),
+ N_("IDS_CALLS"),
+ N_("IDS_MESSAGES"),
+ N_("IDS_PB_BODY_SEPARATE_CONTACTS"),
+ N_("IDS_PB_BODY_LINK_CONTACTS_WITH"),
+ N_("IDS_PB_BODY_SEPARATE_NAME_FROM"),
+ N_("IDS_PB_HEADER_SEND_EMAIL"),
+ N_("IDS_PB_HEADER_SEND_MESSAGE"),
+ N_("IDS_SEND_MESSAGE_EMAIL"),
+ N_("IDS_IMPORT_EXPORT"),
+ N_("IDS_ACCOUNTS")
+};
+
+static const char *base_op_str[] = {
+ N_("IDS_CLOG_HEADER_SELECT_LOGS"),
+ N_("IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"),
+ N_("IDS_CLOG_BUTTON2_UNBLOCK"),
+ N_("IDS_CST_OPT_CHANGE_CONTACT_ABB"),
+ N_("IDS_KPD_OPT_ADD_PD_SEC_PAUSE"), N_("IDS_KPD_OPT_ADD_WAIT"),
+ N_("IDS_CLOG_HEADER_MISSED"), N_("IDS_COM_OPT_EXIT")
+};
+
+static const char *number_type_str[] = {
+ N_("IDS_PB_BODY_CUSTOM_T_PHONEBOOK"),/*Custom*/
+ N_("IDS_PB_BODY_MOBILE"),/*Mobile*/
+ N_("IDS_PB_BODY_HOME"),/*Home*/
+ N_("IDS_PB_BODY_WORK"),/*Work*/
+ N_("IDS_PB_BODY_FAX_HHOME"),/*Fax(home)*/
+ N_("IDS_PB_BODY_FAX_HWORK"),/*Fax(work)*/
+ N_("IDS_PB_BODY_ASSISTANT_S_NUMBER"),/*Assistant*/
+ N_("IDS_PB_BODY_PAGER"),/*Pager*/
+ N_("IDS_PB_BODY_OTHER"),/*Other*/
+ N_("IDS_PB_BODY_TELEPHONE"),/*Telephone*/
+ N_("IDS_PB_BODY_FAX"),/*Fax*/
+ N_("IDS_PB_BODY_CAR_TELEPHONE"),/*Car*/
+ N_("IDS_PB_BODY_HOME_2"),/*Home2*/
+ N_("IDS_PB_BODY_WORK"),/*Work2*/ // TODO: Fixme
+ N_("IDS_PB_BODY_COMPANY_MAIN"),/*Company main*/
+ N_("IDS_PB_BODY_RADIO"), /*Radio*/
+};
+
+static const char *postal_type_str[] = {
+ N_("IDS_PB_BODY_OTHER"),/*Other*/
+ N_("IDS_PB_BODY_CUSTOM_T_PHONEBOOK"),/*Custom*/
+ N_("IDS_PB_BODY_HOME"),/*Home*/
+ N_("IDS_PB_BODY_WORK"), /*Work*/
+};
+
+static const char *cbasic_str[] = {
+ N_("IDS_PB_BODY_ALL_CONTACTS"),/*All Contacts*/
+ N_("IDS_PB_BODY_NOT_ASSIGNED"),/*Not Assigned*/
+ N_("IDS_PB_BODY_SERVICE_NUMBER"),/*Service Number*/
+ N_("IDS_PB_BODY_PHONE"),/*Phone*/
+ N_("IDS_PB_BODY_GROUPS"),/*Groups*/
+ N_("IDS_PB_BODY_DEFAULT"),/*Default*/
+ N_("IDS_PB_BODY_RINGTONE"),/*Ringtone*/
+ N_("IDS_PB_BODY_WEBSITE"),/*URL*/
+ N_("IDS_PB_BODY_INSTANT_MESSENGER"),/*Instant Messenger*/
+ N_("IDS_PB_BODY_EMAIL"),/*Email*/
+ N_("IDS_PB_BODY_NUMBER"),/*Number*/
+ N_("IDS_PB_BODY_NOTE"),/*Note*/
+ N_("IDS_PB_BODY_POSTAL_ADDRESS"),/*Postal Address*/
+ N_("IDS_PB_HEADER_DETAILS"),/*Details*/
+ N_("IDS_PB_BODY_COMPANY"),/*Company*/
+ N_("IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"),/* Order display name */
+ N_("IDS_PB_BODY_OWN_NUMBER"),/* Own number */
+ N_("IDS_PB_BODY_FIRST_NAME"), N_("IDS_PB_BODY_LAST_NAME"),
+ N_("IDS_PB_BODY_MIDDLE_NAME"), N_("IDS_PB_BODY_SUFFIX"),
+ N_("IDS_PB_BODY_NICKNAME"), N_("IDS_PB_BODY_EXPORT_CONTACTS"),
+ N_("IDS_PB_HEADER_SELECT_CONTACTS"), N_("IDS_PB_BODY_POSTAL_CODE"),
+ N_("IDS_PB_BODY_COUNTRY"), N_("IDS_PB_BODY_PROVINCE"),
+ N_("IDS_PB_BODY_CITY"), N_("IDS_PB_BODY_STREET"),
+ N_("IDS_EMAIL_BODY_SAVED_IN_PS"),
+ N_("IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"),
+ N_("IDS_PB_POP_COPIED"), N_("IDS_COM_BODY_EXPORTED"),
+ N_("IDS_PB_POP_DELETING_CONTACTS_ING"),
+ N_("IDS_PB_BODY_MOVING_ING"), N_("IDS_PB_BODY_COPYING_ING"),
+ N_("IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"),
+ N_("IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"),
+ N_("IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"),
+ N_("IDS_PB_BODY_VCARD"), N_("IDS_PB_BODY_READING_VCARD_ING"),
+ N_("IDS_COM_BODY_IMPORTED_ABB"), N_("IDS_COM_BODY_NA"),
+ N_("IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"),
+ N_("IDS_PB_BODY_LINKED_CONTACTS"),
+ N_("IDS_KA_BODY_ADD_ANOTHER_FIELD"), N_("IDS_PB_BODY_JOB_TITLE"),
+ N_("IDS_PB_BODY_DEPARTMENT"), N_("IDS_PB_OPT_GROUP_NAME"),
+ N_("IDS_PB_BODY_ADD_ACCOUNT"),
+ N_("IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"),
+ N_("IDS_PB_OPT_VIEW"),N_("IDS_PB_OPT_VIEW_BY"), N_("IDS_PB_BODY_PD_CONTACTS"),
+ N_("IDS_PB_OPT_RENAME"), N_("IDS_PB_OPT_RELATIONSHIP"),
+ N_("IDS_PB_BODY_NO_HISTORIES"), N_("IDS_PB_BODY_NO_ACTIVITIES"),
+ N_("IDS_PB_POP_ADDING_ING"), N_("IDS_PB_BODY_CUSTOM_T_PHONEBOOK"),
+ N_("IDS_PB_BODY_EDITADDITIONALINFO"), N_("IDS_PB_BODY_PO_BOX"),
+ N_("IDS_PB_BODY_STATE"), N_("IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"),
+ N_("IDS_PB_BODY_DEFAULT_GROUP_FAMILY"),
+ N_("IDS_PB_BODY_CO_WORKERS"), N_("IDS_PB_BODY_EMERGENCY_CONTACTS"),
+ N_("IDS_PB_BODY_DEFAULT_GROUP_WORK"),
+ N_("IDS_PB_BODY_VIBRATION_PATTERN"), N_("IDS_PB_OPT_SET_DEFAULT"),
+ N_("IDS_COM_OPT_EVENT"),
+ N_("IDS_PB_OPT_SHARE_CONTACT_INFORMATION"),
+ N_("IDS_PB_BODY_1_CONTACT"), N_("IDS_COM_OPT1_WI_FI_DIRECT"),
+ N_("IDS_PB_OPT_EXPORT_TO_SIM_CARD"), N_("IDS_PB_SK3_INFO"),
+ N_("IDS_PB_TAB4_HISTORY"), N_("IDS_PB_TAB4_ACTIVITIES"),
+ N_("IDS_CMT_HEADER_GROUP_MESSAGE_TMO"),
+ N_("IDS_CMT_HEADER_GROUP_EMAIL_TMO"),
+ N_("IDS_PB_BODY_ORGANIZATION"),
+ N_("IDS_PB_BODY_MY_PHONE"),
+ N_("IDS_PB_BODY_RINGTONES"),
+ N_("IDS_PB_BODY_MY_FILES")
+};
+
+static const char *err_str[] = {
+ N_("IDS_PB_BODY_NO_NAME"), N_("IDS_PB_POP_INVALID_EMAIL_ADDRESS"),
+ N_("IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"),
+ N_("IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"),
+ N_("IDS_PB_POP_ALREADY_ADDED"),
+ N_("IDS_PB_POP_GROUP_ALREADY_IN_USE"),
+ N_("IDS_PB_BODY_NO_GROUP"), N_("IDS_PB_POP_NO_NUMBER"),
+ N_("IDS_PB_POP_NO_EMAIL_ADDRESSES"),
+ N_("IDS_PB_BODY_NO_CONTACTS"),
+ N_("IDS_PB_POP_SIM_MEMORY_EMPTY"),
+ N_("IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"),
+ N_("IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"),
+ N_("IDS_PB_BODY_INVALID_NUMBER"),
+ N_("IDS_PB_POP_SIM_MEMORY_FULL"),
+ N_("IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"),
+ N_("IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"),
+ N_("IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS")
+};
+
+static const char *cbase_op_str[] = {
+ N_("IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"),/*Set Default Number*/
+ N_("IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"),/*Set Default Email*/
+ N_("IDS_PB_BODY_IMAGE"),/*Image*/
+ N_("IDS_PB_BODY_TAKE_A_PHOTO"),/*Take a photo*/
+ N_("IDS_PB_OPT_REMOVE_PHOTO_ABB"),/*Delete photo*/
+ N_("IDS_PB_SK1_ADD_TO_HOME_SCREEN"),/*Add to Home*/
+ N_("IDS_PB_BODY_SAVE_CONTACT_TO"),/*Save contact to*/
+ N_("IDS_PB_OPT_SAVE_TO"),/*Save to*/
+ N_("IDS_PB_BODY_IMPORT_SIM_CONTACTS"), /* Import SIM contacts */
+ N_("IDS_PB_BODY_FIRST_NAME_FIRST"),/* order display - First name first */
+ N_("IDS_PB_BODY_LAST_NAME_FIRST_ABB"),/* order display - Last name first */
+ N_("IDS_ST_SK_SHOW"),/* setting - mfc show */
+ N_("IDS_ST_SK_HIDE"),/* setting - mfc hide */
+ N_("IDS_PB_HEADER_SEND_NAMECARD"), N_("IDS_PB_HEADER_CREATE_GROUP"),
+ N_("IDS_PB_HEADER_SELECT_GROUP"),
+ N_("IDS_PB_BODY_EXPORT_CONTACTS"), N_("IDS_PB_SK_IMPORT_CONTACTS"),
+ N_("IDS_PB_BODY_LINK_CONTACT"), N_("IDS_PB_OPT_UNLINK"),
+ N_("IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"),
+ N_("IDS_PB_BODY_ADD_TO_FAVOURITES"),
+ N_("IDS_PB_HEADER_EDIT_GROUP"), N_("IDS_PB_SK_ADD_MEMBER"),
+ N_("IDS_PB_OPT_ADD_TO_GROUP"),
+ N_("IDS_PB_POP_ADDED_TO_FAVOURITES"),
+ N_("IDS_PB_POP_REMOVE_FROM_FAVOURITES"),
+ N_("IDS_PB_POP_REMOVED_FROM_FAVOURITES")
+};
+
+static const char *event_type_str[] = {
+ N_("IDS_PB_HEADER_UNKNOWN"),/*CTS_EVENT_TYPE_OTHER*/
+ N_("IDS_PB_BODY_CUSTOM_T_PHONEBOOK"),/*CTS_EVENT_TYPE_CUSTOM*/
+ N_("IDS_PB_BODY_BIRTHDAY"),/*CTS_EVENT_TYPE_BIRTH*/
+ N_("IDS_PB_BODY_ANNIVERSARY") /*CTS_EVENT_TYPE_ANNIVERSARY*/
+};
+
+static const char *im_type_str[] = {
+ N_("IDS_PB_BODY_OTHER"),/*CTS_IM_TYPE_OTHER*/
+ N_("IDS_PB_BODY_CUSTOM_T_PHONEBOOK"),/*CTS_IM_TYPE_CUSTOM*/
+ N_("IDS_PB_OPT_GOOGLE_TALK"),/*CTS_IM_TYPE_GOOGLE*/
+ N_("IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"),/*CTS_IM_TYPE_WLM*/
+ N_("IDS_PB_BODY_YAHOO"),/*CTS_IM_TYPE_YAHOO*/
+ N_("IDS_PB_BODY_FACEBOOK"),/*CTS_IM_TYPE_FACEBOOK*/
+ N_("IDS_PB_BODY_IMPSCOMMUNITY_ICQ"),/*CTS_IM_TYPE_ICQ*/
+ N_("IDS_PB_BODY_IMPSCOMMUNITY_AIM"),/*CTS_IM_TYPE_AIM*/
+ N_("IDS_PB_OPT_QQ"),/*CTS_IM_TYPE_QQ*/
+ N_("IDS_PB_OPT_JABBER"),/*CTS_IM_TYPE_JABBER*/
+ N_("IDS_PB_OPT_SKYPE"), /*CTS_IM_TYPE_SKYPE*/
+};
+
+const size_t DayCount = 7;
+static const char *day_str[] = {
+ N_("IDS_COM_BODY_SUNDAY"),
+ N_("IDS_COM_BODY_MONDAY"), N_("IDS_COM_BODY_TUESDAY"),
+ N_("IDS_COM_BODY_WEDNESDAY"), N_("IDS_COM_BODY_THURSDAY"),
+ N_("IDS_COM_BODY_FRIDAY"), N_("IDS_COM_BODY_SATURDAY")
+};
+
+static const char* relation_type_str[] = {
+ N_("IDS_PB_BODY_OTHER"),/*None*/
+ N_("IDS_PB_BUTTON_ASSISTANT"),/*Assistant*/
+ N_("IDS_COM_OPT_BROTHER_ABB"),/*Brother*/
+ N_("IDS_PB_BUTTON_CHILD"),/*Child*/
+ N_("IDS_PB_OPT_DOMESTIC_PARTNER_ABB"),/*Domestic partner*/
+ N_("IDS_COM_OPT_FATHER_ABB"),/*Father*/
+ N_("IDS_PB_BODY_CALLERIDFRIEND"),/*Friend*/
+ N_("IDS_JAVA_BODY_MANAGER"),/*Manager*/
+ N_("IDS_COM_OPT_MOTHER_ABB"),/*Mother*/
+ N_("IDS_COM_OPT_PARENT_ABB"),/*Parent*/
+ N_("IDS_PB_BODY_CALLERIDPARTNER"),/*Partner*/
+ N_("IDS_PB_OPT_REFERRED_BY"),/*Referred by*/
+ N_("IDS_COM_BODY_RELATIVE_ABB"),/*Relative*/
+ N_("IDS_COM_OPT_SISTER_ABB"),/*Sister*/
+ N_("IDS_PB_BODY_SPOUSE"),/*Spouse*/
+ N_("IDS_PB_BODY_CUSTOM_T_PHONEBOOK"), /*Custom*/
+};
+
+const size_t MonthCount = 13;
+static const char *month_str[] = {
+ "IDS_COM_BODY_NONE", "IDS_COM_BODY_JAN", "IDS_COM_BODY_FEB",
+ "IDS_COM_BODY_MAR", "IDS_COM_BODY_APR", "IDS_COM_BODY_MAY",
+ "IDS_COM_BODY_JUN", "IDS_COM_BODY_JUL", "IDS_COM_BODY_AUG",
+ "IDS_COM_BODY_SEP", "IDS_COM_BODY_OCT", "IDS_COM_BODY_NOV",
+ "IDS_COM_BODY_DEC"
+};
+
+static const char *vibration_str[] = {
+ N_("IDS_COM_VIBRATION_DEFAULT"),
+ N_("IDS_COM_VIBRATION_HEARTBEAT"),
+ N_("IDS_COM_VIBRATION_JINGLEBELL"),
+ N_("IDS_COM_VIBRATION_TICKTOCK"),
+ N_("IDS_COM_VIBRATION_WALTZ"),
+ N_("IDS_COM_VIBRATION_ZIGZIGZIG")
+};
+
+const char* phone_get_text(int op, int type)
+{
+ PH_TRACE;
+ const char **table;
+
+ switch (op)
+ {
+ case PH_GET_TEXT_BASIC:
+ table = basic_str;
+ break;
+ case PH_GET_TEXT_BASE_OP:
+ table = base_op_str;
+ break;
+ case CT_GET_TEXT_BASIC:
+ table = cbasic_str;
+ break;
+ case CT_GET_TEXT_ERR:
+ table = err_str;
+ break;
+ case CT_GET_TEXT_BASE_OP:
+ table = cbase_op_str;
+ break;
+ case CT_GET_TEXT_NUM_TYPE:
+ table = number_type_str;
+ break;
+ case CT_GET_TEXT_POSTAL_TYPE:
+ case CT_GET_TEXT_WEBSITE_TYPE:
+ case CT_GET_TEXT_EMAIL_TYPE:
+ table = postal_type_str;
+ break;
+ case CT_GET_TEXT_EVENT_TYPE:
+ table = event_type_str;
+ break;
+ case CT_GET_TEXT_IM_TYPE:
+ table = im_type_str;
+ break;
+ case CT_GET_TEXT_MONTH:
+ if (type >= 0)
+ {
+ if (MonthCount <= static_cast<unsigned int>(type))
+ return NULL;
+ else
+ return dgettext("sys_string", month_str[type]);
+ }
+ else
+ return NULL;
+ case CT_GET_TEXT_RELATIONSHIP_TYPE:
+ table = relation_type_str;
+ break;
+ case PH_GET_TEXT_DAY:
+ if (type >= 0)
+ {
+ if (DayCount <= static_cast<unsigned int>(type))
+ return NULL;
+ else
+ table = day_str;
+ }
+ else
+ return NULL;
+ break;
+ case CT_GET_TEXT_VIBRATION:
+ table = vibration_str;
+ break;
+ default:
+ return NULL;
+ }
+ return dgettext(PACKAGE, table[type]);
+}
+
+static const char *sys_str[] = {
+ "IDS_COM_SK_OK", "IDS_COM_SK_SAVE",
+ "IDS_COM_SK_DONE", "IDS_COM_SK_EDIT",
+ "IDS_COM_SK_DELETE", "IDS_COM_SK_CANCEL",
+ "IDS_COM_SK3_BLOCK", "IDS_COM_SK_NO",
+ "IDS_COM_SK_YES", "IDS_COM_SK_ADD", "IDS_COM_SK_MORE",
+ "IDS_COM_SK_NEXT", "IDS_COM_BODY_CALL", "IDS_COM_BODY_MESSAGE",
+ "IDS_COM_BODY_VIDEO_CALL", "IDS_COM_BODY_UNKNOWN",
+ "IDS_COM_BODY_SELECT_ALL", "IDS_COM_BODY_CONTACTS",
+ "IDS_COM_BODY_DETAILS", "IDS_COM_BODY_REMOVE", "IDS_COM_BODY_TODAY",
+ "IDS_COM_BODY_YESTERDAY", "IDS_COM_BODY_PREVIOUS",
+ "IDS_COM_BODY_NO_NAME", "IDS_COM_BODY_CREATE", "IDS_COM_BODY_MOVE",
+ "IDS_COM_BODY_COPY", "IDS_COM_BODY_PHONE", "IDS_COM_BODY_SEARCH",
+ "IDS_COM_BODY_BLUETOOTH", "IDS_COM_BODY_EMAIL",
+ "IDS_COM_BODY_ADDTOPHONEBOOK_SIM", "IDS_COM_BODY_MEMORY_CARD",
+ "IDS_COM_BODY_DETAILS_NAME", "IDS_COM_BODY_ALL", "IDS_COM_POP_FAIL",
+ "IDS_COM_POP_FAILED", "IDS_COM_POP_CLOSE", "IDS_COM_POP_REMOVED",
+ "IDS_COM_POP_DELETED", "IDS_COM_POP_INCORRECT_PASSWORD",
+ "IDS_COM_POP_ALREDY_EXISTS", "IDS_COM_POP_SELECTED",
+ "IDS_COM_POP_SUCCESS", "IDS_COM_POP_ERROR", "IDS_COM_POP_MOVED",
+ "IDS_COM_POP_ADDED", "IDS_COM_POP_NOT_ENOUGH_MEMORY",
+ "IDS_COM_POP_NOTHING_SELECTED", "IDS_COM_POP_FILE_NOT_FOUND",
+ "IDS_COM_POP_ADDRESS", "IDS_COM_OPT_ADD_TO_CONTACTS",
+ "IDS_COM_BODY_SELECTED_DATA_NOT_FOUND", "IDS_COM_POP_DELETE_Q",
+ "IDS_COM_SK_SET", "IDS_COM_BODY_RESET"
+};
+
+const char* phone_get_system_string(int type)
+{
+ PH_TRACE;
+ return dgettext("sys_string", sys_str[type]);
+}
diff --git a/lib/common/ui/genlist/genlist.cpp b/lib/common/ui/genlist/genlist.cpp
new file mode 100644
index 0000000..76eee85
--- /dev/null
+++ b/lib/common/ui/genlist/genlist.cpp
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "ui/genlist/genlist.h"
+#include "ui/genlist/item.h"
+
+void ui_genlist_on_realized(void *data, Evas_Object *obj, void *event)
+{
+ PH_TRACE;
+ if(event)
+ {
+ ui_genlist_item *item = (ui_genlist_item*) elm_object_item_data_get((Elm_Object_Item*) event);
+ if(item && item->on_realized)
+ {
+ item->on_realized(item);
+ }
+ }
+}
diff --git a/lib/common/ui/genlist/genlist.h b/lib/common/ui/genlist/genlist.h
new file mode 100644
index 0000000..518541d
--- /dev/null
+++ b/lib/common/ui/genlist/genlist.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __UI_GENLIST_H__
+#define __UI_GENLIST_H__
+
+#include <Elementary.h>
+#include "phone.h"
+
+/**
+ * Call an on_realized callback for genlist when an item is "realized".
+ * @param data User data.
+ * @param obj A smart object.
+ * @param event_info The genlist item that is "realized".
+ */
+void ui_genlist_on_realized(void *data, Evas_Object *obj, void *event);
+
+#endif /* __UI_GENLIST_H__ */
diff --git a/lib/common/ui/genlist/item.cpp b/lib/common/ui/genlist/item.cpp
new file mode 100644
index 0000000..d269f5b
--- /dev/null
+++ b/lib/common/ui/genlist/item.cpp
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "ui/genlist/item.h"
+
+ui_genlist_item * ui_genlist_item_create()
+{
+ PH_TRACE;
+ return (ui_genlist_item *) calloc(1, sizeof(ui_genlist_item));
+}
+
+void ui_genlist_item_destroy(void *data, Evas_Object *obj)
+{
+ PH_TRACE;
+ free(data);
+}
diff --git a/lib/common/ui/genlist/item.h b/lib/common/ui/genlist/item.h
new file mode 100644
index 0000000..b4c8151
--- /dev/null
+++ b/lib/common/ui/genlist/item.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __UI_GENLIST_ITEM_H__
+#define __UI_GENLIST_ITEM_H__
+
+#include <Elementary.h>
+#include "phone.h"
+
+typedef struct ui_genlist_item
+{
+ void (*on_realized)(struct ui_genlist_item *item);
+ Elm_Object_Item *object_item;
+ Eina_List **item_list;
+ Evas_Object *save_button;
+ void *group_data;
+ void *data;
+} ui_genlist_item;
+
+/**
+ * Allocate the memory for ui_genlist_item.
+ * @return allocated ui_genlist_item.
+ */
+ui_genlist_item * ui_genlist_item_create();
+
+/**
+ * Destroy ui_genlist_item. Used as Elm_Gen_Item_Del_Cb.
+ * @param data The ui_genlist_item to be destroyed.
+ * @param obj The widget object.
+ */
+void ui_genlist_item_destroy(void *data, Evas_Object *obj);
+
+#endif /* __UI_GENLIST_ITEM_H__ */
diff --git a/lib/ct-front/CMakeLists.txt b/lib/ct-front/CMakeLists.txt
new file mode 100755
index 0000000..84243ea
--- /dev/null
+++ b/lib/ct-front/CMakeLists.txt
@@ -0,0 +1,14 @@
+LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
+
+SET(TARGET ${CT_FRONT})
+
+FILE(GLOB SRCS *.cpp)
+
+ADD_LIBRARY(${TARGET} SHARED ${SRCS})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES VERSION ${VERSION})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS})
+TARGET_LINK_LIBRARIES(${TARGET} ${COMMON_LIB} ${FAVOR_LIB} ${ug_pkgs_LDFLAGS} ${PH_LOG} ${CT_DETAILS} ${CT_LIST})
+
+INSTALL(TARGETS ${TARGET} DESTINATION ${UGLIBDIR})
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/lib/ct-front/contacts-tabui-efl.xml DESTINATION "/usr/share/packages")
diff --git a/lib/ct-front/contacts-tabui-efl.xml b/lib/ct-front/contacts-tabui-efl.xml
new file mode 100644
index 0000000..35baa94
--- /dev/null
+++ b/lib/ct-front/contacts-tabui-efl.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="contacts-tabui-efl" version="0.1.0-0" install-location="internal-only">
+ <label>contacts-tabui</label>
+ <author email="ensung.park@samsung.com" href="www.samsung.com">ensung park</author>
+ <description>contacts-tabui-efl Application</description>
+ <ui-application appid="contacts-tabui-efl" exec="/usr/ug/bin/contacts-tabui-efl" nodisplay="true" multiple="true" type="capp" taskmanage="false">
+ <icon>org.tizen.contacts.png</icon>
+ <label>contacts-tabui</label>
+ <label xml:lang="en-us">contacts-tabui</label>
+ <label xml:lang="nl-nl">contacts-tabui</label>
+ <label xml:lang="de-de">contacts-tabui</label>
+ <label xml:lang="en-gb">contacts-tabui</label>
+ <label xml:lang="zh-hk">contacts-tabui</label>
+ <label xml:lang="zh-cn">contacts-tabui</label>
+ <label xml:lang="ru-ru">contacts-tabui</label>
+ <label xml:lang="zh-tw">contacts-tabui</label>
+ <label xml:lang="ja-jp">contacts-tabui</label>
+ <label xml:lang="es-es">contacts-tabui</label>
+ <label xml:lang="el-gr">contacts-tabui</label>
+ <label xml:lang="it-it">contacts-tabui</label>
+ <label xml:lang="tr-tr">contacts-tabui</label>
+ <label xml:lang="pt-pt">contacts-tabui</label>
+ <label xml:lang="fr-fr">contacts-tabui</label>
+ <label xml:lang="ko-kr">contacts-tabui</label>
+ <application-service>
+ <operation name="http://tizen.org/ns/packages"/>
+ </application-service>
+ </ui-application>
+</manifest>
diff --git a/lib/ct-front/ct-front-main.cpp b/lib/ct-front/ct-front-main.cpp
new file mode 100755
index 0000000..980376b
--- /dev/null
+++ b/lib/ct-front/ct-front-main.cpp
@@ -0,0 +1,229 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <ui-gadget-module.h>
+
+#include "phone.h"
+#include "phone-common.h"
+#include "contacts-ug.h"
+#include "ct-front.h"
+#include "ct-front-view.h"
+
+static int cfront_parse_bundle(ct_front_data *cfront_d, service_h service)
+{
+ PH_TRACE;
+ char* val = NULL;
+
+ cfront_d->view_visible[CT_VIEW_CONTACT] = true;
+ cfront_d->view_visible[CT_VIEW_GROUP] = true;
+ cfront_d->view_visible[CT_VIEW_FAVORITE] = true;
+
+ if (service)
+ {
+ service_get_extra_data(service, PH_UG_BUNDLE_TYPE, &val);
+ if (val)
+ cfront_d->ug_request = atoi(val);
+ PH_DBG("type = %d", cfront_d->ug_request);
+ free(val);
+ }
+
+ switch (cfront_d->ug_request)
+ {
+ case PH_UG_REQUEST_SELECT:
+ case PH_UG_REQUEST_SELECT_NUMBER:
+ case PH_UG_REQUEST_SELECT_EMAIL:
+ cfront_d->view_visible[CT_VIEW_LOG] = true;
+ break;
+ case PH_UG_REQUEST_SET_WITH_NUM:
+ service_get_extra_data(service, CT_UG_BUNDLE_NUM,
+ &cfront_d->ug_data);
+ break;
+ case PH_UG_REQUEST_SET_WITH_EMAIL:
+ service_get_extra_data(service, CT_UG_BUNDLE_EMAIL,
+ &cfront_d->ug_data);
+ break;
+ case PH_UG_REQUEST_SET_WITH_WEB:
+ service_get_extra_data(service, CT_UG_BUNDLE_WEB,
+ &cfront_d->ug_data);
+ break;
+ case PH_UG_REQUEST_SET_WITH_IMG:
+ case PH_UG_REQUEST_SET_WITH_RINGTONE:
+ service_get_extra_data(service, CT_UG_BUNDLE_PATH,
+ &cfront_d->ug_data);
+ break;
+ case PH_UG_REQUEST_CHECK:
+ case PH_UG_REQUEST_CHECK_FOR_NUMBER:
+ case PH_UG_REQUEST_CHECK_FOR_EMAIL:
+ case PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL:
+ cfront_d->view_visible[CT_VIEW_LOG] = true;
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_MAX, &val);
+ if (val)
+ cfront_d->cnt_max = atoi(val);
+ free(val);
+ default:
+ break;
+ }
+ return 0;
+}
+
+void *ct_tabui_on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv)
+{
+ PH_TRACE;
+ if (!ug || !priv)
+ return NULL;
+
+ bindtextdomain(PACKAGE, LOCALEDIR);
+
+ ct_front_data *cfront_d = (ct_front_data *) priv;
+ int ret = cfront_parse_bundle(cfront_d, service);
+ p_retvm_if(-1 == ret, NULL, "ph_front_view_parse_bundle() Failed");
+
+ Evas_Object *parent = (Evas_Object *) ug_get_parent_layout(ug);
+ if (!parent)
+ return NULL;
+
+ cfront_d = (ct_front_data *) priv;
+ cfront_d->win = (Evas_Object *) ug_get_window();
+
+ cfront_d->select_tab = CT_VIEW_NONE;
+ cfront_d->ug = ug;
+
+ bool success = cfront_d->initialize(cfront_d->win, parent);
+ check_if(!success, return NULL);
+
+ success = ct_front_view_create_toolbar(*cfront_d) != NULL;
+ check_if(!success, return NULL);
+
+ int err = contacts_connect2();
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_connect2() Failed(%d)", err);
+
+ return cfront_d->getContent();
+}
+
+void ct_tabui_on_start(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ ct_front_data *cfront_d = (ct_front_data *) priv;
+
+ elm_toolbar_select_mode_set(cfront_d->tabbar,
+ ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+ cfront_d->timer = ecore_timer_add(3.0, ctui_front_view_load_timer,
+ cfront_d);
+}
+
+void ct_tabui_on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+}
+
+void ct_tabui_on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+}
+
+void ct_tabui_on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ct_front_data *cfront_d = (ct_front_data *) priv;
+
+ if (!ug)
+ return;
+
+ free(cfront_d->ug_data);
+
+ if (cfront_d->ug)
+ {
+ evas_object_del((Evas_Object *) ug_get_layout(ug));
+ }
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_disconnect2() Failed(%d)",
+ err);
+}
+
+void ct_tabui_on_message(ui_gadget_h ug, service_h msg, service_h service,
+ void *priv)
+{
+ PH_TRACE;
+}
+
+void ct_tabui_on_event(ui_gadget_h ug, enum ug_event event, service_h service,
+ void *priv)
+{
+ PH_TRACE;
+ ct_front_data *cfront_d = (ct_front_data *) priv;
+ switch (event)
+ {
+ case UG_EVENT_REGION_CHANGE:
+ ctui_front_view_region_changed(cfront_d);
+ break;
+ case UG_EVENT_ROTATE_PORTRAIT:
+ case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+ break;
+ case UG_EVENT_ROTATE_LANDSCAPE:
+ case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+ break;
+ case UG_EVENT_LANG_CHANGE:
+ ctui_front_view_language_changed(cfront_d);
+ break;
+ default:
+ break;
+ }
+}
+
+void ct_tabui_on_key_event(ui_gadget_h ug, enum ug_key_event event,
+ service_h service, void *priv)
+{
+ PH_TRACE;
+}
+
+extern "C" API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ if (!ops)
+ return -1;
+
+ ct_front_data *cfront_d = new ct_front_data();
+ if (!cfront_d)
+ return -1;
+
+ ops->create = ct_tabui_on_create;
+ ops->start = ct_tabui_on_start;
+ ops->pause = ct_tabui_on_pause;
+ ops->resume = ct_tabui_on_resume;
+ ops->destroy = ct_tabui_on_destroy;
+ ops->message = ct_tabui_on_message;
+ ops->event = ct_tabui_on_event;
+ ops->key_event = ct_tabui_on_key_event;
+ ops->priv = cfront_d;
+ ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+ return 0;
+}
+
+extern "C" API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ if (!ops)
+ return;
+
+ free(ops->priv);
+ ops->priv = NULL;
+}
+
diff --git a/lib/ct-front/ct-front-view.cpp b/lib/ct-front/ct-front-view.cpp
new file mode 100755
index 0000000..e0eb62b
--- /dev/null
+++ b/lib/ct-front/ct-front-view.cpp
@@ -0,0 +1,749 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <bundle.h>
+#include <app.h>
+#include "phone.h"
+#include "ct-front.h"
+#include "phone-log.h"
+#include "ct-front-view.h"
+#include "ct-list.h"
+#include "ct-group.h"
+#include "ct-favor.h"
+#include <auto_ptr.h>
+
+static void cfront_view_reset_current_sub_view(ct_front_data &cfront_d)
+{
+ PH_TRACE;
+ p_retm_if(cfront_d.select_tab <= CT_VIEW_NONE || CT_VIEW_MAX <= cfront_d.select_tab,
+ "select_tab %d", cfront_d.select_tab);
+ Evas_Object* pSubView(cfront_d.sub_view[cfront_d.select_tab]);
+ if (pSubView)
+ {
+ switch (cfront_d.select_tab)
+ {
+ case CT_VIEW_CONTACT:
+ ctui_list_view_reset((ct_list_data *) evas_object_data_get(cfront_d.navi, "clist_d"));
+ ctui_list_set_background(cfront_d.navi, true);
+ break;
+ case CT_VIEW_LOG:
+ phone_log_view_reset(cfront_d.navi);
+ phone_log_set_background(cfront_d.navi, true);
+ break;
+ case CT_VIEW_GROUP:
+ phone_group_view_reset(pSubView);
+ phone_group_set_background(pSubView, true);
+ break;
+ case CT_VIEW_FAVORITE:
+ phone_favor_view_reset(pSubView);
+ phone_favor_set_background(pSubView, true);
+ break;
+ }
+ }
+}
+
+static void cfront_view_load_sub_view(ct_front_data *cfront_d, int tab_index)
+{
+ PH_TRACE;
+ p_retm_if(!cfront_d, "cfront_d is NULL");
+
+ std::auto_ptr<ph_view_info> pViewInfo(new ph_view_info);
+ phone_set_view_info(pViewInfo.get(), cfront_d->win, cfront_d->navi, cfront_d->ug,
+ cfront_d->ug_request, cfront_d->cnt_max, cfront_d->ug_data);
+ switch (tab_index)
+ {
+ case CT_VIEW_CONTACT:
+ cfront_d->sub_view[tab_index] = ctui_create_phone_list_view(pViewInfo.get());
+ break;
+ case CT_VIEW_LOG:
+ cfront_d->sub_view[tab_index] = phone_create_log_view(pViewInfo.get());
+ break;
+ case CT_VIEW_GROUP:
+ cfront_d->sub_view[tab_index] = phone_create_group_view(pViewInfo.get());
+ break;
+ case CT_VIEW_FAVORITE:
+ cfront_d->sub_view[tab_index] = phone_favor_create_view(pViewInfo.get());
+ break;
+ default:
+ ERR("tab_index is invalid");
+ break;
+ };
+}
+
+static bool shouldRunEditMode(int ugRequest)
+{
+ bool res(false);
+ if (PH_UG_REQUEST_CHECK == ugRequest
+ || PH_UG_REQUEST_CHECK_FOR_NUMBER == ugRequest
+ || PH_UG_REQUEST_CHECK_FOR_EMAIL == ugRequest
+ || PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == ugRequest)
+ {
+ res = true;
+ }
+ return res;
+}
+
+static void cfront_view_show_sub_view(ct_front_data &cfront_d, int tab_index)
+{
+ PH_TRACE;
+ p_retm_if(cfront_d.select_tab == tab_index, "The tab is already shown");
+
+ cfront_d.select_tab = tab_index;
+ cfront_view_reset_current_sub_view(cfront_d);
+ phone_hide_notify(cfront_d.navi);
+
+ std::auto_ptr<ph_view_info> pViewinfo(new ph_view_info);
+ phone_set_view_info(pViewinfo.get(), cfront_d.win, cfront_d.navi, cfront_d.ug,
+ cfront_d.ug_request, cfront_d.cnt_max, cfront_d.ug_data);
+
+ switch (tab_index)
+ {
+ case CT_VIEW_CONTACT:
+ if (NULL == cfront_d.sub_view[tab_index])
+ {
+ DBG("!!! ctui_create_phone_list_view");
+ cfront_d.sub_view[tab_index] = ctui_create_phone_list_view(pViewinfo.get());
+ }
+
+ ctui_list_set_background(cfront_d.navi, false);
+ if (shouldRunEditMode(cfront_d.ug_request))
+ {
+ ctui_list_edit_mode_start((ct_list_data *)evas_object_data_get(cfront_d.navi, "clist_d"));
+ }
+ else
+ {
+ ctui_list_navi_set(CT_LIST_MODE_DEFAULT, (ct_list_data *)evas_object_data_get(cfront_d.navi, "clist_d"));
+ }
+ break;
+ case CT_VIEW_LOG:
+ if (NULL == cfront_d.sub_view[tab_index])
+ {
+ cfront_d.sub_view[tab_index] = phone_create_log_view(pViewinfo.get());
+ }
+
+ phone_log_set_background(cfront_d.navi, false);
+ if (shouldRunEditMode(cfront_d.ug_request))
+ {
+ phone_log_check_mode_start((ph_log_data *)evas_object_data_get(cfront_d.navi, "log_data"));
+ }
+ else
+ phone_log_set_navi(cfront_d.navi);
+ break;
+ case CT_VIEW_GROUP:
+ if (NULL == cfront_d.sub_view[tab_index])
+ {
+ cfront_d.sub_view[tab_index] = phone_create_group_view(pViewinfo.get());
+ }
+
+ phone_group_set_background(cfront_d.sub_view[tab_index], false);
+ phone_group_set_navi(cfront_d.sub_view[tab_index]);
+ break;
+ case CT_VIEW_FAVORITE:
+ if (NULL == cfront_d.sub_view[tab_index])
+ {
+ cfront_d.sub_view[tab_index] = phone_favor_create_view(pViewinfo.get());
+ }
+
+ phone_favor_set_background(cfront_d.sub_view[CT_VIEW_FAVORITE], false);
+ if (cfront_d.ug && shouldRunEditMode(cfront_d.ug_request))
+ {
+ phone_favor_edit_mode_start((ph_favorite_data *)
+ evas_object_data_get(cfront_d.sub_view[tab_index], "favor_d"));
+ }
+ else
+ {
+ phone_favor_set_navi(cfront_d.sub_view[tab_index], PH_FAVOR_MODE_DEFAULT);
+ }
+ break;
+ default:
+ ERR("tab_index is invalid");
+ return;
+ }
+
+ Evas_Object *view = elm_object_part_content_unset(cfront_d.layout, "elm.swallow.content");
+ if (view)
+ {
+ evas_object_hide(view);
+ }
+
+ elm_object_part_content_set(cfront_d.layout, "elm.swallow.content", cfront_d.sub_view[tab_index]);
+ evas_object_show(cfront_d.sub_view[tab_index]);
+}
+
+static Eina_Bool cfront_view_load_all_sub_view(void *data)
+{
+ PH_TRACE;
+ ct_front_data *cfront_d = (ct_front_data *) data;
+ p_retvm_if(!cfront_d, ECORE_CALLBACK_CANCEL, "cfront_d is NULL");
+
+ for (int i = CT_VIEW_CONTACT; i < CT_VIEW_MAX; i++)
+ {
+ if (cfront_d->view_visible[i] && NULL == cfront_d->sub_view[i])
+ {
+ cfront_view_load_sub_view(cfront_d, i);
+ return ECORE_CALLBACK_RENEW;
+ }
+ }
+ cfront_d->idler = NULL;
+ return ECORE_CALLBACK_CANCEL;
+}
+
+API Eina_Bool ctui_front_view_load_timer(void *data)
+{
+ PH_TRACE;
+ ct_front_data *cfront_d = (ct_front_data *) data;
+ p_retvm_if(!cfront_d, ECORE_CALLBACK_CANCEL, "cfront_d is NULL");
+
+ cfront_d->idler = ecore_idler_add(cfront_view_load_all_sub_view, cfront_d);
+ cfront_d->timer = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void cfront_view_change_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_front_data *cfront_d = (ct_front_data *) data;
+ p_retm_if(!cfront_d, "cfront_d is NULL");
+ if (cfront_d)
+ {
+ Elm_Object_Item *selected_it = elm_toolbar_selected_item_get(obj);
+ if (!selected_it)
+ {
+ selected_it = cfront_d->item[cfront_d->select_tab];
+ elm_toolbar_item_selected_set(cfront_d->item[cfront_d->select_tab],
+ EINA_TRUE);
+ }
+
+ int i = CT_VIEW_CONTACT;
+ for (; i < CT_VIEW_MAX; ++i)
+ {
+ if (cfront_d->item[i])
+ {
+ if (selected_it == cfront_d->item[i])
+ {
+ break;
+ }
+ }
+ }
+ PH_DBG("cur sel : %d, sel index : %d", cfront_d->select_tab, i);
+ cfront_view_show_sub_view(*cfront_d, i);
+ }
+}
+
+static void cfront_view_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_front_data *cfront_d = (ct_front_data *) data;
+ p_retm_if(NULL == cfront_d, "cfront_d is null");
+
+ for (int i = 0; i < CT_VIEW_MAX; i++)
+ {
+ if (cfront_d->sub_view[i])
+ evas_object_del(cfront_d->sub_view[i]);
+ cfront_d->sub_view[i] = NULL;
+ }
+
+ if (cfront_d->idler)
+ {
+ ecore_idler_del(cfront_d->idler);
+ cfront_d->idler = NULL;
+ }
+
+ if (cfront_d->timer)
+ {
+ ecore_timer_del(cfront_d->timer);
+ cfront_d->timer = NULL;
+ }
+
+ if (!cfront_d->ug)
+ {
+ delete cfront_d;
+ }
+ else
+ {
+ cfront_d->ug = NULL;
+ }
+}
+
+Evas_Object* ct_front_view_create_toolbar(ct_front_data &cfront_d)
+{
+ PH_TRACE;
+ Evas_Object *layout = elm_layout_add(cfront_d.navi);
+ p_retvm_if(NULL == layout, NULL, "elm_layout_add() Failed");
+ elm_layout_theme_set(layout, "layout", "tabbar", "default");
+ cfront_d.layout = layout;
+
+ Evas_Object *toolbar = elm_toolbar_add(cfront_d.navi);
+ p_retvm_if(NULL == toolbar, NULL, "elm_toolbar_add() Failed");
+ elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
+ elm_object_style_set(toolbar, "tabbar");
+ elm_object_part_content_set(layout, "elm.swallow.tabbar", toolbar);
+ cfront_d.tabbar = toolbar;
+
+ elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+ if (cfront_d.view_visible[CT_VIEW_CONTACT])
+ {
+ cfront_d.item[CT_VIEW_CONTACT] = elm_toolbar_item_append(toolbar,
+ PH_IMG_ICON_CONTACTS, S_(PH_SYS_BODY_CONTACTS),
+ cfront_view_change_cb, &cfront_d);
+ }
+
+ if (cfront_d.view_visible[CT_VIEW_GROUP])
+ {
+ cfront_d.item[CT_VIEW_GROUP] = elm_toolbar_item_append(toolbar,
+ PH_IMG_ICON_GROUP, T_(CT_GET_TEXT_BASIC, CTTEXT_GROUP),
+ cfront_view_change_cb, &cfront_d);
+ }
+
+ if (cfront_d.view_visible[CT_VIEW_FAVORITE])
+ {
+ cfront_d.item[CT_VIEW_FAVORITE] = elm_toolbar_item_append(toolbar,
+ PH_IMG_ICON_FAVORITE, T_(PH_GET_TEXT_BASIC, PHTEXT_FAVORITES),
+ cfront_view_change_cb, &cfront_d);
+ }
+
+ if (cfront_d.view_visible[CT_VIEW_LOG])
+ {
+ cfront_d.item[CT_VIEW_LOG] = elm_toolbar_item_append(toolbar,
+ PH_IMG_ICON_LOGS, T_(PH_GET_TEXT_BASIC, PHTEXT_LOGS),
+ cfront_view_change_cb, &cfront_d);
+ }
+
+ Elm_Object_Item *navi_it = elm_naviframe_item_push(cfront_d.navi, NULL, NULL, NULL, layout, NULL);
+ elm_naviframe_item_title_visible_set(navi_it, EINA_FALSE);
+ evas_object_event_callback_add(cfront_d.getContent(), EVAS_CALLBACK_DEL, cfront_view_delete_cb, &cfront_d);
+ return layout;
+}
+
+API ct_front_data* ctui_front_view_create(Evas_Object *win)
+{
+ PH_TRACE;
+ ct_front_data *cfront_d = new ct_front_data();
+ cfront_d->win = win;
+ cfront_d->select_tab = CT_VIEW_NONE;
+
+ cfront_d->view_visible[CT_VIEW_CONTACT] = true;
+ cfront_d->view_visible[CT_VIEW_GROUP] = true;
+ cfront_d->view_visible[CT_VIEW_FAVORITE] = true;
+
+ Evas_Object *conform = elm_conformant_add(cfront_d->win);
+ p_retvm_if(NULL == conform, NULL, "elm_conformant_add() Failed");
+
+ evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(cfront_d->win, conform);
+ evas_object_show(conform);
+
+ bool success = cfront_d->initialize(cfront_d->win, conform);
+ check_if(!success, delete cfront_d; return NULL);
+
+ elm_object_content_set(conform, cfront_d->getContent());
+ success = ct_front_view_create_toolbar(*cfront_d) != NULL;
+ check_if(!success, delete cfront_d; return NULL);
+
+ return cfront_d;
+}
+
+API void ctui_front_view_region_changed(ct_front_data *cfront_d)
+{
+ PH_TRACE;
+ if (cfront_d && cfront_d->sub_view[CT_VIEW_LOG])
+ phone_log_views_update(cfront_d->navi);
+ // TODO: update contact detail history view
+}
+
+API void ctui_front_view_pause(ct_front_data *cfront_d)
+{
+ PH_TRACE;
+ if (cfront_d && cfront_d->sub_view[CT_VIEW_LOG])
+ phone_log_set_background(cfront_d->navi, true);
+ if (cfront_d && cfront_d->sub_view[CT_VIEW_CONTACT])
+ ctui_list_view_pause(cfront_d->navi);
+ if (cfront_d && cfront_d->sub_view[CT_VIEW_GROUP])
+ phone_group_set_background(cfront_d->sub_view[CT_VIEW_GROUP], true);
+ if (cfront_d && cfront_d->sub_view[CT_VIEW_FAVORITE])
+ phone_favor_set_background(cfront_d->sub_view[CT_VIEW_FAVORITE], true);
+}
+
+API void ctui_front_view_resume(ct_front_data *cfront_d)
+{
+ PH_TRACE;
+ if (cfront_d && cfront_d->sub_view[CT_VIEW_LOG])
+ {
+ if (CT_VIEW_LOG == cfront_d->select_tab)
+ {
+ phone_log_set_background(cfront_d->navi, false);
+ phone_log_view_resume(cfront_d->navi);
+ }
+ }
+ if (cfront_d && cfront_d->sub_view[CT_VIEW_CONTACT])
+ ctui_list_view_resume(cfront_d->navi);
+
+ if (cfront_d && cfront_d->sub_view[CT_VIEW_GROUP]
+ && CT_VIEW_GROUP == cfront_d->select_tab)
+ phone_group_set_background(cfront_d->sub_view[CT_VIEW_GROUP], false);
+
+ if (cfront_d && cfront_d->sub_view[CT_VIEW_FAVORITE]
+ && CT_VIEW_FAVORITE == cfront_d->select_tab)
+ phone_favor_set_background(cfront_d->sub_view[CT_VIEW_FAVORITE], false);
+}
+
+static void cfront_view_win_activate(void *data, Evas *e, void *even_info)
+{
+ PH_TRACE;
+ elm_win_activate((Evas_Object *) data);
+ evas_event_callback_del(e, EVAS_CALLBACK_RENDER_FLUSH_POST,
+ cfront_view_win_activate);
+}
+
+API int ctui_front_view_rotate(ct_front_data *cfront_d, int rotate)
+{
+ PH_TRACE;
+ int ret = 0;
+
+ switch (rotate)
+ {
+ case 0:
+ ug_send_event (UG_EVENT_ROTATE_PORTRAIT);
+ break;
+ case 180:
+ ug_send_event (UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN);
+ break;
+ case 270:
+ ug_send_event (UG_EVENT_ROTATE_LANDSCAPE);
+ break;
+ case 90:
+ ug_send_event (UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN);
+ break;
+ default:
+ break;
+ }
+
+ evas_object_data_set(cfront_d->navi, "phone_rotate", (void *) rotate);
+
+ return ret;
+}
+
+API void ctui_front_view_language_changed(ct_front_data *cfront_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == cfront_d, "parameter(cfront_d) is NULL");
+ Elm_Object_Item *selected_it = NULL;
+
+ int i = 0;
+
+ // 1. Update tabbar
+ if (cfront_d->item[CT_VIEW_CONTACT])
+ elm_object_item_text_set(cfront_d->item[CT_VIEW_CONTACT],
+ S_(PH_SYS_BODY_CONTACTS));
+
+ if (cfront_d->item[CT_VIEW_GROUP])
+ elm_object_item_text_set(cfront_d->item[CT_VIEW_GROUP],
+ T_(CT_GET_TEXT_BASIC, CTTEXT_GROUP));
+
+ if (cfront_d->item[CT_VIEW_FAVORITE])
+ elm_object_item_text_set(cfront_d->item[CT_VIEW_FAVORITE],
+ T_(PH_GET_TEXT_BASIC, PHTEXT_FAVORITES));
+
+ if (cfront_d->item[CT_VIEW_LOG])
+ elm_object_item_text_set(cfront_d->item[CT_VIEW_LOG],
+ T_(PH_GET_TEXT_BASIC, PHTEXT_LOGS));
+
+ // 2. update view and selection info
+ if (cfront_d->sub_view[CT_VIEW_LOG])
+ phone_log_view_language_changed(cfront_d->navi);
+
+ if (cfront_d->sub_view[CT_VIEW_CONTACT])
+ ctui_list_view_language_changed(cfront_d->navi);
+
+ if (cfront_d->sub_view[CT_VIEW_GROUP])
+ phone_group_view_language_changed(cfront_d->sub_view[CT_VIEW_GROUP]);
+
+ if (cfront_d->sub_view[CT_VIEW_FAVORITE])
+ phone_favor_view_language_changed(cfront_d->sub_view[CT_VIEW_FAVORITE]);
+
+ // 3. Update tabbar
+ selected_it = elm_toolbar_selected_item_get(cfront_d->tabbar);
+ for (i = CT_VIEW_CONTACT; i < CT_VIEW_MAX; i++)
+ {
+ if (cfront_d->item[i])
+ if (selected_it == cfront_d->item[i])
+ break;
+ }
+ PH_DBG("cur sel : %d, sel index : %d", cfront_d->select_tab, i);
+ cfront_view_show_sub_view(*cfront_d, i);
+ switch (cfront_d->select_tab)
+ {
+ case CT_VIEW_CONTACT:
+ {
+ ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(cfront_d->navi,
+ "clist_d");
+ if (clist_d)
+ ctui_list_navi_set(clist_d->list_mode, clist_d);
+ break;
+ }
+ case CT_VIEW_GROUP:
+ phone_group_set_navi(cfront_d->sub_view[cfront_d->select_tab]);
+ break;
+ case CT_VIEW_FAVORITE:
+ phone_favor_set_navi(cfront_d->sub_view[cfront_d->select_tab],
+ PH_FAVOR_MODE_DEFAULT);
+ break;
+ case CT_VIEW_LOG:
+ phone_log_set_navi(cfront_d->navi);
+ break;
+ }
+}
+
+API void ctui_front_view_reset(ct_front_data *cfront_d, int select_index,
+ int op, service_h service)
+{
+ PH_TRACE;
+ int call_launched = FALSE;
+ ph_view_info *view_info;
+ Evas_Object *view;
+ char *buf = NULL;
+ int ret;
+ int addressbook_id = 0;
+ int grp_id = 0;
+ char *group_name = NULL;
+
+ elm_toolbar_select_mode_set(cfront_d->tabbar, ELM_OBJECT_SELECT_MODE_NONE);
+
+ cfront_view_reset_current_sub_view(*cfront_d);
+ if (cfront_d->sub_view[CT_VIEW_CONTACT])
+ ctui_list_view_resume(cfront_d->navi);
+
+ view = elm_object_part_content_unset(cfront_d->layout,
+ "elm.swallow.content");
+ if (view)
+ evas_object_hide(view);
+
+ elm_toolbar_select_mode_set(cfront_d->tabbar,
+ ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+ view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info));
+ phone_set_view_info(view_info, cfront_d->win, cfront_d->navi, cfront_d->ug,
+ cfront_d->ug_request, cfront_d->cnt_max, cfront_d->ug_data);
+
+ switch (select_index)
+ {
+ case CT_VIEW_CONTACT:
+ if (NULL == cfront_d->sub_view[select_index])
+ {
+ cfront_d->sub_view[CT_VIEW_CONTACT] =
+ ctui_create_phone_list_view(view_info);
+ }
+ ctui_list_navi_set(CT_LIST_MODE_DEFAULT, (ct_list_data *)
+ evas_object_data_get(cfront_d->navi, "clist_d"));
+ if (CT_FRONT_CONTACT_NEW == op)
+ ctui_list_new_btn_clicked_cb(
+ evas_object_data_get(cfront_d->navi, "clist_d"), NULL,
+ NULL);
+ else if (CT_FRONT_CONTACT_ADDR == op)
+ {
+ int ab_id = 0;
+ ret = service_get_extra_data(service, "launch_type", &buf);
+ p_warn_if(SERVICE_ERROR_NONE != ret,
+ "service_get_extra_data is failed(%d)", ret);
+
+ if (buf && *buf)
+ {
+ ab_id = atoi(buf);
+ if (0 <= ab_id)
+ {
+ ct_list_data *clist_d;
+ clist_d = (ct_list_data *) evas_object_data_get(cfront_d->navi,
+ "clist_d");
+ p_retm_if(NULL == clist_d,
+ "evas_object_data_get() return NULL");
+ clist_d->list_op = CT_GET_LIST_PERSON_OF_ADDRBOOK_ID;
+ clist_d->base_ab = ab_id;
+ ctui_list_genlist_update(clist_d);
+ }
+ free(buf);
+ }
+ }
+ else if (CT_FRONT_CONTACT_SEARCH == op)
+ {
+ ret = service_get_extra_data(service, "search_name", &buf);
+ p_warn_if(SERVICE_ERROR_NONE != ret,
+ "service_get_extra_data is failed(%d)", ret);
+ ctui_list_set_search_text((ct_list_data *)
+ evas_object_data_get(cfront_d->navi, "clist_d"), buf);
+ free(buf);
+ }
+ break;
+ case CT_VIEW_LOG:
+ if (NULL == cfront_d->sub_view[select_index])
+ cfront_d->sub_view[select_index] = phone_create_log_view(
+ view_info);
+ if (!cfront_d->ug)
+ phone_log_missed_info_update(cfront_d->navi);
+ phone_log_set_navi(cfront_d->navi);
+ break;
+ case CT_VIEW_GROUP:
+ if (NULL == cfront_d->sub_view[select_index])
+ cfront_d->sub_view[select_index] = phone_create_group_view(
+ view_info);
+ phone_group_set_navi(cfront_d->sub_view[select_index]);
+
+ ret = service_get_extra_data(service, "addr_id", &buf);
+ p_warn_if(SERVICE_ERROR_NONE != ret,
+ "service_get_extra_data is failed(%d)", ret);
+
+ if (buf)
+ addressbook_id = atoi(buf);
+
+ buf = NULL;
+
+ ret = service_get_extra_data(service, "group_id", &buf);
+ p_warn_if(SERVICE_ERROR_NONE != ret,
+ "service_get_extra_data is failed(%d)", ret);
+
+ if (buf)
+ grp_id = atoi(buf);
+
+ buf = NULL;
+ ret = service_get_extra_data(service, "group_name", &buf);
+ p_warn_if(SERVICE_ERROR_NONE != ret,
+ "service_get_extra_data is failed(%d)", ret);
+ FREEandSTRDUP(group_name, buf);
+
+ free(buf);
+
+ if (CT_FRONT_GROUP_MESSAGE == op)
+ {
+ int list_op;
+ if (-1 == grp_id)
+ list_op = CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID;
+ else if (grp_id)
+ list_op = CT_GET_LIST_PERSON_HAD_NUMBER_OF_GROUP_ID;
+ else
+ list_op =
+ CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OF_ADDRBOOK_ID;
+
+ ctui_create_list_select_view(view_info->navi,
+ phone_group_message_result_cb,
+ evas_object_data_get(cfront_d->sub_view[select_index],
+ "cgroup_d"), list_op, addressbook_id, grp_id,
+ 0);
+ }
+ else if (CT_FRONT_GROUP_EMAIL == op)
+ {
+ int list_op;
+ if (-1 == grp_id)
+ list_op = CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID;
+ else if (grp_id)
+ list_op = CT_GET_LIST_PERSON_HAD_EMAIL_OF_GROUP_ID;
+ else
+ list_op =
+ CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_EMAIL_OF_ADDRBOOK_ID;
+
+ ctui_create_list_select_view(view_info->navi,
+ phone_group_email_result_cb,
+ evas_object_data_get(cfront_d->sub_view[select_index],
+ "cgroup_d"), list_op, addressbook_id, grp_id,
+ 0);
+ }
+ else if (CT_FRONT_GROUP_DETAIL == op)
+ {
+ int list_op;
+ int addressbook_mode;
+ contacts_record_h record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ ct_group_list *info;
+
+ info = (ct_group_list *) calloc(1, sizeof(ct_group_list));
+ if (NULL == info)
+ {
+ ERR("calloc() return NULL");
+ break;
+ }
+
+ err = contacts_db_get_record(_contacts_address_book._uri,
+ addressbook_id, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ err = contacts_record_get_int(record,
+ _contacts_address_book.mode, &addressbook_mode);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ if (-1 == grp_id)
+ list_op = CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID;
+ else if (grp_id)
+ list_op = CT_GET_LIST_PERSON_HAD_NUMBER_OF_GROUP_ID;
+ else
+ list_op =
+ CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OF_ADDRBOOK_ID;
+ info->id_ab = addressbook_id;
+ info->id_grp = grp_id;
+ info->name = group_name;
+ info->mode = addressbook_mode;
+ ctui_list_create_contact_view_with_info(view_info, list_op,
+ info);
+
+ free(info);
+ }
+ break;
+ case CT_VIEW_FAVORITE:
+ if (NULL == cfront_d->sub_view[select_index])
+ cfront_d->sub_view[select_index] = phone_favor_create_view(
+ view_info);
+ phone_favor_set_navi(cfront_d->sub_view[select_index],
+ PH_FAVOR_MODE_DEFAULT);
+ break;
+ default:
+ break;
+ }
+
+ cfront_d->select_tab = select_index;
+
+ if (CT_VIEW_NONE < select_index && select_index < CT_VIEW_MAX)
+ {
+ elm_object_part_content_set(cfront_d->layout, "elm.swallow.content",
+ cfront_d->sub_view[select_index]);
+ evas_object_show(cfront_d->sub_view[select_index]);
+ elm_toolbar_item_selected_set(cfront_d->item[select_index], EINA_TRUE);
+ }
+
+ if (cfront_d->win && FALSE == call_launched && CT_VIEW_NONE != select_index)
+ {
+ if (EINA_FALSE == evas_object_visible_get(cfront_d->win))
+ evas_object_show(cfront_d->win);
+ evas_event_callback_add(evas_object_evas_get(cfront_d->navi),
+ EVAS_CALLBACK_RENDER_FLUSH_POST, cfront_view_win_activate,
+ cfront_d->win);
+ elm_win_activate(cfront_d->win);
+ }
+ else
+ elm_win_lower(cfront_d->win);
+
+ cfront_d->timer = ecore_timer_add(3.0, ctui_front_view_load_timer,
+ cfront_d);
+
+ free(view_info);
+}
+
diff --git a/lib/ct-front/ct-front-view.h b/lib/ct-front/ct-front-view.h
new file mode 100755
index 0000000..4abf65b
--- /dev/null
+++ b/lib/ct-front/ct-front-view.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CT_FRONT_VIEW_H__
+#define __CT_FRONT_VIEW_H__
+
+Evas_Object* ct_front_view_create_toolbar(ct_front_data &cfront_d);
+
+#endif /* __CT_FRONT_VIEW_H__ */
+
diff --git a/lib/ct-front/include/ct-front.h b/lib/ct-front/include/ct-front.h
new file mode 100755
index 0000000..37a183f
--- /dev/null
+++ b/lib/ct-front/include/ct-front.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CT_FRONT_H__
+#define __CT_FRONT_H__
+
+#include <app.h>
+#include "ViewManager.h"
+
+enum
+{
+ CT_FRONT_CONTACT_NEW,
+ CT_FRONT_CONTACT_ADDR,
+ CT_FRONT_CONTACT_SEARCH,
+ CT_FRONT_GROUP_MESSAGE,
+ CT_FRONT_GROUP_EMAIL,
+ CT_FRONT_GROUP_DETAIL,
+};
+
+enum CT_VIEW_TYPE
+{
+ CT_VIEW_NONE = -1,
+ CT_VIEW_CONTACT,
+ CT_VIEW_LOG,
+ CT_VIEW_GROUP,
+ CT_VIEW_FAVORITE,
+ CT_VIEW_MAX,
+};
+
+struct ct_front_data: public Common::TabbedView<CT_VIEW_MAX>
+{
+};
+
+ct_front_data* ctui_front_view_create(Evas_Object *win);
+Eina_Bool ctui_front_view_load_timer(void *data);
+void ctui_front_view_region_changed(ct_front_data *cfront_d);
+void ctui_front_view_reset(ct_front_data *cfront_d, int tab_index, int op,
+ service_h service);
+void ctui_front_view_language_changed(ct_front_data *cfront_d);
+void ctui_front_view_resume(ct_front_data *cfront_d);
+void ctui_front_view_pause(ct_front_data *cfront_d);
+int ctui_front_view_rotate(ct_front_data *cfront_d, int rotate);
+
+#endif /* __CT_FRONT_H__ */
+
diff --git a/lib/details/CMakeLists.txt b/lib/details/CMakeLists.txt
new file mode 100755
index 0000000..150aa69
--- /dev/null
+++ b/lib/details/CMakeLists.txt
@@ -0,0 +1,24 @@
+LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
+
+SET(TARGET ${CT_DETAILS})
+
+FILE(GLOB SRCS *.cpp)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(details_pkgs REQUIRED icu-i18n)
+
+FOREACH(flag ${details_pkgs_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+ADD_LIBRARY(${TARGET} SHARED ${SRCS})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES SOVERSION ${VERSION_MAJOR})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES VERSION ${VERSION})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS})
+TARGET_LINK_LIBRARIES(${TARGET} ${COMMON_LIB} ${ug_pkgs_LDFLAGS} ${details_pkgs_LDFLAGS})
+
+ADD_DEPENDENCIES(${TARGET} contacts_edj_build image_layout_edj_build detail_theme_edj_build)
+
+INSTALL(TARGETS ${TARGET} DESTINATION ${UGLIBDIR})
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/lib/details/contacts-details-efl.xml DESTINATION "/usr/share/packages")
diff --git a/lib/details/base_addrbook b/lib/details/base_addrbook
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/details/base_addrbook
diff --git a/lib/details/contacts-details-efl.xml b/lib/details/contacts-details-efl.xml
new file mode 100644
index 0000000..658e4e1
--- /dev/null
+++ b/lib/details/contacts-details-efl.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="contacts-details-efl" version="0.1.0-0" install-location="internal-only">
+ <label>contacts-details</label>
+ <author email="ensung.park@samsung.com" href="www.samsung.com">ensung park</author>
+ <description>contacts-details-efl Application</description>
+ <ui-application appid="contacts-details-efl" exec="/usr/ug/bin/contacts-details-efl" nodisplay="true" multiple="true" type="capp" taskmanage="false">
+ <icon>org.tizen.contacts.png</icon>
+ <label>contacts-details</label>
+ <label xml:lang="en-us">contacts-details</label>
+ <label xml:lang="nl-nl">contacts-details</label>
+ <label xml:lang="de-de">contacts-details</label>
+ <label xml:lang="en-gb">contacts-details</label>
+ <label xml:lang="zh-hk">contacts-details</label>
+ <label xml:lang="zh-cn">contacts-details</label>
+ <label xml:lang="ru-ru">contacts-details</label>
+ <label xml:lang="zh-tw">contacts-details</label>
+ <label xml:lang="ja-jp">contacts-details</label>
+ <label xml:lang="es-es">contacts-details</label>
+ <label xml:lang="el-gr">contacts-details</label>
+ <label xml:lang="it-it">contacts-details</label>
+ <label xml:lang="tr-tr">contacts-details</label>
+ <label xml:lang="pt-pt">contacts-details</label>
+ <label xml:lang="fr-fr">contacts-details</label>
+ <label xml:lang="ko-kr">contacts-details</label>
+ <application-service>
+ <operation name="http://tizen.org/ns/packages"/>
+ </application-service>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/social/view"/>
+ <mime name="vnd.tizen.item.type/vnd.tizen.contact"/>
+ </application-service>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/social/add"/>
+ <mime name="vnd.tizen.item.type/vnd.tizen.contact"/>
+ </application-service>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/social/edit"/>
+ <mime name="vnd.tizen.item.type/vnd.tizen.contact"/>
+ </application-service>
+ </ui-application>
+</manifest>
diff --git a/lib/details/ct-detail-activity.cpp b/lib/details/ct-detail-activity.cpp
new file mode 100755
index 0000000..c34fdeb
--- /dev/null
+++ b/lib/details/ct-detail-activity.cpp
@@ -0,0 +1,314 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "phone.h"
+#include "phone-common.h"
+#include <account-types.h>
+#include <account.h>
+
+typedef struct
+{
+ int activity_id;
+ int contact_id;
+ int address_book_id;
+ char *acc_name;
+ char *status;
+ int time;
+ char *data;
+ char *icon_path;
+} ct_detail_activity_info;
+
+enum ACTIVITY_ITC_TYPE
+{
+ ACTIVITY_ITC_NUM_UTIL_BTN = 0,
+ ACTIVITY_ITC_ACTIVITY,
+ ACTIVITY_ITC_ACTIVITY_NO_IMG,
+ ACTIVITY_ITC_MAX,
+};
+
+static Elm_Genlist_Item_Class activity_itcs[] =
+{
+ {
+ 0, 0, 1, "detail.3icon", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "activity_list", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "activity_list_no_img", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+};
+
+static void detail_activity_fill_genlist(ct_activity_data *cactivity_d)
+{
+ PH_TRACE;
+ Evas_Object *genlist;
+ Eina_List *l;
+ void *info;
+
+ if (NULL == cactivity_d->activity_genlist)
+ {
+ genlist = elm_genlist_add(cactivity_d->layout);
+ elm_object_theme_set(genlist, cactivity_d->th);
+ cactivity_d->activity_genlist = genlist;
+ evas_object_data_set(genlist, "cactivity_d", cactivity_d);
+ elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+ }
+ else
+ {
+ genlist = cactivity_d->activity_genlist;
+ elm_genlist_clear(genlist);
+ }
+
+ EINA_LIST_FOREACH(cactivity_d->list, l, info)
+ {
+ ct_detail_activity_info *l_info = (ct_detail_activity_info *) info;
+ /* Temporary code need to fix l_info->data for activity image*/
+ /*
+ if (l_info->data && *l_info->data)
+ elm_genlist_item_append(genlist, &activity_itcs[ACTIVITY_ITC_ACTIVITY], l_info, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, l_info);
+ else */
+ elm_genlist_item_append(genlist,
+ &activity_itcs[ACTIVITY_ITC_ACTIVITY_NO_IMG], l_info, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, l_info);
+ }
+}
+
+static Evas_Object *detail_activity_gl_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ct_detail_activity_info *l_info = (ct_detail_activity_info *) data;
+
+ char buf[PATH_MAX] = { 0 };
+ Evas_Object *ic;
+
+ ic = elm_icon_add(obj);
+ p_retvm_if(NULL == ic, NULL, "elm_icon_add() return NULL");
+
+ // Temporary code need to fix l_info->data for activity image
+ if (0 == strcmp(part, "elm.icon.2"))
+ {
+ if ('\0' == *l_info->data)
+ return NULL;
+
+ snprintf(buf, sizeof(buf), "%s", l_info->data);
+ elm_image_file_set(ic, buf, NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1,
+ 1);
+ return ic;
+ }
+ else if (0 == strcmp(part, "elm.icon.1"))
+ {
+ if (NULL == l_info->icon_path || '\0' == *l_info->icon_path)
+ return NULL;
+ elm_image_file_set(ic, l_info->icon_path, NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1,
+ 1);
+ return ic;
+ }
+ else
+ return NULL;
+}
+
+static char* detail_activity_gl_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ct_detail_activity_info * activity_info = (ct_detail_activity_info *) data;
+ ct_activity_data *cactivity_d;
+ cactivity_d = (ct_activity_data *) evas_object_data_get(obj, "cactivity_d");
+ if (0 == strcmp(part, "elm.text.1"))
+ {
+ return SAFE_STRDUP(activity_info->status);
+ }
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+ return phone_detail_log_get_time(cactivity_d->hformatter,
+ activity_info->time);
+ }
+ return NULL;
+}
+
+void ct_detail_activity_create_itcs()
+{
+ PH_TRACE;
+ activity_itcs[ACTIVITY_ITC_ACTIVITY].func.text_get =
+ detail_activity_gl_label_get;
+ activity_itcs[ACTIVITY_ITC_ACTIVITY].func.content_get =
+ detail_activity_gl_icon_get;
+
+ activity_itcs[ACTIVITY_ITC_ACTIVITY_NO_IMG].func.text_get =
+ detail_activity_gl_label_get;
+ activity_itcs[ACTIVITY_ITC_ACTIVITY_NO_IMG].func.content_get =
+ detail_activity_gl_icon_get;
+}
+
+void ct_detail_activity_load_data(ct_activity_data *cactivity_d)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_list_h list_activity = NULL;
+ contacts_record_h record_activity = NULL;
+ Eina_List *list = NULL;
+ int i = 0;
+
+ err = phone_cts_get_list(_contacts_contact_activity._uri,
+ _contacts_contact_activity.person_id, cactivity_d->person_id,
+ &list_activity);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_list(list_activity) Failed(%d)", err);
+
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ ct_detail_activity_info *activity_info;
+
+ err = contacts_list_get_current_record_p(list_activity,
+ &record_activity);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_get_current_record_p() Failed(%d)", err);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+ activity_info = (ct_detail_activity_info *) calloc(1, sizeof(ct_detail_activity_info));
+
+ err = contacts_record_get_int(record_activity,
+ _contacts_contact_activity.activity_id,
+ &(activity_info->activity_id));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int(id) Failed(%d)", err);
+ err = contacts_record_get_int(record_activity,
+ _contacts_contact_activity.contact_id,
+ &(activity_info->contact_id));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int(contact_id) Failed(%d)", err);
+ err = contacts_record_get_int(record_activity,
+ _contacts_contact_activity.address_book_id,
+ &(activity_info->address_book_id));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int(address_book_id) Failed(%d)", err);
+ err = contacts_record_get_str(record_activity,
+ _contacts_contact_activity.source_name,
+ &(activity_info->acc_name));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int(source_name) Failed(%d)", err);
+ err = contacts_record_get_str(record_activity,
+ _contacts_contact_activity.status, &(activity_info->status));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int(status) Failed(%d)", err);
+ err = contacts_record_get_int(record_activity,
+ _contacts_contact_activity.timestamp, &(activity_info->time));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int(timestamp) Failed(%d)", err);
+ for (i = 0; i < cactivity_d->acc_cnt; i++)
+ {
+ if (cactivity_d->acc_types[i].id == activity_info->address_book_id)
+ activity_info->icon_path = cactivity_d->acc_types[i].icon_path;
+ }
+ /* Need To Fix Facebook Sync Data*/
+ /*
+ err = contacts_record_get_str(record_activity, _contacts_contact_activity.sync_data1, &(activity_info->data));
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int(sync_data1) Failed(%d)", err);
+ */
+
+ list = eina_list_append(list, (void*) activity_info);
+ PH_DBG("status = %s", activity_info->status);
+
+ err = contacts_list_next(list_activity);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ }
+
+ err = contacts_list_destroy(list_activity, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_destroy(list_activity) Failed(%d)", err);
+ cactivity_d->list = list;
+}
+
+static void detail_activity_free_list(ct_activity_data *cactivity_d)
+{
+ PH_TRACE;
+ void *info;
+
+ EINA_LIST_FREE(cactivity_d->list, info)
+ {
+ ct_detail_activity_info *l_info = (ct_detail_activity_info *) info;
+ if (NULL == l_info)
+ continue;
+ free(l_info->acc_name);
+ free(l_info->status);
+ free(l_info->data);
+ free(l_info);
+ }
+ cactivity_d->list = NULL;
+}
+
+static void detail_activity_view_delete_cb(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_activity_data *cactivity_d = (ct_activity_data *) data;
+
+ detail_activity_free_list(cactivity_d);
+
+ if (cactivity_d->activity_genlist)
+ evas_object_del(cactivity_d->activity_genlist);
+
+ if (cactivity_d->th)
+ {
+ elm_theme_extension_del(cactivity_d->th, DETAIL_THEME_EDJ);
+ elm_theme_free(cactivity_d->th);
+ }
+
+ free(cactivity_d);
+}
+
+static void detail_activity_set_navi(ct_activity_data *cactivity_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == cactivity_d->navi_item, "navi item is NULL");
+
+ phone_navi_item_reset(cactivity_d->navi_item, cactivity_d);
+}
+
+void ct_detail_activity_fill_layout(ct_activity_data *cactivity_d)
+{
+ PH_TRACE;
+ Evas_Object *layout;
+
+ layout = phone_create_base_layout(cactivity_d->navi, false);
+ cactivity_d->layout = layout;
+
+ detail_activity_fill_genlist(cactivity_d);
+ elm_object_part_content_set(layout, "elm.swallow.content",
+ cactivity_d->activity_genlist);
+
+ cactivity_d->navi_item = elm_naviframe_item_push(cactivity_d->navi,
+ "Activity", NULL, NULL, cactivity_d->layout, NULL);
+ elm_naviframe_item_title_visible_set(cactivity_d->navi_item, EINA_TRUE);
+ evas_object_event_callback_add(cactivity_d->layout, EVAS_CALLBACK_DEL,
+ detail_activity_view_delete_cb, cactivity_d);
+ detail_activity_set_navi(cactivity_d);
+}
diff --git a/lib/details/ct-detail-activity.h b/lib/details/ct-detail-activity.h
new file mode 100755
index 0000000..2136eee
--- /dev/null
+++ b/lib/details/ct-detail-activity.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CONTACTS_DETAIL_ACTIVITY_H__
+#define __CONTACTS_DETAIL_ACTIVITY_H__
+
+#include "phone-common.h"
+
+void ct_detail_activity_create_itcs();
+void ct_detail_activity_load_data(ct_activity_data *cactivity_d);
+void ct_detail_activity_fill_layout(ct_activity_data *cactivity_d);
+
+#endif //__CONTACTS_DETAIL_ACTIVITY_H__
diff --git a/lib/details/ct-detail-history.cpp b/lib/details/ct-detail-history.cpp
new file mode 100755
index 0000000..ff8d7da
--- /dev/null
+++ b/lib/details/ct-detail-history.cpp
@@ -0,0 +1,1117 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "phone.h"
+#include "ct-detail-history.h"
+#include "ct-detail-utils.h"
+#include "ct-detail-view.h"
+
+typedef struct
+{
+ int plog_id;
+ int plog_type;
+ int plog_time;
+ int plog_duration;
+ int plog_msgid;
+ int group_index;
+ char *plog_number;
+ char *plog_shortmsg;
+ Eina_Bool checked;
+} ct_detail_history_info;
+
+enum HISTORY_ITC_TYPE
+{
+ HISTORY_ITC_NUM_UTIL_BTN = 0,
+ HISTORY_ITC_HISTORY,
+ HISTORY_ITC_DATE,
+ HISTORY_ITC_SELECT_ALL,
+ HISTORY_ITC_MAX,
+};
+
+static Elm_Genlist_Item_Class history_itcs[] =
+{
+ {
+ 0, 0, 1, "detail.3icon", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "history_list", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "grouptitle", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "1icon", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+};
+
+static void detail_history_check_del(ct_history_data *chistory_d);
+static void detail_history_set_navi(ct_history_data *chistory_d, int mode);
+static Eina_Bool detail_history_refresh_view(void *data);
+
+void ct_detail_history_changed_cb(const char *view_uri, void *data)
+{
+ PH_TRACE;
+ ct_history_data *chistory_d = (ct_history_data *) data;
+
+ if (chistory_d->updating)
+ return;
+ if (chistory_d->idler)
+ {
+ ecore_idler_del(chistory_d->idler);
+ chistory_d->idler = NULL;
+ }
+ chistory_d->idler = ecore_idler_add(detail_history_refresh_view,
+ chistory_d);
+}
+
+static void detail_history_delete_records_cb(int err, void *data)
+{
+ PH_TRACE;
+ ct_history_data *chistory_d = (ct_history_data *) data;
+ ph_progress_info *p_info = NULL;
+
+ p_retm_if(NULL == chistory_d, "Invalid parameter(chistory_d is NULL)");
+ p_info = chistory_d->p_info;
+ p_retm_if(NULL == p_info, "Invalid parameter(p_info is NULL)");
+
+ if (p_info->update_ids)
+ {
+ free(p_info->update_ids);
+ p_info->update_ids = NULL;
+ }
+
+ if (CONTACTS_ERROR_NONE != err || p_info->alive == false)
+ {
+ if (p_info->popup)
+ {
+ evas_object_del(p_info->popup);
+ p_info->popup = NULL;
+ }
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+ free(p_info);
+ chistory_d->p_info = NULL;
+ chistory_d->updating = false;
+ elm_genlist_decorate_mode_set(chistory_d->history_genlist, EINA_FALSE);
+ chistory_d->view_mode = DETAIL_VIEW_MODE_HISTORY;
+ ct_detail_history_changed_cb(_contacts_phone_log._uri, chistory_d);
+ return;
+ }
+ else if (p_info->cnt == p_info->cnt_checked_total)
+ {
+ if (p_info->popup)
+ {
+ evas_object_del(p_info->popup);
+ p_info->popup = NULL;
+ }
+ phone_show_tickernoti(S_(PH_SYS_POP_DELETED));
+ free(p_info);
+ chistory_d->p_info = NULL;
+ chistory_d->updating = false;
+ elm_genlist_decorate_mode_set(chistory_d->history_genlist, EINA_FALSE);
+ chistory_d->view_mode = DETAIL_VIEW_MODE_HISTORY;
+ ct_detail_history_changed_cb(_contacts_phone_log._uri, chistory_d);
+ return;
+ }
+ else
+ {
+ detail_history_check_del(chistory_d);
+ }
+}
+
+static void detail_history_check_del(ct_history_data *chistory_d)
+{
+ PH_TRACE;
+ const int DETAIL_BULK_LENGTH = 50;
+ char percent_total[PH_TEXT_MAX_LEN + 1] = { 0, };
+ char percent[PH_TEXT_MAX_LEN + 1] = { 0, };
+ int *ids = NULL;
+ double value = 0.0;
+ int count = 0;
+ int base_count = 0;
+ int err = CONTACTS_ERROR_NONE;
+ ph_progress_info *p_info = chistory_d->p_info;
+ Eina_List *l;
+ void *info;
+
+ if (p_info->cnt_checked_total - p_info->cnt < DETAIL_BULK_LENGTH)
+ ids = (int *) calloc(1,
+ sizeof(int) * (p_info->cnt_checked_total - p_info->cnt));
+ else
+ ids = (int *) calloc(1, sizeof(int) * DETAIL_BULK_LENGTH);
+ p_retm_if(NULL == ids, "calloc() return NULL");
+
+ EINA_LIST_FOREACH(chistory_d->list, l, info)
+ {
+ ct_detail_history_info *l_info = (ct_detail_history_info *) info;
+ if (!l_info)
+ continue;
+ if (TRUE == l_info->checked)
+ {
+ if (base_count < p_info->cnt)
+ {
+ base_count++;
+ continue;
+ }
+
+ ids[count++] = l_info->plog_id;
+ if (DETAIL_BULK_LENGTH == count
+ || (count + p_info->cnt) == p_info->cnt_checked_total)
+ {
+ p_info->cnt += count;
+ break;
+ }
+ }
+ }
+ value = (double) p_info->cnt / (double) p_info->cnt_checked_total;
+ elm_progressbar_value_set(p_info->progressbar, value);
+ snprintf(percent, sizeof(percent), "%d%%",
+ (int) (100.0 * (double) p_info->cnt
+ / (double) p_info->cnt_checked_total));
+ snprintf(percent_total, sizeof(percent_total), "%d/%d", p_info->cnt,
+ p_info->cnt_checked_total);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext1", percent);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext2", percent_total);
+
+ p_info->update_ids = ids;
+ err = contacts_db_delete_records_async(_contacts_phone_log._uri, ids, count,
+ detail_history_delete_records_cb, chistory_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_delete_records_async() Failed(%d)", err);
+}
+
+static void detail_history_del_btn_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_history_data *chistory_d = (ct_history_data *) data;
+ ph_progress_info *p_info;
+
+ p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info));
+ p_retm_if(NULL == p_info, "calloc return NULL");
+
+ chistory_d->updating = true;
+
+ chistory_d->p_info = p_info;
+ p_info->cnt_checked_total = chistory_d->cnt_checked;
+ p_info->alive = true;
+ p_info->result = TRUE;
+ p_info->popup = phone_progressbar_popup(chistory_d->win, p_info,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_DELETING_LOGS));
+ detail_history_check_del(chistory_d);
+}
+
+static void detail_history_all_items_checked_set(Eina_List *list,
+ Eina_Bool checked)
+{
+ PH_TRACE;
+ Eina_List *l;
+ void *v_info;
+
+ EINA_LIST_FOREACH(list, l, v_info)
+ {
+ ct_detail_history_info *info = (ct_detail_history_info *) v_info;
+ if (NULL == info)
+ {
+ ERR("elm_object_item_data_get() return NULL");
+ continue;
+ }
+ info->checked = checked;
+ }
+}
+
+static void detail_history_edit_btn_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_history_data *chistory_d = (ct_history_data *) data;
+
+ chistory_d->view_mode = DETAIL_VIEW_MODE_CHECK;
+
+ if (chistory_d->popup)
+ {
+ evas_object_del(chistory_d->popup);
+ chistory_d->popup = NULL;
+ }
+
+ elm_genlist_decorate_mode_set(chistory_d->history_genlist, EINA_TRUE);
+
+ chistory_d->select_all_item = elm_genlist_item_prepend(
+ chistory_d->history_genlist, &history_itcs[HISTORY_ITC_SELECT_ALL],
+ chistory_d, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(chistory_d->select_all_item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ phone_show_notify(chistory_d->layout,
+ T_(PH_GET_TEXT_BASE_OP, PHTEXT_SELECT_LOGS));
+ detail_history_set_navi(chistory_d, DETAIL_VIEW_MODE_CHECK);
+}
+
+static void detail_history_popup_hide_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_history_data *chistory_d = (ct_history_data *) data;
+ evas_object_del(chistory_d->popup);
+ chistory_d->popup = NULL;
+ elm_object_tree_focus_allow_set(chistory_d->navi, EINA_TRUE);
+}
+
+static void detail_history_more_btn_clicked_cb(void *data)
+{
+ PH_TRACE;
+ int rotate;
+ ct_history_data *chistory_d = (ct_history_data *) data;
+ int x, y, w, h;
+
+ p_retm_if(NULL == chistory_d, "chistory_d is NULL");
+ if (chistory_d->popup)
+ detail_history_popup_hide_cb(chistory_d, NULL, NULL);
+
+ chistory_d->popup = elm_ctxpopup_add(chistory_d->navi);
+ p_retm_if(NULL == chistory_d->popup, "elm_ctxpopup_add() return NULL");
+
+ rotate = (int) evas_object_data_get(chistory_d->navi, "phone_rotate");
+ if (0 == rotate || 180 == rotate)
+ elm_ctxpopup_direction_priority_set(chistory_d->popup,
+ ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP,
+ ELM_CTXPOPUP_DIRECTION_LEFT, ELM_CTXPOPUP_DIRECTION_RIGHT);
+
+ elm_ctxpopup_item_append(chistory_d->popup, S_(PH_SYS_SK_DELETE), NULL,
+ detail_history_edit_btn_clicked_cb, chistory_d);
+ evas_object_smart_callback_add(chistory_d->popup, "dismissed",
+ detail_history_popup_hide_cb, chistory_d);
+
+ evas_object_geometry_get(chistory_d->navi, &x, &y, &w, &h);
+ evas_object_move(chistory_d->popup, 0, y + h);
+ evas_object_show(chistory_d->popup);
+}
+
+static void detail_history_cancel_btn_cb(void *data)
+{
+ PH_TRACE;
+ ct_history_data *chistory_d = (ct_history_data *) data;
+ phone_hide_notify(chistory_d->layout);
+
+ if (chistory_d->select_all_item)
+ {
+ elm_object_item_del(chistory_d->select_all_item);
+ chistory_d->select_all_item = NULL;
+ }
+ detail_history_all_items_checked_set(chistory_d->list, EINA_FALSE);
+ elm_genlist_decorate_mode_set(chistory_d->history_genlist, EINA_FALSE);
+ detail_history_set_navi(chistory_d, DETAIL_VIEW_MODE_HISTORY);
+}
+
+static void detail_history_set_navi(ct_history_data *chistory_d, int mode)
+{
+ PH_TRACE;
+ p_retm_if(NULL == chistory_d, "chistory_d is NULL");
+ chistory_d->cnt_checked = 0;
+ chistory_d->view_mode = mode;
+ p_retm_if(NULL == chistory_d->navi_item, "navi item is NULL");
+
+ phone_navi_item_reset(chistory_d->navi_item, chistory_d);
+
+ if (DETAIL_VIEW_MODE_HISTORY == mode)
+ {
+ if(chistory_d->ctrl_button)
+ {
+ elm_object_part_content_unset(chistory_d->layout, "toolbar");
+ evas_object_hide(chistory_d->ctrl_button);
+ }
+
+ if (chistory_d->list_count > 0)
+ {
+ chistory_d->menu_cb = detail_history_more_btn_clicked_cb;
+ }
+ }
+ else if (DETAIL_VIEW_MODE_CHECK == mode)
+ {
+ if(!chistory_d->ctrl_button)
+ {
+ chistory_d->ctrl_button = phone_create_toolbar_btn(chistory_d->layout,
+ S_(PH_SYS_SK_DELETE), detail_history_del_btn_clicked_cb,
+ chistory_d);
+ }
+
+ elm_object_part_content_set(chistory_d->layout, "toolbar",
+ chistory_d->ctrl_button);
+ elm_object_disabled_set(chistory_d->ctrl_button, EINA_TRUE);
+ chistory_d->back_cb = detail_history_cancel_btn_cb;
+ }
+}
+
+static void detail_history_check_update_selection_info(
+ ct_history_data *chistory_d)
+{
+ PH_TRACE;
+ if (chistory_d->cnt_checked == 0)
+ phone_show_notify(chistory_d->layout,
+ T_(PH_GET_TEXT_BASE_OP, PHTEXT_SELECT_LOGS));
+ else
+ {
+ char info_text[PH_TEXT_SHORT_LEN] = { 0 };
+ snprintf(info_text, sizeof(info_text), "%s (%d)",
+ S_(PH_SYS_POP_SELECTED), chistory_d->cnt_checked);
+ phone_show_notify(chistory_d->layout, info_text);
+ }
+}
+
+static void detail_history_check_update_button_status(
+ ct_history_data *chistory_d)
+{
+ PH_TRACE;
+ Eina_Bool disabled;
+ p_retm_if(NULL == chistory_d, "parameter is NULL");
+ p_retm_if(NULL == chistory_d->ctrl_button, "ctrl_item is NULL");
+
+ if (0 == chistory_d->list_count)
+ disabled = EINA_TRUE;
+ else if (chistory_d->history_genlist
+ && elm_genlist_decorate_mode_get(chistory_d->history_genlist))
+ {
+ if (0 < chistory_d->cnt_checked)
+ disabled = EINA_FALSE;
+ else
+ disabled = EINA_TRUE;
+ }
+ else
+ disabled = EINA_FALSE;
+
+ elm_object_disabled_set(chistory_d->ctrl_button, disabled);
+}
+
+static void detail_history_check_select_all(void *data, Eina_Bool checked)
+{
+ PH_TRACE;
+ Eina_List *l;
+ Elm_Object_Item * item;
+ ct_history_data *chistory_d = (ct_history_data *) data;
+ void *info;
+
+ if (checked)
+ chistory_d->cnt_checked = chistory_d->list_count;
+ else
+ chistory_d->cnt_checked = 0;
+
+ EINA_LIST_FOREACH(chistory_d->list, l, info)
+ {
+ ct_detail_history_info *l_info = (ct_detail_history_info *) info;
+ if (!l_info)
+ continue;
+ l_info->checked = checked;
+ }
+
+ item = elm_genlist_item_next_get(chistory_d->select_all_item);
+ while (item)
+ {
+ elm_genlist_item_update(item);
+ item = elm_genlist_item_next_get(item);
+ }
+
+ detail_history_check_update_selection_info(chistory_d);
+ detail_history_check_update_button_status(chistory_d);
+}
+
+static void detail_history_append_separate_date_index(
+ ct_history_data *chistory_d, void *data, int index)
+{
+ PH_TRACE;
+ ct_detail_history_info *l_info = (ct_detail_history_info *) data;
+ p_retm_if(NULL == l_info, "l_info is NULL");
+ p_retm_if(NULL == chistory_d, "chistory_d is NULL");
+ int type = phone_detail_log_get_date_type(l_info->plog_time,
+ l_info->plog_duration);
+
+ if (0 == index || chistory_d->pre_date_type != (type + 1))
+ {
+ chistory_d->pre_date_type = type + 1;
+ l_info->group_index = type;
+ Elm_Object_Item *item = elm_genlist_item_append(chistory_d->history_genlist,
+ &history_itcs[HISTORY_ITC_DATE], data, NULL,
+ ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+ elm_genlist_item_select_mode_set(item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+}
+static void detail_history_gl_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ ct_detail_history_info *l_info = (ct_detail_history_info *) data;
+ ct_history_data *chistory_d = (ct_history_data *) evas_object_data_get(obj,
+ "chistory_d");
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ if (elm_genlist_decorate_mode_get(chistory_d->history_genlist))
+ {
+ l_info->checked = !l_info->checked;
+ if (l_info->checked)
+ chistory_d->cnt_checked++;
+ else
+ chistory_d->cnt_checked--;
+
+ elm_genlist_item_fields_update((Elm_Object_Item *) event_info,
+ "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+
+ if (chistory_d->select_all_layout)
+ {
+ Evas_Object *check;
+ check = elm_object_part_content_get(chistory_d->select_all_layout,
+ "elm.icon");
+ if (chistory_d->cnt_checked == chistory_d->list_count)
+ elm_check_state_set(check, EINA_TRUE);
+ else
+ elm_check_state_set(check, EINA_FALSE);
+ }
+ detail_history_check_update_selection_info(chistory_d);
+ detail_history_check_update_button_status(chistory_d);
+ }
+}
+
+static void detail_history_fill_genlist(ct_history_data *chistory_d)
+{
+ PH_TRACE;
+ Evas_Object *genlist;
+ Evas_Object *layout;
+ Eina_List *l;
+ int count;
+ void *info;
+
+ layout = elm_object_part_content_get(chistory_d->layout, "contents");
+
+ if (NULL == chistory_d->history_genlist)
+ {
+ genlist = elm_genlist_add(layout);
+ elm_object_theme_set(genlist, chistory_d->th);
+ chistory_d->history_genlist = genlist;
+ evas_object_data_set(genlist, "chistory_d", chistory_d);
+ elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+ }
+ else
+ {
+ genlist = chistory_d->history_genlist;
+ elm_genlist_clear(genlist);
+ }
+
+ count = 0;
+ EINA_LIST_FOREACH(chistory_d->list, l, info)
+ {
+ ct_detail_history_info *l_info = (ct_detail_history_info *) info;
+ detail_history_append_separate_date_index(chistory_d, l_info, count);
+ elm_genlist_item_append(genlist, &history_itcs[HISTORY_ITC_HISTORY],
+ l_info, NULL, ELM_GENLIST_ITEM_NONE, detail_history_gl_sel,
+ l_info);
+ count++;
+ }
+}
+
+static void detail_history_check_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_history_data *chistory_d = (ct_history_data *) data;
+
+ if (elm_check_state_get(obj))
+ chistory_d->cnt_checked++;
+ else
+ chistory_d->cnt_checked--;
+
+ if (chistory_d->select_all_layout)
+ {
+ Evas_Object *check;
+ check = elm_object_part_content_get(chistory_d->select_all_layout,
+ "elm.icon");
+ if (chistory_d->cnt_checked == chistory_d->list_count)
+ elm_check_state_set(check, EINA_TRUE);
+ else
+ elm_check_state_set(check, EINA_FALSE);
+ }
+ detail_history_check_update_selection_info(chistory_d);
+ detail_history_check_update_button_status(chistory_d);
+}
+
+static const char *detail_history_gl_get_day_in_week(ct_detail_history_info &history_info)
+{
+ PH_TRACE;
+
+ time_t stime = history_info.plog_time - history_info.plog_duration;
+ struct tm *pTmp = localtime(&stime);
+
+ switch (pTmp->tm_wday)
+ {
+ case 0:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_SUNDAY);
+ case 1:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_MONDAY);
+ case 2:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_TUESDAY);
+ case 3:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_WEDNESDAY);
+ case 4:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_THURSDAY);
+ case 5:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_FRIDAY);
+ case 6:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_SATURDAY);
+ }
+ return NULL;
+}
+
+static char* detail_history_gl_sep_date_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ct_detail_history_info * history_info = (ct_detail_history_info *) data;
+ p_retvm_if(NULL == history_info, NULL, "history_info is NULL");
+ p_retvm_if(NULL == obj, NULL, "obj is NULL");
+
+ if (0 == strcmp(part, "elm.text"))
+ {
+ const char *when;
+ int index = history_info->group_index;
+
+ if (CT_GROUP_INDEX_TODAY == index)
+ when = S_(PH_SYS_BODY_TODAY);
+ else if (CT_GROUP_INDEX_YESTERDAY == index)
+ when = S_(PH_SYS_BODY_YESTERDAY);
+ else
+ when = detail_history_gl_get_day_in_week(*history_info);
+
+ ct_history_data *chistory_d = (ct_history_data *) evas_object_data_get(obj,
+ "chistory_d");
+ p_retvm_if(NULL == chistory_d, NULL, "chistory_d is NULL");
+ char *date_temp = phone_detail_log_get_date(chistory_d->hformatter,
+ history_info->plog_time);
+ if (date_temp)
+ {
+ char buf[PATH_MAX] = { 0 };
+ snprintf(buf, sizeof(buf), " %s (%s)", when, date_temp);
+ free(date_temp);
+ return strdup(buf);
+ }
+ else
+ return strdup(when);
+ }
+ else
+ return NULL;
+}
+
+static Evas_Object *detail_history_gl_select_all_icon_get(void *data,
+ Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ Evas_Object *check;
+ ct_history_data *chistory_d = (ct_history_data *) data;
+
+ p_retvm_if(NULL == chistory_d, NULL, "evas_object_data_get() return NULL");
+ if (0 == strcmp(part, "elm.icon"))
+ {
+ chistory_d->select_all_layout = phone_create_select_all(
+ chistory_d->history_genlist, S_(PH_SYS_BODY_SELECT_ALL),
+ detail_history_check_select_all, chistory_d);
+ check = elm_object_part_content_get(chistory_d->select_all_layout,
+ "elm.icon");
+ if (chistory_d->cnt_checked == chistory_d->list_count)
+ elm_check_state_set(check, EINA_TRUE);
+ return chistory_d->select_all_layout;
+ }
+ return NULL;
+}
+
+static void detail_history_gl_select_all_del(void *data, Evas_Object *obj)
+{
+ PH_TRACE;
+ ct_history_data *chistory_d = (ct_history_data *) data;
+ chistory_d->select_all_layout = NULL;
+}
+
+static Evas_Object *detail_history_gl_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ct_detail_history_info * l_detail_info = (ct_detail_history_info *) data;
+ char buf[PATH_MAX] = { 0 };
+ Evas_Object *ic;
+
+ if (0 == strcmp(part, "elm.icon.2"))
+ {
+ char *made_data = phone_detail_log_get_icon_type(
+ l_detail_info->plog_type);
+ snprintf(buf, sizeof(buf), "%s", made_data);
+ free(made_data);
+ }
+ else if (0 == strcmp(part, "elm.icon.1"))
+ {
+ char *made_data = phone_detail_log_get_icon_path_with_action(
+ l_detail_info->plog_type);
+ snprintf(buf, sizeof(buf), "%s", made_data);
+ free(made_data);
+ }
+ else if (0 == strcmp(part, "elm.edit.icon.1"))
+ {
+ ct_history_data *chistory_d = (ct_history_data *) evas_object_data_get(
+ obj, "chistory_d");
+ Evas_Object *check;
+ check = elm_check_add(obj);
+ p_retvm_if(NULL == check, NULL, "elm_check_add() return NULL");
+ elm_check_state_pointer_set(check, &l_detail_info->checked);
+ evas_object_propagate_events_set(check, EINA_FALSE);
+ evas_object_smart_callback_add(check, "changed",
+ detail_history_check_changed_cb, chistory_d);
+ return check;
+ }
+ else
+ return NULL;
+ ic = elm_icon_add(obj);
+ p_retvm_if(NULL == ic, NULL, "elm_icon_add() return NULL");
+ elm_image_file_set(ic, buf, NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ return ic;
+}
+
+static char* detail_history_gl_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ct_detail_history_info * history_info = (ct_detail_history_info *) data;
+ ct_history_data *chistory_d;
+ char *time;
+ char *duration;
+ char buf[PATH_MAX] = { 0 };
+ chistory_d = (ct_history_data *) evas_object_data_get(obj, "chistory_d");
+
+ if (0 == strcmp(part, "elm.text.1"))
+ {
+ snprintf(buf, sizeof(buf), "%s", history_info->plog_number);
+ return strdup(buf);
+ }
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+ if (TRUE == phone_detail_log_is_call_ing_type(history_info->plog_type))
+ {
+ duration = phone_detail_log_get_duration_from_number(
+ history_info->plog_duration);
+ snprintf(buf, sizeof(buf), "%s", duration);
+ free(duration);
+ return strdup(buf);
+ }
+ else if (TRUE == phone_detail_log_is_sms_type(history_info->plog_type)
+ || TRUE
+ == phone_detail_log_is_mms_type(
+ history_info->plog_type))
+ {
+ if (history_info->plog_shortmsg && *history_info->plog_shortmsg)
+ {
+ snprintf(buf, sizeof(buf), "%s", history_info->plog_shortmsg);
+ return strdup(buf);
+ }
+ }
+ else if (TRUE
+ == phone_detail_log_is_email_type(history_info->plog_type))
+ {
+ if (history_info->plog_shortmsg && *history_info->plog_shortmsg)
+ {
+ snprintf(buf, sizeof(buf), "%s", history_info->plog_shortmsg);
+ return strdup(buf);
+ }
+ }
+ }
+ else if (0 == strcmp(part, "elm.text.3"))
+ {
+ time = phone_detail_log_get_time(chistory_d->hformatter,
+ history_info->plog_time);
+ snprintf(buf, sizeof(buf), "%s", time);
+ free(time);
+ return strdup(buf);
+ }
+ return NULL;
+}
+
+void ct_detail_history_create_itcs()
+{
+ PH_TRACE;
+ history_itcs[HISTORY_ITC_SELECT_ALL].func.content_get =
+ detail_history_gl_select_all_icon_get;
+ history_itcs[HISTORY_ITC_SELECT_ALL].func.del =
+ detail_history_gl_select_all_del;
+ history_itcs[HISTORY_ITC_SELECT_ALL].decorate_all_item_style = NULL;
+
+ history_itcs[HISTORY_ITC_NUM_UTIL_BTN].func.content_get =
+ ct_detail_gl_number_util_icon_get;
+
+ history_itcs[HISTORY_ITC_DATE].func.text_get =
+ detail_history_gl_sep_date_label_get;
+
+ history_itcs[HISTORY_ITC_HISTORY].func.text_get =
+ detail_history_gl_label_get;
+ history_itcs[HISTORY_ITC_HISTORY].func.content_get =
+ detail_history_gl_icon_get;
+ history_itcs[HISTORY_ITC_HISTORY].decorate_all_item_style = "edit_default";
+}
+
+void ct_detail_history_load_data(ct_history_data *chistory_d)
+{
+ PH_TRACE;
+ Eina_List *list = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_list_h list_phonelog = NULL;
+ contacts_record_h record_phonelog = NULL;
+ int count = 0;
+
+ err = phone_cts_get_list(_contacts_person_phone_log._uri,
+ _contacts_person_phone_log.person_id, chistory_d->person_id,
+ &list_phonelog);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "phone_cts_get_list() Failed(%d)",
+ err);
+
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ char *msg = NULL;
+ char *number;
+ ct_detail_history_info *history_info;
+
+ err = contacts_list_get_current_record_p(list_phonelog,
+ &record_phonelog);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+ history_info = (ct_detail_history_info *) calloc(1,
+ sizeof(ct_detail_history_info));
+
+ err = contacts_record_get_str_p(record_phonelog,
+ _contacts_person_phone_log.address, &number);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int(address) Failed(%d)", err);
+ history_info->plog_number = SAFE_STRDUP(number);
+ err = contacts_record_get_int(record_phonelog,
+ _contacts_person_phone_log.log_id, &(history_info->plog_id));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int(id) Failed(%d)", err);
+ err = contacts_record_get_int(record_phonelog,
+ _contacts_person_phone_log.log_type,
+ &(history_info->plog_type));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int(log_type) Failed(%d)", err);
+ err = contacts_record_get_int(record_phonelog,
+ _contacts_person_phone_log.log_time,
+ &(history_info->plog_time));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int(log_time) Failed(%d)", err);
+ err = contacts_record_get_int(record_phonelog,
+ _contacts_person_phone_log.extra_data1,
+ &(history_info->plog_duration));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int(duration) Failed(%d)", err);
+ err = contacts_record_get_str_p(record_phonelog,
+ _contacts_person_phone_log.extra_data2, &msg);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int(shortmsg) Failed(%d)", err);
+ if (msg)
+ {
+ unsigned int i;
+ char temp[PH_TEXT_MAX_LEN];
+ for (i = 0; i < strlen(msg); i++)
+ {
+ if (msg[i] == '\n')
+ temp[i] = ' ';
+ else
+ temp[i] = msg[i];
+ }
+ temp[i] = '\0';
+ history_info->plog_shortmsg = strdup(temp);
+ }
+ list = eina_list_append(list, (void*) history_info);
+ count++;
+ err = contacts_list_next(list_phonelog);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ }
+
+ chistory_d->list = list;
+ chistory_d->list_count = count;
+}
+
+static void detail_history_view_resize(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *layout;
+ Evas_Object *scroller;
+ Evas_Object *box;
+ int rotate;
+ ct_history_data *chistory_d = (ct_history_data *) data;
+
+ if (0 < chistory_d->list_count)
+ return;
+
+ rotate = (int) evas_object_data_get(chistory_d->navi, "phone_rotate");
+
+ if (90 == rotate || 270 == rotate)
+ {
+ layout = elm_object_part_content_get(chistory_d->layout, "contents");
+ p_retm_if(NULL == layout, "elm_object_part_content_get() return NULL");
+ scroller = elm_object_part_content_get(layout, "elm.swallow.content");
+ p_retm_if(NULL == scroller,
+ "elm_object_part_content_get() return NULL");
+ box = elm_object_content_get(scroller);
+ p_retm_if(NULL == box, "elm_object_content_get() return NULL");
+ elm_box_unpack(box, chistory_d->noc);
+ p_retm_if(NULL == chistory_d->noc, "elm_box_unpack() return NULL");
+ evas_object_size_hint_weight_set(chistory_d->noc, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(chistory_d->noc, EVAS_HINT_FILL, 0.0);
+ elm_box_pack_end(box, chistory_d->noc);
+ elm_object_content_set(scroller, box);
+ evas_object_size_hint_min_set(box, 720, 650);
+ elm_object_part_content_set(layout, "elm.swallow.content", scroller);
+ }
+ else if (0 == rotate || 180 == rotate)
+ {
+ layout = elm_object_part_content_get(chistory_d->layout, "contents");
+ p_retm_if(NULL == layout, "elm_object_part_content_get() return NULL");
+ scroller = elm_object_part_content_get(layout, "elm.swallow.content");
+ p_retm_if(NULL == scroller,
+ "elm_object_part_content_get() return NULL");
+ box = elm_object_content_get(scroller);
+ p_retm_if(NULL == box, "elm_object_content_get() return NULL");
+ elm_box_unpack(box, chistory_d->noc);
+ p_retm_if(NULL == chistory_d->noc, "elm_box_unpack() return NULL");
+ evas_object_size_hint_weight_set(chistory_d->noc, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(chistory_d->noc, EVAS_HINT_FILL, 0.2);
+ elm_box_pack_end(box, chistory_d->noc);
+ elm_object_content_set(scroller, box);
+ evas_object_size_hint_min_set(box, 720, 650);
+ elm_object_part_content_set(layout, "elm.swallow.content", scroller);
+ }
+}
+
+static Eina_Bool detail_history_refresh_view(void *data)
+{
+ PH_TRACE;
+ ct_history_data *chistory_d = (ct_history_data *) data;
+ Evas_Object *layout;
+
+ phone_hide_notify(chistory_d->layout);
+ if (chistory_d->select_all_item
+ && DETAIL_VIEW_MODE_CHECK != chistory_d->view_mode)
+ {
+ elm_object_item_del(chistory_d->select_all_item);
+ chistory_d->select_all_item = NULL;
+ }
+ ct_detail_history_load_data(chistory_d);
+
+ layout = elm_object_part_content_get(chistory_d->layout, "contents");
+
+ if (0 < chistory_d->list_count)
+ {
+ detail_history_fill_genlist(chistory_d);
+ elm_object_part_content_set(layout, "elm.swallow.content",
+ chistory_d->history_genlist);
+ }
+ else
+ {
+ if (!chistory_d->scroller)
+ {
+ Evas_Object *scroller;
+ Evas_Object *nocontent;
+ Evas_Object *box;
+ char buf[PH_TEXT_MAX_LEN] = { 0, };
+
+ scroller = elm_scroller_add(layout);
+ p_retvm_if(NULL == scroller, ECORE_CALLBACK_CANCEL,
+ "elm_scroller_add() return NULL");
+ elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
+ elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_AUTO);
+
+ box = elm_box_add(scroller);
+ p_retvm_if(NULL == box, ECORE_CALLBACK_CANCEL,
+ "elm_box_add() return NULL");
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0.0);
+ elm_object_content_set(scroller, box);
+ evas_object_show(box);
+
+ nocontent = elm_layout_add(box);
+ p_retvm_if(NULL == nocontent, ECORE_CALLBACK_CANCEL,
+ "elm_layout_add() return NULL");
+ evas_object_size_hint_weight_set(nocontent, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(nocontent, EVAS_HINT_FILL, 0.2);
+ elm_layout_file_set(nocontent, NOCONTENT_LAYOUT_EDJ,
+ "nocontent_layout");
+ snprintf(buf, sizeof(buf), "%s<br>%s<br>",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_NO_HISTORIES),
+ T_(CT_GET_TEXT_ERR, CTTEXT_NO_HISTORIES_HELP_TEXT));
+ elm_box_pack_end(box, nocontent);
+ evas_object_size_hint_min_set(box, 720, 650);
+ evas_object_show(nocontent);
+ elm_object_part_text_set(nocontent, "elm.text", buf);
+ chistory_d->scroller = scroller;
+ chistory_d->noc = nocontent;
+ }
+ evas_object_show(chistory_d->scroller);
+ elm_object_part_content_set(layout, "elm.swallow.content",
+ chistory_d->scroller);
+ }
+
+ detail_history_set_navi(chistory_d, DETAIL_VIEW_MODE_HISTORY);
+ chistory_d->idler = NULL;
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void detail_history_free_list(ct_history_data *chistory_d)
+{
+ PH_TRACE;
+ void *info;
+
+ EINA_LIST_FREE(chistory_d->list, info)
+ {
+ ct_detail_history_info *l_info = (ct_detail_history_info *) info;
+ if (NULL == l_info)
+ continue;
+ free(l_info->plog_number);
+ free(l_info->plog_shortmsg);
+ free(l_info);
+ }
+ chistory_d->list = NULL;
+}
+
+static void detail_history_view_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ct_history_data *chistory_d = (ct_history_data *) data;
+
+ if (0 < chistory_d->list_count)
+ detail_history_free_list(chistory_d);
+
+ if (chistory_d->history_genlist)
+ evas_object_del(chistory_d->history_genlist);
+ if (chistory_d->noc)
+ evas_object_del(chistory_d->noc);
+ if (chistory_d->scroller)
+ evas_object_del(chistory_d->scroller);
+ if (chistory_d->popup)
+ evas_object_del(chistory_d->popup);
+ if (chistory_d->th)
+ {
+ elm_theme_extension_del(chistory_d->th, DETAIL_THEME_EDJ);
+ elm_theme_free(chistory_d->th);
+ }
+
+ err = contacts_db_remove_changed_cb(_contacts_phone_log._uri,
+ ct_detail_history_changed_cb, chistory_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_remove_changed_cb() Failed(%d)", err);
+ evas_object_event_callback_del(chistory_d->layout, EVAS_CALLBACK_RESIZE,
+ detail_history_view_resize);
+
+ free(chistory_d);
+
+}
+
+void ct_detail_history_fill_layout(ct_history_data *chistory_d)
+{
+ PH_TRACE;
+ Evas_Object *base;
+ Evas_Object *layout;
+
+ base = elm_layout_add(chistory_d->navi);
+ p_retm_if(NULL == base, "elm_layout_add() return NULL");
+
+ elm_layout_file_set(base, SELECTION_INFO_EDJ, "selectioninfo_layout");
+ layout = phone_create_base_layout(base, false);
+ elm_object_part_content_set(base, "contents", layout);
+
+ chistory_d->layout = base;
+
+ evas_object_event_callback_add(chistory_d->layout, EVAS_CALLBACK_RESIZE,
+ detail_history_view_resize, chistory_d);
+
+ if (0 < chistory_d->list_count)
+ {
+ detail_history_fill_genlist(chistory_d);
+ elm_object_part_content_set(layout, "elm.swallow.content",
+ chistory_d->history_genlist);
+ }
+ else
+ {
+ if (!chistory_d->scroller)
+ {
+ Evas_Object *scroller;
+ Evas_Object *nocontent;
+ Evas_Object *box;
+ char buf[PH_TEXT_MAX_LEN] = { 0, };
+
+ scroller = elm_scroller_add(layout);
+ p_retm_if(NULL == scroller, "elm_scroller_add() return NULL");
+ elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
+ elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_AUTO);
+
+ box = elm_box_add(scroller);
+ p_retm_if(NULL == box, "elm_box_add() return NULL");
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0.0);
+ elm_object_content_set(scroller, box);
+ evas_object_show(box);
+
+ nocontent = elm_layout_add(box);
+ p_retm_if(NULL == nocontent, "elm_layout_add() return NULL");
+ evas_object_size_hint_weight_set(nocontent, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(nocontent, EVAS_HINT_FILL, 0.2);
+ elm_layout_file_set(nocontent, NOCONTENT_LAYOUT_EDJ,
+ "nocontent_layout");
+ snprintf(buf, sizeof(buf), "%s<br>%s<br>",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_NO_HISTORIES),
+ T_(CT_GET_TEXT_ERR, CTTEXT_NO_HISTORIES_HELP_TEXT));
+ elm_box_pack_end(box, nocontent);
+ evas_object_size_hint_min_set(box, 720, 650);
+ evas_object_show(nocontent);
+ elm_object_part_text_set(nocontent, "elm.text", buf);
+ chistory_d->noc = nocontent;
+ chistory_d->scroller = scroller;
+ }
+ evas_object_show(chistory_d->scroller);
+ elm_object_part_content_set(layout, "elm.swallow.content",
+ chistory_d->scroller);
+ }
+
+ chistory_d->navi_item = elm_naviframe_item_push(chistory_d->navi, "History",
+ NULL, NULL, chistory_d->layout, NULL);
+ elm_naviframe_item_title_visible_set(chistory_d->navi_item, EINA_TRUE);
+ evas_object_event_callback_add(chistory_d->layout, EVAS_CALLBACK_DEL,
+ detail_history_view_delete_cb, chistory_d);
+ detail_history_set_navi(chistory_d, DETAIL_VIEW_MODE_HISTORY);
+}
+
diff --git a/lib/details/ct-detail-history.h b/lib/details/ct-detail-history.h
new file mode 100755
index 0000000..20ce9a6
--- /dev/null
+++ b/lib/details/ct-detail-history.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CONTACTS_DETAIL_HISTORY_H__
+#define __CONTACTS_DETAIL_HISTORY_H__
+
+#include "phone-common.h"
+
+void ct_detail_history_create_itcs();
+void ct_detail_history_load_data(ct_history_data *chistory_d);
+void ct_detail_history_fill_layout(ct_history_data *chistory_d);
+void ct_detail_history_changed_cb(const char *view_uri, void *data);
+
+#endif //__CONTACTS_DETAIL_HISTORY_H__
diff --git a/lib/details/ct-detail-main.cpp b/lib/details/ct-detail-main.cpp
new file mode 100755
index 0000000..0e74eec
--- /dev/null
+++ b/lib/details/ct-detail-main.cpp
@@ -0,0 +1,887 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <ui-gadget-module.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <fcntl.h>
+#include <efl_assist.h>
+
+#include "phone.h"
+#include "ct-detail.h"
+#include "ct-detail-utils.h"
+#include "ct-detail-view.h"
+#include "ct-input-view.h"
+#include "ct-input-utils.h"
+#include "ViewManager.h"
+
+static int create_ug_detail_view(Evas_Object *base, int request,
+ ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == base, FALSE, "base is NULL");
+
+ cdetail_d->navi = elm_naviframe_add(base);
+
+ p_retvm_if(NULL == cdetail_d->navi, FALSE,
+ "elm_naviframe_add() return NULL");
+
+ ea_object_event_callback_add(cdetail_d->navi, EA_CALLBACK_BACK, &Common::ViewManager::onBack, cdetail_d->win);
+ ea_object_event_callback_add(cdetail_d->navi, EA_CALLBACK_MORE, &Common::ViewManager::onMenu, NULL);
+ elm_naviframe_prev_btn_auto_pushed_set(cdetail_d->navi, EINA_FALSE);
+ evas_object_show(cdetail_d->navi);
+ elm_object_part_content_set(base, "elm.swallow.content", cdetail_d->navi);
+
+ cdetail_d->ug_detail = true;
+ if (CT_UG_REQUEST_DETAIL == request)
+ {
+ Evas_Object *content;
+
+ content = ct_detail_create_content(cdetail_d);
+ if (NULL == content)
+ return FALSE;
+
+ cdetail_d->navi_item = elm_naviframe_item_push(cdetail_d->navi, NULL,
+ NULL, NULL, content, NULL);
+ elm_naviframe_item_title_visible_set(cdetail_d->navi_item, EINA_FALSE);
+ ct_detail_set_navi(cdetail_d, DETAIL_VIEW_MODE_INFO);
+ }
+ else
+ {
+ int contact_id = 0;
+ contacts_record_h record_contact = cdetail_d->contact;
+ if (record_contact)
+ contacts_record_get_int(record_contact, _contacts_contact.id,
+ &contact_id);
+
+ if (NULL == cdetail_d->list_contacts)
+ cdetail_d->list_contacts = eina_list_append(
+ cdetail_d->list_contacts, cdetail_d->contact);
+
+ ct_input_push_navi_content(cdetail_d, record_contact, contact_id);
+ }
+ return TRUE;
+}
+
+static int __detail_set_contact_data(contacts_record_h contact, const char *data_type,
+ char *value)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ PH_DBG("data_type %s value %s", data_type, value);
+
+ if (strcmp(CT_OPERATION_PHONE, data_type) == 0)
+ {
+ err = contacts_record_create(_contacts_number._uri, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record, _contacts_number.type,
+ CONTACTS_NUMBER_TYPE_HOME | CONTACTS_NUMBER_TYPE_CELL);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_set_str(record, _contacts_number.number, value);
+ contacts_record_add_child_record(contact, _contacts_contact.number,
+ record);
+ }
+ else if (strcmp(CT_OPERATION_EMAIL, data_type) == 0)
+ {
+ err = contacts_record_create(_contacts_email._uri, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record, _contacts_email.type,
+ CONTACTS_EMAIL_TYPE_HOME);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_set_str(record, _contacts_email.email, value);
+ contacts_record_add_child_record(contact, _contacts_contact.email,
+ record);
+ }
+ else if (strcmp(CT_OPERATION_URL, data_type) == 0)
+ {
+ err = contacts_record_create(_contacts_url._uri, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record, _contacts_url.type,
+ CONTACTS_URL_TYPE_HOME);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_set_str(record, _contacts_url.url, value);
+ contacts_record_add_child_record(contact, _contacts_contact.url,
+ record);
+ }
+
+ return 0;
+}
+
+static int __detail_parse_bundle_by_operation(service_h service,
+ char* operation, ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ char* val = NULL;
+ char* val1 = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ PH_DBG("operaion = %s", operation);
+ cdetail_d->service_operation = service;
+
+ if (strcmp(operation, CT_OPERATION_SOCIAL_VIEW) == 0)
+ {
+ service_get_extra_data(service, CT_OPERATION_ITEM_TYPE, &val);
+ if (val)
+ {
+ if (strcmp(val, CT_OPERATION_ITEM_TYPE_PERSON) != 0)
+ {
+ ERR("CT_OPERATION_ITEM_TYPE_PERSON is not matched %s", val);
+ free(val);
+ return -1;
+ }
+ free(val);
+ val = NULL;
+
+ service_get_extra_data(service, CT_OPERATION_ITEM_ID, &val1);
+ if (val1)
+ {
+ cdetail_d->person_id = atoi(val1);
+ free(val1);
+ return CT_UG_REQUEST_DETAIL;
+ }
+ else
+ {
+ ERR("CT_OPERATION_ITEM_ID is mandatory");
+ return -1;
+ }
+
+ }
+ else
+ {
+ ERR("CT_OPERATION_ITEM_TYPE is mandatory");
+ return -1;
+ }
+ }
+ else if (strcmp(operation, CT_OPERATION_SOCIAL_ADD) == 0)
+ {
+ service_get_extra_data(service, CT_OPERATION_ITEM_TYPE, &val);
+ if (val)
+ {
+ if (strcmp(val, CT_OPERATION_ITEM_TYPE_CONTACT) != 0)
+ {
+ ERR("CT_OPERATION_ITEM_TYPE_CONTACT is not matched %s", val);
+ free(val);
+ return -1;
+ }
+ free(val);
+ val = NULL;
+ }
+ else
+ {
+ ERR("CT_OPERATION_ITEM_TYPE is mandatory");
+ return -1;
+ }
+
+ service_get_extra_data(service, CT_OPERATION_PHONE, &val1);
+ if (val1)
+ {
+ if (NULL == cdetail_d->contact)
+ {
+ err = contacts_record_create(_contacts_contact._uri,
+ &(cdetail_d->contact));
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_create failed %s", err);
+ return -1;
+ }
+ }
+
+ __detail_set_contact_data(cdetail_d->contact, CT_OPERATION_PHONE,
+ val1);
+
+ free(val1);
+ val1 = NULL;
+ }
+
+ service_get_extra_data(service, CT_OPERATION_EMAIL, &val1);
+ if (val1)
+ {
+ if (NULL == cdetail_d->contact)
+ {
+ err = contacts_record_create(_contacts_contact._uri,
+ &(cdetail_d->contact));
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_create failed %s", err);
+ return -1;
+ }
+ }
+
+ __detail_set_contact_data(cdetail_d->contact, CT_OPERATION_EMAIL,
+ val1);
+
+ free(val1);
+ val1 = NULL;
+ }
+
+ service_get_extra_data(service, CT_OPERATION_URL, &val1);
+ if (val1)
+ {
+ if (NULL == cdetail_d->contact)
+ {
+ err = contacts_record_create(_contacts_contact._uri,
+ &(cdetail_d->contact));
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_create failed %s", err);
+ return -1;
+ }
+ }
+ __detail_set_contact_data(cdetail_d->contact, CT_OPERATION_URL,
+ val1);
+
+ free(val1);
+ val1 = NULL;
+ }
+
+ return CT_UG_REQUEST_ADD;
+ }
+ else if (strcmp(operation, CT_OPERATION_SOCIAL_EDIT) == 0)
+ {
+ service_get_extra_data(service, CT_OPERATION_ITEM_TYPE, &val);
+ if (val)
+ {
+ if (strcmp(val, CT_OPERATION_ITEM_TYPE_PERSON) != 0)
+ {
+ ERR("CT_OPERATION_ITEM_TYPE_CONTACT is not matched %s", val);
+ free(val);
+ return -1;
+ }
+
+ service_get_extra_data(service, CT_OPERATION_ITEM_ID, &val1);
+ if (val1)
+ {
+ PH_DBG("person id %s", val1);
+ cdetail_d->person_id = atoi(val1);
+ free(val1);
+ val1 = NULL;
+
+ if (cdetail_d->person_id)
+ { // From OSP
+ Eina_List *list_contact =
+ ctui_person_get_writable_contact_list(
+ cdetail_d->person_id);
+ if (list_contact)
+ {
+ cdetail_d->contact = (contacts_record_h) list_contact->data;
+ eina_list_free(list_contact);
+ }
+ }
+ }
+ else
+ {
+ ERR("CT_OPERATION_ITEM_ID is mandatory");
+ free(val);
+ return -1;
+ }
+ free(val);
+ val = NULL;
+ }
+ else
+ {
+ ERR("CT_OPERATION_ITEM_TYPE is mandatory");
+ return -1;
+ }
+
+ service_get_extra_data(service, CT_OPERATION_PHONE, &val1);
+ if (val1)
+ {
+ __detail_set_contact_data(cdetail_d->contact, CT_OPERATION_PHONE,
+ val1);
+
+ free(val1);
+ val1 = NULL;
+ }
+
+ service_get_extra_data(service, CT_OPERATION_EMAIL, &val1);
+ if (val1)
+ {
+ __detail_set_contact_data(cdetail_d->contact, CT_OPERATION_EMAIL,
+ val1);
+
+ free(val1);
+ val1 = NULL;
+ }
+
+ service_get_extra_data(service, CT_OPERATION_URL, &val1);
+ if (val1)
+ {
+ __detail_set_contact_data(cdetail_d->contact, CT_OPERATION_URL,
+ val1);
+
+ free(val1);
+ val1 = NULL;
+ }
+ return CT_UG_REQUEST_EDIT;
+ }
+ else
+ {
+ ERR("operation wrong");
+ return -1;
+ }
+}
+
+static void *detail_on_create(ui_gadget_h ug, enum ug_mode mode,
+ service_h service, void *priv)
+{
+ PH_TRACE;
+ int ret;
+ int request = 0;
+ Evas_Object *bg;
+ Evas_Object *base;
+ Evas_Object *parent;
+ int err;
+ ct_detail_data *cdetail_d = (ct_detail_data *) priv;
+ char *operation = NULL;
+ cdetail_d->base_ab = -1;
+
+ p_retvm_if(NULL == ug || NULL == priv, NULL,
+ "The parameter is invalid(ug=%p, priv=%p)", ug, priv);
+
+ cdetail_d->win = (Evas_Object *) ug_get_window();
+ parent = (Evas_Object *) ug_get_parent_layout(ug);
+ p_retvm_if(NULL == parent, NULL, "ug_get_parent_layout() return NULL");
+ cdetail_d->ug = ug;
+
+ bindtextdomain(PACKAGE, LOCALEDIR);
+
+ err = contacts_connect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_connect2() Failed(%d)",
+ err);
+ PH_DBG("contacts_connect()");
+
+ service_get_operation(service, &operation);
+
+ if (operation)
+ {
+ request = __detail_parse_bundle_by_operation(service, operation,
+ cdetail_d);
+ free(operation);
+ if (request < 0)
+ {
+ ERR("__detail_parse_bundle_by_operation invalid parameter");
+ request = ct_detail_parse_bundle(service, cdetail_d, &ret);
+ }
+ }
+ else
+ request = ct_detail_parse_bundle(service, cdetail_d, &ret);
+
+ if (UG_MODE_FULLVIEW == mode)
+ base = phone_create_base_layout(parent, true);
+ else
+ base = phone_create_base_layout(parent, false);
+
+ if (-2 == ret)
+ {
+ Evas_Object *popup;
+ popup = elm_popup_add(base);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_object_text_set(popup, S_(PH_SYS_BODY_SELECTED_DATA_NOT_FOUND));
+ elm_popup_timeout_set(popup, 1.5);
+ evas_object_show(popup);
+ evas_object_smart_callback_add(popup, "timeout", ctui_list_ug_hide_cb,
+ cdetail_d->ug);
+ return base;
+ }
+ p_retvm_if(request < 0, NULL, "ct_detail_parse_bundle() Failed(%d)",
+ request);
+
+ bg = phone_create_bg(base);
+ if (NULL == bg)
+ {
+ ERR("phone_create_bg() return NULL");
+ evas_object_del(base);
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_disconnect2() Failed(%d)", err);
+ return NULL;
+ }
+
+ if (!create_ug_detail_view(base, request, cdetail_d))
+ {
+ evas_object_del(base);
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_disconnect2() Failed(%d)", err);
+ }
+ return base;
+}
+
+static void detail_on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ int err;
+ ct_detail_data *cdetail_d = (ct_detail_data *) priv;
+ p_retm_if(NULL == ug, "The parameter is invalid(ug=%p)", ug);
+
+ if (cdetail_d && !cdetail_d->navi)
+ free(cdetail_d);
+
+ evas_object_del((Evas_Object *) ug_get_layout(ug));
+
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_disconnect2() Failed(%d)",
+ err);
+}
+
+static void detail_on_message(ui_gadget_h ug, service_h msg, service_h service,
+ void *priv)
+{
+ PH_TRACE;
+ char* val = NULL;
+ ct_detail_data *cdetail_d = (ct_detail_data *) priv;
+
+ if (UG_MODE_FRAMEVIEW == ug_get_mode(ug))
+ {
+ if (msg)
+ {
+ service_get_extra_data(service, "key_event", &val);
+ if (val && CTUG_MSG_KEY_END == atoi(val))
+ {
+ if (cdetail_d->popup)
+ {
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+ }
+ else
+ {
+ if (elm_naviframe_top_item_get(cdetail_d->navi)
+ == cdetail_d->navi_item)
+ {
+ ug_destroy_me(ug);
+ }
+ else
+ elm_naviframe_item_pop(cdetail_d->navi);
+ }
+ }
+ free(val);
+ }
+ }
+}
+
+static void detail_on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ contacts_name_display_order_e name_display_order;
+ ct_detail_data *cdetail_d = (ct_detail_data *) priv;
+ contacts_setting_get_name_display_order(&name_display_order);
+ cdetail_d->order_display = (int) name_display_order;
+}
+
+static void detail_on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ contacts_name_display_order_e order;
+ ct_detail_data *cdetail_d = (ct_detail_data *) priv;
+
+ contacts_setting_get_name_display_order(&order);
+ if (cdetail_d->order_display != order)
+ ctui_detail_genlist_update(cdetail_d);
+}
+
+static void detail_on_event(ui_gadget_h ug, enum ug_event event,
+ service_h service, void *priv)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) priv;
+ switch (event)
+ {
+ case UG_EVENT_ROTATE_PORTRAIT:
+ case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+ break;
+ case UG_EVENT_ROTATE_LANDSCAPE:
+ case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+ break;
+ case UG_EVENT_LANG_CHANGE:
+ ct_detail_view_language_changed(cdetail_d);
+ break;
+ default:
+ break;
+ }
+}
+
+extern "C" API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d;
+
+ p_retvm_if(!ops, -1, "ops is NULL");
+
+ cdetail_d = (ct_detail_data *) calloc(1, sizeof(ct_detail_data));
+ p_retvm_if(!cdetail_d, -1, "UG data is NULL, Not enough memory");
+
+ ops->create = detail_on_create;
+ ops->start = NULL;
+ ops->pause = detail_on_pause;
+ ops->resume = detail_on_resume;
+ ops->destroy = detail_on_destroy;
+ ops->message = detail_on_message;
+ ops->event = detail_on_event;
+ ops->key_event = NULL;
+ ops->priv = cdetail_d;
+ ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+ return 0;
+}
+
+extern "C" API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ p_retm_if(!ops, "ops is NULL");
+
+ ops->priv = NULL;
+}
+
+API int ctui_create_detail_view(ct_list_data *clist_d,
+ ct_person_list *person_info)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d;
+ Evas_Object *content;
+
+ cdetail_d = (ct_detail_data *) calloc(1, sizeof(ct_detail_data));
+ p_retvm_if(!cdetail_d, -1, "cdetail_d is NULL, Not enough memory");
+
+ ctui_ld_to_dd(clist_d, cdetail_d);
+ cdetail_d->person_id = person_info->id;
+ cdetail_d->titem = NULL;
+ cdetail_d->ctrl_button = NULL;
+ content = ct_detail_create_content(cdetail_d);
+ if (NULL == content)
+ {
+ ERR("ct_detail_create_content() Failed");
+ free(cdetail_d);
+ return -1;
+ }
+
+ cdetail_d->navi_item = elm_naviframe_item_push(cdetail_d->navi, NULL, NULL,
+ NULL, content, NULL);
+ elm_naviframe_item_title_visible_set(cdetail_d->navi_item, EINA_FALSE);
+ ct_detail_set_navi(cdetail_d, DETAIL_VIEW_MODE_INFO);
+
+ PH_DBG("##### [TSP_TEST] list->detail end#####");
+ return 0;
+}
+
+API void ct_detail_view_language_changed(ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == cdetail_d, "parameter(cdetail_d) is NULL");
+
+ // 1. update title
+ if (cdetail_d->navi_item)
+ elm_object_item_text_set(cdetail_d->navi_item,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_DETAILS));
+
+ // 2. update content
+ ct_detail_refresh_view(cdetail_d);
+
+ // 3. update controlbar
+
+ if (cdetail_d->has_input)
+ ct_input_language_changed(cdetail_d->navi);
+}
+
+API int ctui_create_input_view(ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ int contact_id = 0;
+ char addressbook_name[50] = { 0, };
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record_contact_clone = NULL;
+
+ p_retvm_if(!cdetail_d, -1, "cdetail_d is NULL");
+ if (cdetail_d->contact)
+ {
+ err = contacts_record_clone(cdetail_d->contact, &record_contact_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_clone() Failed(%d)", err);
+ return 0;
+ }
+ contacts_record_get_int(cdetail_d->contact, _contacts_contact.id,
+ &contact_id);
+ }
+ else if (cdetail_d->person_id)
+ {
+ Eina_List *list_contact;
+ list_contact = ctui_person_get_writable_contact_list(
+ cdetail_d->person_id);
+ if (NULL == list_contact)
+ {
+ err = contacts_record_create(_contacts_contact._uri,
+ &record_contact_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_create() Failed(%d)", err);
+ return 0;
+ }
+ }
+ else
+ {
+ err = contacts_record_clone(cdetail_d->contact,
+ &record_contact_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_clone() Failed(%d)", err);
+ return 0;
+ }
+ ctui_free_record_list(list_contact);
+ }
+ }
+
+ ctui_get_addressbook_name(ct_input_get_base_ab(), addressbook_name,
+ sizeof(addressbook_name));
+ PH_DBG("addressbook_name : %s", addressbook_name);
+
+ ct_input_push_navi_content(cdetail_d, record_contact_clone, contact_id);
+ return 0;
+}
+
+API Evas_Object* ctui_contacts_viewer(Evas_Object *win, Evas_Object *navi,
+ int personid_vcardidx, const char *vcard_path)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *bg;
+ Evas_Object *base = NULL;
+ Evas_Object *content;
+ Evas_Object *conform = NULL;
+
+ ct_detail_data *cdetail_d = (ct_detail_data *) calloc(1, sizeof(ct_detail_data));
+ p_retvm_if(!cdetail_d, NULL, "cdetail_d is NULL, Not enough memory");
+
+ cdetail_d->win = win;
+ if (navi)
+ {
+ cdetail_d->navi = navi;
+ }
+ else
+ {
+ conform = elm_conformant_add(win);
+ p_retvm_if(NULL == conform, NULL, "elm_conformant_add() Failed");
+ evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ base = phone_create_base_layout(conform, true);
+ cdetail_d->navi = elm_naviframe_add(base);
+ ea_object_event_callback_add(cdetail_d->navi, EA_CALLBACK_BACK, &Common::ViewManager::onBack, cdetail_d->win);
+ ea_object_event_callback_add(cdetail_d->navi, EA_CALLBACK_MORE, &Common::ViewManager::onMenu, NULL);
+ evas_object_show(cdetail_d->navi);
+
+ bg = phone_create_bg(base);
+ if (NULL == bg)
+ {
+ ERR("phone_create_bg() return NULL");
+ evas_object_del(base);
+ free(cdetail_d);
+ return NULL;
+ }
+ elm_object_style_set(bg, "group_list");
+ }
+
+ evas_object_data_set(cdetail_d->win, "naviframe", (void *) cdetail_d->navi);
+
+ if (NULL == vcard_path)
+ {
+ int person_id = personid_vcardidx;
+ if (person_id)
+ {
+ cdetail_d->is_shortcut = true;
+ cdetail_d->person_id = person_id;
+ err = contacts_db_get_record(_contacts_person._uri, person_id,
+ &(cdetail_d->person));
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_get_record(%d) Failed(%d)", person_id, err);
+ if (base)
+ evas_object_del(base);
+ free(cdetail_d);
+ return NULL;
+ }
+ cdetail_d->list_contacts = ctui_person_get_contact_list(
+ cdetail_d->person_id);
+ }
+ else
+ ERR("personid_vcardidx <= 0");
+ }
+ else
+ {
+ int fd = 0;
+ int size __attribute__ ((unused)) = 0;
+ int vcard_idx = personid_vcardidx;
+ char buf[CT_VCARD_FILE_MAX_SIZE + 1] = { 0, };
+
+ contacts_record_h record;
+ contacts_list_h list_contacts_vcard = NULL;
+ cdetail_d->vcard_path = strdup(vcard_path);
+
+ if (NULL == cdetail_d->vcard_path)
+ {
+ ERR("strdup() return NULL");
+ if (base)
+ evas_object_del(base);
+ free(cdetail_d);
+ return NULL;
+ }
+
+ fd = open(cdetail_d->vcard_path, O_RDONLY);
+
+ p_retvm_if(-1 == fd, NULL, "open() return -1");
+ size = read(fd, buf, sizeof(buf) - 1);
+ close(fd);
+
+ err = contacts_vcard_parse_to_contacts(buf, &list_contacts_vcard);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_vcard_parse_to_contacts(%s) Failed(%d)",
+ vcard_path, err);
+ if (base)
+ evas_object_del(base);
+ free(cdetail_d);
+ return NULL;
+ }
+
+ if (vcard_idx <= 0)
+ {
+ err = contacts_list_get_current_record_p(list_contacts_vcard,
+ &record);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ err = contacts_record_clone(record, &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_clone() Failed(%d)", err);
+ }
+ }
+ else
+ {
+ int idx = 0;
+ err = CONTACTS_ERROR_NONE;
+ idx = 1;
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ if (vcard_idx == idx)
+ {
+ err = contacts_list_get_current_record_p(
+ list_contacts_vcard, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_get_current_record_p() Failed(%d)",
+ err);
+ err = contacts_record_clone(record, &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_clone() Failed(%d)", err);
+ break;
+ }
+ err = contacts_list_next(list_contacts_vcard);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d) vcard_idx %d, idx %d",
+ err, vcard_idx, idx);
+ break;
+ }
+ ++idx;
+ }
+ }
+ err = contacts_list_destroy(list_contacts_vcard, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_destroy(list_contacts_vcard) Failed(%d)", err);
+ }
+
+ content = ct_detail_create_content(cdetail_d);
+ if (NULL == content)
+ {
+ ERR("ct_detail_create_content() Failed");
+ if (base)
+ evas_object_del(base);
+ if (cdetail_d->contact)
+ contacts_record_destroy(cdetail_d->contact, true);
+ if (cdetail_d->person)
+ contacts_record_destroy(cdetail_d->person, true);
+ free(cdetail_d);
+ return NULL;
+ }
+
+ cdetail_d->navi_item = elm_naviframe_item_push(cdetail_d->navi, NULL, NULL,
+ NULL, content, NULL);
+ elm_naviframe_item_title_visible_set(cdetail_d->navi_item, EINA_FALSE);
+
+ if (NULL == vcard_path)
+ ct_detail_set_navi(cdetail_d, DETAIL_VIEW_MODE_INFO);
+ else
+ ct_detail_set_navi(cdetail_d, DETAIL_VIEW_MODE_VCARD);
+
+ if (navi)
+ return navi;
+ else
+ {
+ elm_object_part_content_set(base, "elm.swallow.content",
+ cdetail_d->navi);
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, base);
+ elm_win_resize_object_add(win, conform);
+ elm_object_content_set(conform, base);
+ evas_object_show(base);
+ evas_object_show(conform);
+ return conform;
+ }
+}
+
+API int ctui_create_detail_view_from_phone(Evas_Object *win, Evas_Object *navi,
+ ui_gadget_h ug, int id)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d;
+ Evas_Object *content;
+
+ cdetail_d = (ct_detail_data *) calloc(1, sizeof(ct_detail_data));
+ p_retvm_if(!cdetail_d, -1, "cdetail_d is NULL, Not enough memory");
+
+ cdetail_d->win = win;
+ cdetail_d->navi = navi;
+ cdetail_d->ug = ug;
+ cdetail_d->prev_navi_item = elm_naviframe_top_item_get(navi);
+ cdetail_d->person_id = id;
+
+ content = ct_detail_create_content(cdetail_d);
+ if (NULL == content)
+ {
+ ERR("ct_detail_create_content() Failed");
+ free(cdetail_d);
+ return -1;
+ }
+
+ cdetail_d->navi_item = elm_naviframe_item_push(cdetail_d->navi, NULL, NULL,
+ NULL, content, NULL);
+ elm_naviframe_item_title_visible_set(cdetail_d->navi_item, EINA_FALSE);
+
+ ct_detail_set_navi(cdetail_d, DETAIL_VIEW_MODE_INFO);
+ return 0;
+}
+
diff --git a/lib/details/ct-detail-utils.cpp b/lib/details/ct-detail-utils.cpp
new file mode 100755
index 0000000..cf33d23
--- /dev/null
+++ b/lib/details/ct-detail-utils.cpp
@@ -0,0 +1,2748 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <fcntl.h>
+#include <vconf.h>
+#include <Ecore_X.h>
+#include <ui-gadget-module.h>
+#include <account.h>
+#include <unicode/udatpg.h>
+#include <unicode/ucal.h>
+#include <unicode/ustring.h>
+
+#include "phone.h"
+#include "ct-list.h"
+#include "ct-detail.h"
+#include "ct-detail-view.h"
+#include "ct-detail-utils.h"
+#include "ct-image-viewer.h"
+
+#define FILES "files"
+#define FILECOUNT 1
+
+int ct_detail_parse_bundle(service_h service, ct_detail_data* cdetail_d,
+ int *ret)
+{
+ PH_TRACE;
+ int type = CT_UG_REQUEST_DETAIL;
+ char* val = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ p_retvm_if(NULL == ret, -1, "parameter(ret) is NULL");
+ *ret = 0;
+
+ if (service)
+ {
+ service_get_extra_data(service, CT_UG_BUNDLE_TYPE, &val);
+ if (val)
+ type = atoi(val);
+ PH_DBG("type = %d", type);
+ free(val);
+
+ switch (type)
+ {
+ case CT_UG_REQUEST_DETAIL:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_ID, &val);
+
+ if (val)
+ {
+ cdetail_d->person_id = atoi(val);
+ free(val);
+ break;
+ }
+
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_PERSON_ID, &val);
+ if (val)
+ {
+ cdetail_d->person_id = atoi(val);
+ free(val);
+ break;
+ }
+
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_VCARD, &val);
+ if (val)
+ {
+ if (ct_detail_load_vcard_contact(cdetail_d, val) < 0)
+ PH_DBG("ct_detail_load_vcard_contact fail");
+ free(val);
+ }
+ break;
+
+ case CT_UG_REQUEST_EDIT:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_ID, &val);
+
+ if (val)
+ cdetail_d->person_id = atoi(val);
+ free(val);
+
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_PERSON_ID, &val);
+ if (val)
+ cdetail_d->person_id = atoi(val);
+ free(val);
+
+ if (cdetail_d->person_id)
+ { // From OSP
+ Eina_List *list_contact =
+ ctui_person_get_writable_contact_list(
+ cdetail_d->person_id);
+ if (list_contact)
+ {
+ cdetail_d->contact = (contacts_record_h) list_contact->data;
+ eina_list_free(list_contact);
+ }
+ }
+
+ //number
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_NUM, &val);
+ if (val)
+ {
+ contacts_record_h record_number;
+
+ if (NULL == cdetail_d->contact && cdetail_d->person_id)
+ {
+ Eina_List *list_contact_id =
+ ctui_person_get_writable_contact_list(
+ cdetail_d->person_id);
+ if (list_contact_id)
+ {
+ int contact_id = (int) list_contact_id->data;
+ eina_list_free(list_contact_id);
+ err = contacts_db_get_record(_contacts_contact._uri,
+ contact_id, &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record(%d) Failed(%d)",
+ contact_id, err);
+ }
+ }
+
+ err = contacts_record_create(_contacts_number._uri,
+ &record_number);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record_number,
+ _contacts_number.type, CONTACTS_NUMBER_TYPE_CELL);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_set_str(record_number,
+ _contacts_number.number, (const char*) val);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(cdetail_d->contact,
+ _contacts_contact.number, record_number);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_add_child_record() Failed(%d)",
+ err);
+ }
+
+ //email
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_EMAIL, &val);
+ if (val)
+ {
+ contacts_record_h record_email;
+
+ if (NULL == cdetail_d->contact && cdetail_d->person_id)
+ {
+ Eina_List *list_contact_id =
+ ctui_person_get_writable_contact_list(
+ cdetail_d->person_id);
+ if (list_contact_id)
+ {
+ int contact_id = (int) list_contact_id->data;
+ eina_list_free(list_contact_id);
+ err = contacts_db_get_record(_contacts_contact._uri,
+ contact_id, &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record(%d) Failed(%d)",
+ contact_id, err);
+ }
+ }
+
+ contacts_record_create(_contacts_email._uri, &record_email);
+ contacts_record_set_int(record_email, _contacts_email.type,
+ CONTACTS_EMAIL_TYPE_HOME);
+ contacts_record_set_str(record_email, _contacts_email.email,
+ (const char*) val);
+
+ contacts_record_add_child_record(cdetail_d->contact,
+ _contacts_contact.email, record_email);
+ }
+ //url
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_WEB, &val);
+ if (val)
+ {
+ contacts_record_h record_website;
+
+ if (NULL == cdetail_d->contact && cdetail_d->person_id)
+ {
+ Eina_List *list_contact_id =
+ ctui_person_get_writable_contact_list(
+ cdetail_d->person_id);
+ if (list_contact_id)
+ {
+ int contact_id = (int) list_contact_id->data;
+ eina_list_free(list_contact_id);
+ err = contacts_db_get_record(_contacts_contact._uri,
+ contact_id, &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record(%d) Failed(%d)",
+ contact_id, err);
+ }
+ }
+ contacts_record_create(_contacts_url._uri, &record_website);
+ contacts_record_set_int(record_website, _contacts_url.type,
+ CONTACTS_EMAIL_TYPE_HOME);
+ contacts_record_set_str(record_website, _contacts_url.url,
+ (const char*) val);
+
+ contacts_record_add_child_record(cdetail_d->contact,
+ _contacts_contact.url, record_website);
+ }
+ break;
+ case CT_UG_REQUEST_ADD:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_VCARD, &val);
+ if (val)
+ {
+ contacts_list_h list;
+ err = contacts_vcard_parse_to_contacts(val, &list);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ contacts_record_h record;
+ err = contacts_list_get_current_record_p(list, &record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ err = contacts_record_clone(record,
+ &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_clone() Failed(%d)", err);
+ }
+ }
+ err = contacts_list_destroy(list, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_destroy() Failed(%d)", err);
+
+ free(val);
+ break;
+ }
+
+ //number
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_NUM, &val);
+ if (val)
+ {
+ contacts_record_h record_number = NULL;
+ if (NULL == cdetail_d->contact)
+ {
+ err = contacts_record_create(_contacts_contact._uri,
+ &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+ }
+
+ err = contacts_record_create(_contacts_number._uri,
+ &record_number);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record_number,
+ _contacts_number.type,
+ CONTACTS_NUMBER_TYPE_HOME
+ | CONTACTS_NUMBER_TYPE_CELL);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_set_str(record_number,
+ _contacts_number.number, val);
+ contacts_record_add_child_record(cdetail_d->contact,
+ _contacts_contact.number, record_number);
+
+ free(val);
+ }
+
+ //email
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_EMAIL, &val);
+ if (val)
+ {
+ contacts_record_h record_email = NULL;
+ if (NULL == cdetail_d->contact)
+ {
+ err = contacts_record_create(_contacts_contact._uri,
+ &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+ }
+
+ err = contacts_record_create(_contacts_email._uri,
+ &record_email);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record_email,
+ _contacts_email.type, CONTACTS_EMAIL_TYPE_HOME);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_set_str(record_email,
+ _contacts_email.email, val);
+ contacts_record_add_child_record(cdetail_d->contact,
+ _contacts_contact.email, record_email);
+
+ free(val);
+ }
+
+ //url
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_WEB, &val);
+ if (val)
+ {
+ contacts_record_h record_url = NULL;
+ if (NULL == cdetail_d->contact)
+ {
+ err = contacts_record_create(_contacts_contact._uri,
+ &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+ }
+ err = contacts_record_create(_contacts_url._uri,
+ &record_url);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record_url,
+ _contacts_url.type, CONTACTS_URL_TYPE_HOME);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_set_str(record_url, _contacts_url.url,
+ val);
+ contacts_record_add_child_record(cdetail_d->contact,
+ _contacts_contact.url, record_url);
+
+ free(val);
+ }
+ break;
+ case CT_UG_REQUEST_ADD_WITH_NUM:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_NUM, &val);
+ if (val)
+ {
+ contacts_record_h record_number = NULL;
+ if (cdetail_d->person_id)
+ {
+ int contact_id = 0;
+ Eina_List *contact_id_list;
+
+ contact_id_list = ctui_person_get_writable_contact_list(
+ cdetail_d->person_id);
+ if (NULL == contact_id_list)
+ {
+ ERR(
+ "ctui_person_get_writable_contact_list() return NULL");
+ break;
+ }
+
+ contact_id = (int) contact_id_list->data;
+ eina_list_free(contact_id_list);
+
+ err = contacts_db_get_record(_contacts_contact._uri,
+ contact_id, &(cdetail_d->contact));
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_get_record() Failed(%d)", err);
+ break;
+ }
+
+ err = contacts_record_create(_contacts_number._uri,
+ &record_number);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record_number,
+ _contacts_number.type,
+ CONTACTS_NUMBER_TYPE_HOME
+ | CONTACTS_NUMBER_TYPE_VOICE);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_set_str(record_number,
+ _contacts_number.number, val);
+ contacts_record_add_child_record(cdetail_d->contact,
+ _contacts_contact.number, record_number);
+ }
+ else
+ {
+ err = contacts_record_create(_contacts_contact._uri,
+ &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_create(_contacts_number._uri,
+ &record_number);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record_number,
+ _contacts_number.type,
+ CONTACTS_NUMBER_TYPE_HOME
+ | CONTACTS_NUMBER_TYPE_VOICE);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_set_str(record_number,
+ _contacts_number.number, val);
+ contacts_record_add_child_record(cdetail_d->contact,
+ _contacts_contact.number, record_number);
+ }
+ }
+ free(val);
+ break;
+ case CT_UG_REQUEST_ADD_WITH_EMAIL:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_EMAIL, &val);
+ if (val)
+ {
+ contacts_record_h record_email;
+ if (cdetail_d->person_id)
+ {
+ int contact_id = 0;
+ Eina_List *contact_id_list;
+
+ PH_DBG("cdetail_d->person_id=%d", cdetail_d->person_id);
+
+ contact_id_list = ctui_person_get_writable_contact_list(
+ cdetail_d->person_id);
+ if (NULL == contact_id_list)
+ {
+ ERR(
+ "ctui_person_get_writable_contact_list() return NULL");
+ break;
+ }
+
+ contact_id = (int) contact_id_list->data;
+ eina_list_free(contact_id_list);
+
+ err = contacts_db_get_record(_contacts_contact._uri,
+ contact_id, &(cdetail_d->contact));
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_get_record() Failed(%d)", err);
+ break;
+ }
+
+ err = contacts_record_create(_contacts_email._uri,
+ &record_email);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record_email,
+ _contacts_email.type, CONTACTS_EMAIL_TYPE_HOME);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_set_str(record_email,
+ _contacts_email.email, val);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(
+ cdetail_d->contact, _contacts_contact.email,
+ record_email);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_add_child_record() Failed(%d)",
+ err);
+ }
+ else
+ {
+ err = contacts_record_create(_contacts_contact._uri,
+ &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_create(_contacts_email._uri,
+ &record_email);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record_email,
+ _contacts_email.type, CONTACTS_EMAIL_TYPE_HOME);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_set_str(record_email,
+ _contacts_email.email, val);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(
+ cdetail_d->contact, _contacts_contact.email,
+ record_email);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_add_child_record() Failed(%d)",
+ err);
+ }
+ }
+ free(val);
+ break;
+ case CT_UG_REQUEST_ADD_WITH_WEB:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_EMAIL, &val);
+ if (val)
+ {
+ contacts_record_h record_url;
+ if (cdetail_d->person_id)
+ {
+ int contact_id = 0;
+ Eina_List *contact_id_list;
+
+ contact_id_list = ctui_person_get_writable_contact_list(
+ cdetail_d->person_id);
+ if (NULL == contact_id_list)
+ {
+ ERR(
+ "ctui_person_get_writable_contact_list() return NULL");
+ break;
+ }
+
+ contact_id = (int) contact_id_list->data;
+ eina_list_free(contact_id_list);
+
+ err = contacts_db_get_record(_contacts_contact._uri,
+ contact_id, &(cdetail_d->contact));
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_get_record() Failed(%d)", err);
+ break;
+ }
+
+ err = contacts_record_create(_contacts_url._uri,
+ &record_url);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record_url,
+ _contacts_url.type, CONTACTS_URL_TYPE_HOME);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_set_str(record_url,
+ _contacts_url.url, val);
+ contacts_record_add_child_record(cdetail_d->contact,
+ _contacts_contact.url, record_url);
+ }
+ else
+ {
+ err = contacts_record_create(_contacts_contact._uri,
+ &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_create(_contacts_url._uri,
+ &record_url);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record_url,
+ _contacts_url.type, CONTACTS_URL_TYPE_HOME);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_set_str(record_url,
+ _contacts_url.url, val);
+ contacts_record_add_child_record(cdetail_d->contact,
+ _contacts_contact.url, record_url);
+ }
+ }
+ free(val);
+ break;
+ }
+ }
+
+ // FIXME : improve performance
+ if (cdetail_d->person_id)
+ {
+ cdetail_d->list_contacts = ctui_person_get_contact_list(
+ cdetail_d->person_id);
+ if (NULL == cdetail_d->list_contacts)
+ *ret = -2;
+ }
+
+ return type;
+}
+
+static inline bool detail_is_usable_char(char c)
+{
+ PH_TRACE;
+ switch (c)
+ {
+ case '\\':
+ case '/':
+ case ':':
+ case '*':
+ case '?':
+ case '\"':
+ case '<':
+ case '>':
+ case '|':
+ case ';':
+ return false;
+ default:
+ return true;
+ }
+}
+
+static inline bool detail_is_blank_str(char *display)
+{
+ PH_TRACE;
+ unsigned int i;
+ for (i = 0; i < strlen(display); i++)
+ if (' ' != display[i])
+ return false;
+ return true;
+}
+
+static void detail_get_vcard_filepath(ct_detail_data *cdetail_d, char* path_buf,
+ int buf_size)
+{
+ PH_TRACE;
+ char display[PH_TEXT_MAX_LEN];
+ char temp[PH_TEXT_MAX_LEN];
+ char *display_name = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ temp[0] = '\0';
+ if (cdetail_d->person)
+ err = contacts_record_get_str_p(cdetail_d->person,
+ _contacts_person.display_name, &display_name);
+ else if (cdetail_d->contact)
+ err = contacts_record_get_str_p(cdetail_d->contact,
+ _contacts_contact.display_name, &display_name);
+
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (display_name && *display_name)
+ snprintf(temp, sizeof(temp), "%s", display_name);
+
+ display[0] = '\0';
+ if (*temp)
+ {
+ unsigned int i;
+ int idx = 0;
+ for (i = 0; i < strlen(temp); i++)
+ {
+ if (detail_is_usable_char(temp[i]))
+ display[idx++] = temp[i];
+ }
+ display[idx] = '\0';
+ }
+
+ if ('\0' == display[0] || detail_is_blank_str(display))
+ {
+ snprintf(display, sizeof(display), "%s",
+ T_(CT_GET_TEXT_ERR, CTTEXT_NONAME));
+ }
+ snprintf(path_buf, buf_size, "%s/%s.vcf", UGDATAIDR, display);
+}
+
+static int detail_make_vcard(ct_detail_data *cdetail_d, char *path_buf,
+ int buf_size)
+{
+ PH_TRACE;
+ int ret, fd;
+ char* vcard = NULL;
+
+ detail_get_vcard_filepath(cdetail_d, path_buf, buf_size);
+ p_retvm_if(NULL == path_buf, FALSE,
+ "detail_get_vcard_filepath() return NULL");
+ p_retvm_if(NULL == cdetail_d->list_contacts, FALSE, "contact_list is NULL");
+
+ if (cdetail_d->person)
+ ret = contacts_vcard_make_from_person(cdetail_d->person, &vcard);
+ else
+ ret = contacts_vcard_make_from_contact(cdetail_d->contact, &vcard);
+
+ p_retvm_if(NULL == vcard, FALSE,
+ "contacts_vcard_make_from_person() Failed(%d)", ret);
+
+ fd = open(path_buf, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+ if (fd < 0)
+ {
+ ERR("Open(%s) Failed", path_buf);
+ free(vcard);
+ return FALSE;
+ }
+
+ if (-1 == write(fd, vcard, strlen(vcard)))
+ ERR("write()... Failed(%s)", strerror(errno));
+ close(fd);
+
+ free(vcard);
+ return TRUE;
+}
+
+void ct_detail_delete_namecards(ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ int ret;
+ int fd;
+ char file_path[FILENAME_MAX];
+
+ detail_get_vcard_filepath(cdetail_d, file_path, sizeof(file_path));
+
+ fd = open(file_path, O_RDONLY);
+ if (fd < 0)
+ return;
+
+ close(fd);
+
+ ret = unlink(file_path);
+ p_warn_if(ret < 0, "unlink(%s) failed(%d)", file_path, ret);
+}
+
+static void __detail_destroy_child_ug(void *data)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d = (ct_detail_data*) data;
+ p_retm_if(NULL == cdetail_d, "ct_detail_data is NULL");
+ cdetail_d->child_ug = NULL;
+
+}
+
+static void detail_destroy_child_ug(ui_gadget_h ug, void *priv)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) priv;
+ p_retm_if(NULL == ug, "ug is NULL");
+ ug_destroy(ug);
+
+ p_retm_if(NULL == priv, "priv is NULL");
+ cdetail_d->child_ug = NULL;
+
+}
+
+void ct_detail_make_vcard(ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ int ret;
+ char file_path[FILENAME_MAX] = { 0, };
+
+ ret = detail_make_vcard(cdetail_d, file_path, sizeof(file_path));
+ if (TRUE != ret)
+ cdetail_d->vcard_path = NULL;
+ else
+ cdetail_d->vcard_path = strdup(file_path);
+ PH_DBG("vcf path %s", file_path);
+}
+
+void ct_detail_send_via_msg(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int ret;
+ char file_path[FILENAME_MAX];
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ ret = detail_make_vcard(cdetail_d, file_path, sizeof(file_path));
+ if (TRUE != ret)
+ {
+ PH_DBG("detail_make_vcard() Failed(%d)", ret);
+ phone_show_popup(cdetail_d->win,
+ T_(CT_GET_TEXT_ERR, CTTEXT_UNABLE_TO_SEND_NAME_CARDS),
+ 1.5);
+ return;
+ }
+ cdetail_d->child_ug = ctui_msg_ug(cdetail_d->ug, NULL, file_path,
+ __detail_destroy_child_ug, cdetail_d);
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+
+}
+
+void ct_detail_send_via_email(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int ret;
+ char file_path[FILENAME_MAX];
+ service_h service;
+ Ecore_X_Window win_id;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ ret = detail_make_vcard(cdetail_d, file_path, sizeof(file_path));
+ if (TRUE != ret)
+ {
+ PH_DBG("detail_make_vcard() Failed(%d)", ret);
+ phone_show_popup(cdetail_d->win,
+ T_(CT_GET_TEXT_ERR, CTTEXT_UNABLE_TO_SEND_NAME_CARDS),
+ 1.5);
+ return;
+ }
+
+ win_id = elm_win_xwindow_get(cdetail_d->win);
+ service_create(&service);
+ service_set_operation(service, SERVICE_OPERATION_SEND);
+ service_set_uri(service, file_path);
+ service_set_app_id(service, EMAIL_COMPOSER_PKG);
+ service_add_extra_data(service, SERVICE_DATA_SUBJECT, "Contacts name card");
+
+ service_set_window(service, win_id);
+ service_send_launch_request(service, NULL, NULL);
+ service_destroy(service);
+
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+}
+
+void ct_detail_send_via_bluetooth(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int ret;
+ service_h service;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ char file_path[FILENAME_MAX];
+ const char *path = file_path;
+ struct ug_cbs cbs = { 0 };
+
+ ret = detail_make_vcard(cdetail_d, file_path, sizeof(file_path));
+ if (TRUE != ret)
+ {
+ PH_DBG("detail_make_vcard() Failed(%d)", ret);
+ phone_show_popup(cdetail_d->win,
+ T_(CT_GET_TEXT_ERR, CTTEXT_UNABLE_TO_SEND_NAME_CARDS),
+ 1.5);
+ return;
+ }
+
+ service_create(&service);
+ service_add_extra_data(service, "launch-type", "send");
+ service_add_extra_data_array(service, FILES, &path, FILECOUNT);
+
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = detail_destroy_child_ug;
+ cbs.priv = data;
+
+ cdetail_d->child_ug = ug_create(cdetail_d->ug, BLUETOOTH_UG,
+ UG_MODE_FULLVIEW, service, &cbs);
+
+ service_destroy(service);
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+}
+
+static void detail_get_displayname(contacts_record_h record_name, char *display,
+ int display_len)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_name_display_order_e name_display_order;
+ char *first, *last, *middle;
+ char temp[CT_EDITFIELD_MAX_CHAR * 2 + 2] = { 0, };
+
+ err = contacts_record_get_str_p(record_name, _contacts_name.first, &first);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() first Failed(%d)", err);
+
+ err = contacts_record_get_str_p(record_name, _contacts_name.addition,
+ &middle);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() addition Failed(%d)", err);
+
+ err = contacts_record_get_str_p(record_name, _contacts_name.last, &last);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() last Failed(%d)", err);
+
+ if (STRLEN(middle) > 0)
+ {
+ if (STRLEN(first) > 0)
+ snprintf(temp, CT_EDITFIELD_MAX_CHAR * 2 + 1, "%s %s", first,
+ middle);
+ else
+ snprintf(temp, CT_EDITFIELD_MAX_CHAR, "%s", middle);
+ }
+ else
+ {
+ if (STRLEN(first) > 0)
+ snprintf(temp, CT_EDITFIELD_MAX_CHAR, "%s", first);
+ }
+
+ contacts_setting_get_name_display_order(&name_display_order);
+ if (CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST == name_display_order)
+ {
+ if (STRLEN(last) > 0)
+ {
+ if (STRLEN(temp) > 0)
+ snprintf(display, display_len - 1, "%s %s", temp, last);
+ else
+ snprintf(display, display_len - 1, "%s", last);
+ }
+ else
+ {
+ if (STRLEN(temp) > 0)
+ snprintf(display, display_len - 1, "%s", temp);
+ }
+ }
+ else
+ {
+ if (STRLEN(last) > 0)
+ {
+ if (STRLEN(temp) > 0)
+ snprintf(display, display_len - 1, "%s, %s", last, temp);
+ else
+ snprintf(display, display_len - 1, "%s", last);
+ }
+ else
+ {
+ if (STRLEN(temp) > 0)
+ snprintf(display, display_len - 1, "%s", temp);
+ }
+ }
+}
+
+static void detail_get_company_str(contacts_record_h record_company, char *dest,
+ int dest_len)
+{
+ PH_TRACE;
+ int ret;
+ int err = CONTACTS_ERROR_NONE;
+ char *company, *job, *department;
+ char temp[dest_len];
+
+ p_ret_if(NULL == dest);
+
+ err = contacts_record_get_str_p(record_company, _contacts_company.name,
+ (char**) &company);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ err = contacts_record_get_str_p(record_company,
+ _contacts_company.department, (char**) &department);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ err = contacts_record_get_str_p(record_company, _contacts_company.job_title,
+ (char**) &job);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (company)
+ {
+ if (strlen(company) > CT_EDITFIELD_MAX_CHAR)
+ {
+ company[CT_EDITFIELD_MAX_CHAR] = '\0';
+ }
+ if (*dest)
+ {
+ ret = snprintf(temp, dest_len, "%s, %s", dest, company);
+ if (0 < ret)
+ memcpy(dest, temp, ret + 1);
+ }
+ else
+ {
+ snprintf(dest, dest_len, "%s", company);
+ }
+ }
+
+ if (department)
+ {
+ if (strlen(department) > CT_EDITFIELD_MAX_CHAR)
+ {
+ department[CT_EDITFIELD_MAX_CHAR] = '\0';
+ }
+ if (*dest)
+ {
+ ret = snprintf(temp, dest_len, "%s, %s", dest, department);
+ if (0 < ret)
+ memcpy(dest, temp, ret + 1);
+ }
+ else
+ {
+ snprintf(dest, dest_len, "%s", department);
+ }
+ }
+
+ if (job)
+ {
+ if (strlen(job) > CT_EDITFIELD_MAX_CHAR)
+ {
+ job[CT_EDITFIELD_MAX_CHAR] = '\0';
+ }
+ if (*dest)
+ {
+ ret = snprintf(temp, dest_len, "%s, %s", dest, job);
+ if (0 < ret)
+ memcpy(dest, temp, ret + 1);
+ }
+ else
+ {
+ snprintf(dest, dest_len, "%s", job);
+ }
+ }
+}
+
+void ct_detail_person_get_company_str(Eina_List *contact_list, char *dest,
+ int dest_len)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_contact = NULL;
+ contacts_record_h record_company = NULL;
+ Eina_List *l;
+ p_retm_if(NULL == contact_list, "contact_list is NULL");
+
+ EINA_LIST_FOREACH(contact_list, l, v_record_contact)
+ {
+ contacts_record_h record_contact = (contacts_record_h) v_record_contact;
+ if (NULL == record_contact)
+ continue;
+ err = contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.company, 0, &record_company);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_child_record_at_p() Failed(%d)", err);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ detail_get_company_str(record_company, dest, dest_len);
+ break;
+ }
+ }
+}
+
+static void detail_get_extra_name_str(contacts_record_h record_name,
+ contacts_record_h record_nickname, char *dest, int dest_len)
+{
+ PH_TRACE;
+ int ret;
+ int err = CONTACTS_ERROR_NONE;
+ char *suffix;
+ char *nickname;
+ char temp[CT_EDITFIELD_MAX_CHAR + 1] = { 0, };
+
+ p_ret_if(NULL == dest);
+
+ err = contacts_record_get_str_p(record_name, _contacts_name.suffix,
+ (char**) &suffix);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() suffix Failed(%d)", err);
+
+ err = contacts_record_get_str_p(record_nickname, _contacts_nickname.name,
+ (char**) &nickname);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() name Failed(%d)", err);
+
+ if (suffix && *suffix)
+ {
+ if (strlen(suffix) > CT_EDITFIELD_MAX_CHAR)
+ {
+ suffix[CT_EDITFIELD_MAX_CHAR] = '\0';
+ }
+ if (*dest)
+ {
+ ret = snprintf(temp, sizeof(temp) - 1, "%s, %s", dest, suffix);
+ if (0 < ret)
+ memcpy(dest, temp, ret + 1);
+ }
+ else
+ {
+ snprintf(dest, dest_len - 1, "%s", suffix);
+ }
+ }
+
+ if (nickname && *nickname)
+ {
+ if (strlen(nickname) > CT_EDITFIELD_MAX_CHAR)
+ {
+ nickname[CT_EDITFIELD_MAX_CHAR] = '\0';
+ }
+ if (*dest)
+ {
+ ret = snprintf(temp, sizeof(temp) - 1, "%s, %s", dest, nickname);
+ if (0 < ret)
+ memcpy(dest, temp, ret + 1);
+ }
+ else
+ {
+ snprintf(dest, dest_len - 1, "%s", nickname);
+ }
+ }
+}
+
+void ct_detail_person_get_extra_name(Eina_List *contact_list,
+ contacts_record_h record_person, char *dest, int dest_len)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_contact = NULL;
+ contacts_record_h record_name = NULL;
+ contacts_record_h record_nickname = NULL;
+ Eina_List *l;
+
+ p_retm_if(NULL == contact_list, "contact_list is NULL");
+
+ EINA_LIST_FOREACH(contact_list, l, v_record_contact)
+ {
+ contacts_record_h record_contact = (contacts_record_h) v_record_contact;
+ if (NULL == record_contact)
+ continue;
+
+ err = contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.name, 0, &record_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_child_record_at_p() name Failed(%d)", err);
+ err = contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.nickname, 0, &record_nickname);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_child_record_at_p() nickname Failed(%d)",
+ err);
+
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ detail_get_extra_name_str(record_name, record_nickname, dest,
+ dest_len);
+ break;
+ }
+ }
+}
+
+char* ct_detail_gl_baseinfo_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ const char *display_name = NULL;
+ char display[PH_TEXT_MAX_LEN * 4 + 1] = { 0, };
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ p_retvm_if(NULL == cdetail_d, NULL, "parameter(cdetail_d) is NULL");
+
+ display[0] = '\0';
+ if (0 == strcmp(part, "elm.text.name"))
+ {
+ if (cdetail_d->person)
+ {
+ err = contacts_record_get_str_p(cdetail_d->person,
+ _contacts_person.display_name, (char**) &display_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (display_name && *display_name)
+ return elm_entry_utf8_to_markup(display_name);
+ }
+ else if (cdetail_d->contact)
+ {
+ err = contacts_record_get_str_p(cdetail_d->contact,
+ _contacts_contact.display_name, (char**) &display_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ if (STRLEN(display_name) > 0)
+ {
+ snprintf(display, sizeof(display), "%s", display_name);
+ return elm_entry_utf8_to_markup(display);
+ }
+ else
+ {
+ contacts_record_h record_name;
+
+ err = contacts_record_get_child_record_at_p(cdetail_d->contact,
+ _contacts_contact.name, 0, &record_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_child_record_at_p() Failed(%d)",
+ err);
+
+ detail_get_displayname(record_name, display, sizeof(display));
+
+ if (STRLEN(display) > 0)
+ return elm_entry_utf8_to_markup(display);
+ }
+ }
+ }
+ else if (0 == strcmp(part, "elm.text.subname"))
+ {
+ if (cdetail_d->list_contacts)
+ {
+ ct_detail_person_get_extra_name(cdetail_d->list_contacts,
+ cdetail_d->person, display, sizeof(display));
+ if (strlen(display) > 0)
+ return elm_entry_utf8_to_markup(display);
+
+ ct_detail_person_get_company_str(cdetail_d->list_contacts, display,
+ sizeof(display));
+ if (strlen(display) > 0)
+ return elm_entry_utf8_to_markup((display));
+ }
+ }
+ else if (0 == strcmp(part, "elm.text.subname2"))
+ {
+ if (cdetail_d->list_contacts)
+ {
+ ct_detail_person_get_company_str(cdetail_d->list_contacts, display,
+ sizeof(display));
+ if (strlen(display) > 0)
+ return elm_entry_utf8_to_markup(display);
+ }
+ }
+ return NULL;
+}
+
+static bool detail_set_favorite(contacts_record_h record_person, bool is_set)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_set_bool(record_person, _contacts_person.is_favorite,
+ is_set);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_record_set_bool() Failed(%d)", err);
+
+ return true;
+}
+
+static void detail_favorite_mouseup_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ bool is_favorite;
+ bool success;
+ int x, y, w, h;
+ int err = CONTACTS_ERROR_NONE;
+ const char* result_msg;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
+
+ p_retm_if(NULL == cdetail_d, "evas_object_data_get() return NULL");
+ p_retm_if(NULL == cdetail_d->person, "person is NULL");
+
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+ if (ev->output.y < y || y + h < ev->output.y || ev->output.x < x
+ || x + w < ev->output.x)
+ return;
+
+ err = contacts_record_get_bool(cdetail_d->person,
+ _contacts_person.is_favorite, &is_favorite);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_bool() Failed(%d)", err);
+
+ is_favorite = !is_favorite;
+ success = detail_set_favorite(cdetail_d->person, is_favorite);
+
+ if (is_favorite && success)
+ result_msg = S_(CT_SYS_POP_ADDED);
+ else if (!is_favorite && success)
+ result_msg = S_(PH_SYS_POP_REMOVED);
+ else
+ result_msg = S_(PH_SYS_POP_FAILED);
+
+ phone_show_tickernoti(result_msg);
+ err = contacts_db_update_record(cdetail_d->person);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_record() Failed(%d)", err);
+
+ elm_genlist_item_update(cdetail_d->base_item);
+}
+
+static void detail_person_changed_cb(void *data)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ p_retm_if(NULL == cdetail_d, "paramter(ct_detail_data) is NULL");
+ p_retm_if(NULL == cdetail_d->person, "paramter(cdetail_d->person) is NULL");
+ p_retm_if(0 == cdetail_d->person_id, "paramter(cdetail_d->person_id) is 0");
+
+ err = contacts_record_destroy(cdetail_d->person, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ err = contacts_db_get_record(_contacts_person._uri, cdetail_d->person_id,
+ &(cdetail_d->person));
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_get_record(%d) Failed(%d)", cdetail_d->person_id, err);
+ }
+
+ elm_genlist_item_update(cdetail_d->base_item);
+}
+
+static void detail_image_mouseup_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int x, y, w, h;
+
+ Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+ if (ev->output.y < y || y + h < ev->output.y || ev->output.x < x
+ || x + w < ev->output.x)
+ return;
+
+ p_ret_if(NULL != cdetail_d->vcard_path);
+ p_retm_if(NULL == cdetail_d->person && NULL == cdetail_d->list_contacts,
+ "parameter(person, list_contacts) is NULL");
+ ct_image_viewer(cdetail_d->navi, cdetail_d->person,
+ cdetail_d->list_contacts, detail_person_changed_cb, cdetail_d);
+}
+
+Evas_Object *ct_detail_gl_baseinfo_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ const char *value_data = NULL;
+ Evas_Object *img;
+ Evas_Object *icon;
+ bool is_favorite = false;
+ int err = CONTACTS_ERROR_NONE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ p_retvm_if(cdetail_d->person == NULL && cdetail_d->contact == NULL, NULL,
+ "parameter(person/contact) is NULL");
+
+ if (0 == strcmp(part, "elm.icon.image"))
+ {
+
+ if (cdetail_d->person)
+ err = contacts_record_get_str_p(cdetail_d->person,
+ _contacts_person.image_thumbnail_path,
+ (char**) &value_data);
+ else
+ err = contacts_record_get_str_p(cdetail_d->contact,
+ _contacts_contact.image_thumbnail_path,
+ (char**) &value_data);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ img = elm_image_add(obj);
+ p_retvm_if(NULL == img, NULL, "elm_image_add() return NULL");
+ evas_object_size_hint_aspect_set(img, EVAS_ASPECT_CONTROL_HORIZONTAL, 1,
+ 1);
+ elm_image_file_set(img, value_data, NULL);
+
+ evas_object_event_callback_add(img, EVAS_CALLBACK_MOUSE_UP,
+ detail_image_mouseup_cb, cdetail_d);
+ return img;
+ }
+ else if (0 == strcmp(part, "elm.icon.favorite"))
+ {
+
+ icon = elm_icon_add(obj);
+ p_retvm_if(NULL == icon, NULL, "elm_icon_add() return NULL");
+
+ evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_UP,
+ detail_favorite_mouseup_cb, cdetail_d);
+ elm_image_resizable_set(icon, EINA_FALSE, EINA_FALSE);
+
+ if (cdetail_d->person)
+ err = contacts_record_get_bool(cdetail_d->person,
+ _contacts_person.is_favorite, &is_favorite);
+ else
+ {
+ if (cdetail_d->vcard_path)
+ return NULL;
+ err = contacts_record_get_bool(cdetail_d->contact,
+ _contacts_contact.is_favorite, &is_favorite);
+ }
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_bool() Failed(%d)", err);
+
+ elm_image_file_set(icon, CTUI_IMG_ICON_FAVORITE, NULL);
+ if (!is_favorite)
+ evas_object_color_set(icon, 185, 185, 185, 255);
+ else
+ evas_object_color_set(icon, 59, 115, 182, 255);
+
+ return icon;
+ }
+ return NULL;
+}
+
+static void __detail_voice_call_pressed_cb(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ elm_image_file_set((Evas_Object *) data, CTUI_IMG_ICON_CALL_PRESSED, NULL);
+}
+
+static void __detail_voice_call_unpressed_cb(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ elm_image_file_set((Evas_Object *) data, CTUI_IMG_ICON_CALL, NULL);
+}
+
+static void __detail_msg_ug_pressed_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ elm_image_file_set((Evas_Object *) data, CTUI_IMG_ICON_SMS_PRESSED, NULL);
+}
+
+static void __detail_msg_ug_unpressed_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ elm_image_file_set((Evas_Object *) data, CTUI_IMG_ICON_SMS, NULL);
+}
+
+Evas_Object *ct_detail_gl_number_util_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ const char *fullpath;
+ const char *number;
+ contacts_record_h default_nubmer = (contacts_record_h) data;
+ ct_detail_data *cdetail_d;
+ Evas_Object *btn;
+ Evas_Object *icon;
+ Evas_Smart_Cb clicked_fn = NULL;
+ Evas_Smart_Cb pressed_fn = NULL;
+ Evas_Smart_Cb unpressed_fn = NULL;
+
+ p_retv_if(NULL == data, NULL);
+
+ cdetail_d = (ct_detail_data *) evas_object_data_get(obj, "cdetail_d");
+ p_retvm_if(NULL == cdetail_d, NULL, "evas_object_data_get() return NULL");
+ if (0 == strcmp(part, "elm.icon.1"))
+ {
+ fullpath = CTUI_IMG_ICON_CALL;
+ clicked_fn = ct_detail_voice_call_cb;
+ pressed_fn = (Evas_Smart_Cb) __detail_voice_call_pressed_cb;
+ unpressed_fn = (Evas_Smart_Cb) __detail_voice_call_unpressed_cb;
+ }
+ else if (0 == strcmp(part, "elm.icon.2"))
+ {
+ fullpath = CTUI_IMG_ICON_SMS;
+ clicked_fn = ct_detail_msg_ug_cb;
+ pressed_fn = (Evas_Smart_Cb) __detail_msg_ug_pressed_cb;
+ unpressed_fn = (Evas_Smart_Cb) __detail_msg_ug_unpressed_cb;
+ }
+ else
+ {
+ return NULL;
+ }
+
+ err = contacts_record_get_str_p(default_nubmer, _contacts_number.number,
+ (char**) &number);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ btn = elm_button_add(obj);
+ p_retvm_if(NULL == btn, NULL, "elm_button_add() return NULL");
+ elm_object_style_set(btn, "detail.circle/empty");
+
+ icon = elm_icon_add(btn);
+ p_retvm_if(NULL == icon, NULL, "phone_create_icon_with_img() return NULL");
+ elm_image_file_set(icon, fullpath, NULL);
+ elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+ elm_object_part_content_set(btn, "elm.swallow.content", icon);
+ evas_object_data_set(btn, "cdetail_d", cdetail_d);
+ evas_object_smart_callback_add(btn, "clicked", clicked_fn, number);
+ evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_DOWN, (Evas_Object_Event_Cb) pressed_fn,
+ icon);
+ evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_UP, (Evas_Object_Event_Cb) unpressed_fn,
+ icon);
+
+ return btn;
+}
+
+void ct_detail_voice_call_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d;
+
+ cdetail_d = (ct_detail_data *) evas_object_data_get(obj, "cdetail_d");
+ p_retm_if(NULL == cdetail_d, "evas_object_data_get() return NULL");
+
+ if (cdetail_d->popup)
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+
+ phone_launch_voice_call(cdetail_d->person_id, (const char *) data);
+}
+
+void ct_detail_msg_ug_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d;
+
+ cdetail_d = (ct_detail_data *) evas_object_data_get(obj, "cdetail_d");
+ p_retm_if(NULL == cdetail_d, "evas_object_data_get() return NULL");
+ p_retm_if(NULL != cdetail_d->child_ug, "child_ug is not null");
+
+ if (cdetail_d->popup)
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+
+ cdetail_d->child_ug = ctui_msg_ug(cdetail_d->ug, (const char *) data,
+ NULL, __detail_destroy_child_ug, cdetail_d);
+}
+
+void ct_detail_popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_input_data *cinput_d = static_cast<ct_input_data*>(data);
+ if (NULL != cinput_d->popup)
+ {
+ evas_object_del(cinput_d->popup);
+ cinput_d->popup = NULL;
+ }
+ if (NULL != cinput_d->navi)
+ {
+ elm_object_tree_focus_allow_set(cinput_d->navi, EINA_TRUE);
+ }
+ }
+}
+
+void ct_detail_menu_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_input_data *cinput_d = static_cast<ct_input_data*>(data);
+ if (NULL != cinput_d->m_Menu)
+ {
+ evas_object_del(cinput_d->m_Menu);
+ cinput_d->m_Menu = NULL;
+ }
+ if (NULL != cinput_d->navi)
+ {
+ elm_object_tree_focus_allow_set(cinput_d->navi, EINA_TRUE);
+ }
+ }
+}
+
+const char* ct_detail_get_ringtone_display_name(const char *real_data)
+{
+ PH_TRACE;
+ const char *data;
+
+ if (NULL == real_data)
+ data = T_(CT_GET_TEXT_BASIC, CTTEXT_DEFAULT);
+ else
+ {
+ data = strrchr(real_data, '/');
+ if (NULL == data)
+ data = real_data;
+ else
+ data = data + 1;
+ }
+ return data;
+}
+
+void ct_detail_get_group_names(contacts_record_h record_contact, char *dest,
+ int dest_len)
+{
+ PH_TRACE;
+ int ret;
+ int index = 0;
+ int group_id;
+ char *group_str;
+ char temp[PH_TEXT_MAX_LEN];
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ contacts_record_h group_record = NULL;
+ dest[0] = '\0';
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.group_relation, index++, &record))
+ {
+ err = contacts_record_get_int(record, _contacts_group_relation.group_id,
+ &group_id);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ continue;
+ }
+ PH_DBG("group id = %d", group_id);
+ err = contacts_db_get_record(_contacts_group._uri, group_id,
+ &group_record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed(%d)", err);
+ if (err == CONTACTS_ERROR_NONE)
+ {
+ err = contacts_record_get_str_p(group_record, _contacts_group.name,
+ &group_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ PH_DBG("group name = %s", group_str);
+ if (group_str && *group_str)
+ {
+ if (*dest)
+ {
+ ret = snprintf(temp, PH_TEXT_MAX_LEN, "%s, %s", dest,
+ group_str);
+ if (ret < dest_len)
+ {
+ memcpy(dest, temp, ret + 1);
+ }
+ else
+ {
+ memcpy(dest, temp, dest_len);
+ dest[dest_len - 1] = '\0';
+ }
+ }
+ else
+ {
+ snprintf(dest, PH_TEXT_MAX_LEN, "%s", group_str);
+ }
+ }
+ }
+ err = contacts_record_destroy(group_record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ }
+
+ if ('\0' == *dest)
+ snprintf(dest, dest_len, "%s",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_NOT_ASSIGNED));
+}
+
+void ct_detail_person_get_group_names(Eina_List *contact_list, char *dest,
+ int dest_len)
+{
+ PH_TRACE;
+ int ret;
+ int index = 0;
+ Eina_List *l;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_contact = NULL;
+ contacts_record_h record_group_relation = NULL;
+ char* group_names = NULL;
+ p_retm_if(NULL == contact_list, "contact_list is NULL");
+
+ EINA_LIST_FOREACH(contact_list, l, v_record_contact)
+ {
+ contacts_record_h record_contact = (contacts_record_h) v_record_contact;
+ if (NULL == record_contact)
+ continue;
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.group_relation, index++,
+ &record_group_relation))
+ {
+
+ err = contacts_record_get_str_p(record_group_relation,
+ _contacts_group_relation.name, &group_names);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ PH_DBG("group_names = %s", group_names);
+ if (group_names && *group_names)
+ {
+ if (*dest)
+ {
+ char temp[PH_TEXT_MAX_LEN];
+ ret = snprintf(temp, sizeof(temp), "%s, %s", dest,
+ group_names);
+ if (0 < ret)
+ memcpy(dest, temp, ret + 1);
+ }
+ else
+ {
+ snprintf(dest, dest_len, "%s", group_names);
+ }
+ }
+ }
+ index = 0;
+ }
+ if ('\0' == *dest)
+ snprintf(dest, dest_len, "%s",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_NOT_ASSIGNED));
+}
+
+void ct_detail_refresh_view(ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+
+ if (cdetail_d->popup)
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+
+ if (cdetail_d->person)
+ {
+ err = contacts_record_destroy(cdetail_d->person, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ cdetail_d->person = NULL;
+ }
+ ctui_free_record_list(cdetail_d->list_contacts);
+ cdetail_d->list_contacts = NULL;
+
+ if (cdetail_d->person_id)
+ {
+ err = contacts_db_get_record(_contacts_person._uri,
+ cdetail_d->person_id, &(cdetail_d->person));
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_get_record() Failed(%d)", err);
+ elm_naviframe_item_pop(cdetail_d->navi);
+ return;
+ }
+
+ cdetail_d->list_contacts = ctui_person_get_contact_list(
+ cdetail_d->person_id);
+ }
+ else
+ {
+ contacts_list_h list_contacts = NULL;
+ int fd = 0;
+ int size __attribute__ ((unused)) = 0;
+ char buf[CT_VCARD_FILE_MAX_SIZE + 1] = { 0, };
+
+ fd = open(cdetail_d->vcard_path, O_RDONLY);
+ p_retm_if(-1 == fd, "open() return -1");
+ size = read(fd, buf, sizeof(buf) - 1);
+ close(fd);
+
+ err = contacts_vcard_parse_to_contacts(buf, &list_contacts);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_vcard_parse_to_contacts() Failed(%d)", err);
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ err = contacts_list_get_current_record_p(list_contacts,
+ &(cdetail_d->contact));
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ err = contacts_list_destroy(list_contacts, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_destroy(list_contacts) Failed(%d)", err);
+ elm_exit();
+ }
+ cdetail_d->list_contacts = eina_list_append(
+ cdetail_d->list_contacts, cdetail_d->contact);
+ }
+ err = contacts_list_destroy(list_contacts, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_destroy(list_contacts) Failed(%d)", err);
+ }
+ ctui_detail_genlist_update(cdetail_d);
+}
+
+void ct_detail_contact_changed(const char *view_uri, void *user_data)
+{
+ PH_TRACE;
+ int addressbook_id = 0;
+ int contact_id = 0;
+ int changed_id = 0;
+ int changed_type = 0;
+ int out_current_version = 0;
+ bool changed = false;
+ ct_detail_data *cdetail_d = (ct_detail_data *) user_data;
+ Eina_List *l;
+ void *v_record_contact = NULL;
+ contacts_list_h out_change_list;
+ int err;
+
+ EINA_LIST_FOREACH(cdetail_d->list_contacts, l, v_record_contact)
+ {
+ contacts_record_h record_contact = (contacts_record_h) v_record_contact;
+ if (NULL == record_contact)
+ continue;
+ err = contacts_record_get_int(record_contact,
+ _contacts_contact.address_book_id, &addressbook_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_int_from_list() Failed(%d)", err);
+
+ err = contacts_record_get_int(record_contact, _contacts_contact.id,
+ &contact_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_int_from_list() Failed(%d)", err);
+
+ changed = false;
+ err = contacts_db_get_changes_by_version(
+ _contacts_contact_updated_info._uri, addressbook_id,
+ cdetail_d->view_create_version, &out_change_list,
+ &out_current_version);
+
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ err = phone_cts_get_int_from_list(out_change_list,
+ _contacts_contact_updated_info.contact_id, &changed_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_int_from_list(addressbook_id) Failed(%d)",
+ err);
+ if (changed_id == contact_id)
+ {
+ changed = true;
+ phone_cts_get_int_from_list(out_change_list,
+ _contacts_contact_updated_info.type, &changed_type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_int_from_list(type) Failed(%d)", err);
+ break;
+ }
+ err = contacts_list_next(out_change_list);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_next() Failed(%d)", err);
+ }
+
+ err = contacts_list_destroy(out_change_list, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_destroy(out_change_list) Failed(%d)", err);
+
+ if (changed)
+ break;
+ }
+ cdetail_d->view_create_version = out_current_version;
+
+ if (cdetail_d->updated)
+ cdetail_d->updated = false;
+
+ if (CONTACTS_CHANGE_DELETED == changed_type)
+ {
+ if (cdetail_d->is_shortcut)
+ elm_exit();
+ else if (NULL == cdetail_d->prev_view_data && cdetail_d->ug)
+ ug_destroy_me(cdetail_d->ug);
+ else
+ elm_naviframe_item_pop_to(cdetail_d->prev_navi_item);
+ }
+ else
+ {
+ ct_detail_refresh_view(cdetail_d);
+ }
+}
+
+static inline void detail_append_str_with_linebreak(const char *src, char *dest,
+ int dest_len)
+{
+ PH_TRACE;
+ char temp[PH_TEXT_MAX_LEN];
+ if (src && '\0' != src[0])
+ {
+ if ('\0' == dest[0])
+ snprintf(dest, dest_len, "%s", src);
+ else
+ {
+ snprintf(temp, sizeof(temp), "%s\n%s", src, dest);
+ snprintf(dest, dest_len, "%s", temp);
+ }
+ }
+}
+
+int ct_detail_get_full_addr(contacts_record_h record, char *buf, int buf_len)
+{
+ PH_TRACE;
+ const char *code;
+ const char *region;
+ const char *locality;
+ const char *street;
+ const char *extended;
+ const char *country;
+ const char *pobox;
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_get_str_p(record, _contacts_address.postal_code,
+ (char**) &code);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list(postal_code) Failed(%d)", err);
+
+ err = contacts_record_get_str_p(record, _contacts_address.extended,
+ (char**) &extended);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list(extend) Failed(%d)", err);
+
+ err = contacts_record_get_str_p(record, _contacts_address.postbox,
+ (char**) &pobox);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list(postbox) Failed(%d)", err);
+
+ err = contacts_record_get_str_p(record, _contacts_address.street,
+ (char**) &street);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list(street) Failed(%d)", err);
+
+ err = contacts_record_get_str_p(record, _contacts_address.locality,
+ (char**) &locality);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list(locality) Failed(%d)", err);
+
+ err = contacts_record_get_str_p(record, _contacts_address.region,
+ (char**) &region);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list(region) Failed(%d)", err);
+
+ err = contacts_record_get_str_p(record, _contacts_address.country,
+ (char**) &country);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list(country) Failed(%d)", err);
+
+ detail_append_str_with_linebreak(country, buf, buf_len);
+ detail_append_str_with_linebreak(region, buf, buf_len);
+ detail_append_str_with_linebreak(locality, buf, buf_len);
+ detail_append_str_with_linebreak(street, buf, buf_len);
+ detail_append_str_with_linebreak(pobox, buf, buf_len);
+ detail_append_str_with_linebreak(extended, buf, buf_len);
+ detail_append_str_with_linebreak(code, buf, buf_len);
+
+ return 0;
+
+}
+
+void ct_detail_mouseup(void *data, Evas *evas, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ cdetail_d->touch_x = ev->canvas.x;
+ cdetail_d->touch_y = ev->canvas.y;
+}
+
+static void detail_myfile_ringtone_result(ui_gadget_h ug, service_h service,
+ void *data)
+{
+ PH_TRACE;
+ char *val = NULL;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ int err = CONTACTS_ERROR_NONE;
+
+ p_retm_if(NULL == ug || NULL == data, "ug or data is NULL");
+
+ if (service)
+ {
+ service_get_extra_data(service, "result", &val);
+ p_retm_if(!val, "return value is NULL");
+ p_retm_if(NULL == cdetail_d->person, "person is NULL");
+
+ err = contacts_record_set_str(cdetail_d->person,
+ _contacts_person.ringtone_path, (const char *) val);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+ err = contacts_db_update_record(cdetail_d->person);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_record() Failed(%d)", err);
+ ctui_create_contacts_error_popup(cdetail_d->navi, err);
+
+ elm_genlist_item_update(cdetail_d->ringtone_item);
+ free(val);
+ }
+}
+
+void ct_detail_myfile_ringtone(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ struct ug_cbs cbs = { 0 };
+
+ service_h service;
+ char *str = NULL;
+ char buf[PH_TEXT_MAX_LEN + 1];
+ const char *ringtone_path = NULL;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ err = contacts_record_get_str_p(cdetail_d->person,
+ _contacts_person.ringtone_path, &str);
+ if (CONTACTS_ERROR_NONE == err)
+ ringtone_path = ct_detail_get_ringtone_display_name(str);
+
+ service_create(&service);
+ service_add_extra_data(service, "path", "/opt/share/settings/Ringtones");
+ service_add_extra_data(service, "select_type", "SINGLE_FILE");
+ service_add_extra_data(service, "file_type", "SOUND");
+ if (ringtone_path)
+ {
+ snprintf(buf, sizeof(buf), "/opt/share/settings/Ringtones/%s",
+ ringtone_path);
+ service_add_extra_data(service, "marked_mode", buf);
+ }
+
+ cbs.result_cb = detail_myfile_ringtone_result;
+ cbs.destroy_cb = detail_destroy_child_ug;
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.priv = cdetail_d;
+
+ cdetail_d->child_ug = ug_create(cdetail_d->ug, MYFILES_UG, UG_MODE_FULLVIEW,
+ service, &cbs);
+ p_warn_if(NULL == cdetail_d->child_ug, "ug_create() Failed");
+
+ service_destroy(service);
+
+ if (cdetail_d->popup)
+ {
+ evas_object_del(cdetail_d->popup);
+ cdetail_d->popup = NULL;
+ }
+}
+
+void ct_detail_create_list_view(ct_detail_data *cdetail_d, Evas_Smart_Cb sel_cb,
+ void *cb_data, int id_caller)
+{
+ PH_TRACE;
+ ct_list_data *clist_d;
+ char buf[PH_TEXT_MAX_LEN + 1];
+
+ clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data));
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON;
+ clist_d->selected_person_id = id_caller;
+ clist_d->navi = cdetail_d->navi;
+ clist_d->win = cdetail_d->win;
+ clist_d->ug = cdetail_d->ug;
+ clist_d->gl_sel = sel_cb;
+ clist_d->gl_sel_data = cb_data;
+
+ ct_list_init_account_data(clist_d);
+ ct_list_get_contacts(clist_d, &clist_d->list);
+ list_create_itcs(clist_d);
+ clist_d->base_layout = ct_list_create_contact_layout(clist_d);
+
+ FREEandSTRDUP(clist_d->title, T_(CT_GET_TEXT_BASIC, CTTEXT_ALL_CONTACTS));
+ snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title,
+ clist_d->cnt_list_total);
+ clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, buf, NULL, NULL,
+ clist_d->base_layout, NULL);
+}
+
+static void __detail_ug_error_popup_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ug_destroy_me((ui_gadget_h) data);
+}
+
+int ct_detail_load_vcard_contact(ct_detail_data *cdetail_d, char *path)
+{
+ PH_TRACE;
+ unsigned int ret;
+ int err = CONTACTS_ERROR_NONE;
+ FILE *fp;
+ char vcard_stream[1024 * 100];
+ PH_DBG("path = %s", path);
+
+ fp = fopen(path, "r");
+ if (NULL == fp)
+ {
+ ERR("fopen() return NULL");
+ elm_exit();
+ return -1;
+ }
+ ret = fread(vcard_stream, 1, sizeof(vcard_stream), fp);
+ if (0 < ret && ret < sizeof(vcard_stream))
+ {
+ int fd = 0;
+ int size __attribute__ ((unused)) = 0;
+ char buf[CT_VCARD_FILE_MAX_SIZE + 1] = { 0, };
+ contacts_record_h record = NULL;
+ contacts_list_h list_contacts = NULL;
+ vcard_stream[ret] = '\0';
+
+ cdetail_d->vcard_path = strdup(path);
+
+ fd = open(cdetail_d->vcard_path, O_RDONLY);
+ if (fd < 0)
+ {
+ close((int) fp);
+ ERR("vOpen(%s) Failed", cdetail_d->vcard_path);
+ return -1;
+ }
+ size = read(fd, buf, sizeof(buf) - 1);
+ close(fd);
+
+ err = contacts_vcard_parse_to_contacts(buf, &list_contacts);
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ contacts_list_get_current_record_p(list_contacts, &record);
+ if (NULL == cdetail_d->contact)
+ cdetail_d->contact = record;
+ cdetail_d->list_contacts = eina_list_append(
+ cdetail_d->list_contacts, record);
+ err = contacts_list_next(list_contacts);
+ }
+ err = contacts_list_destroy(list_contacts, false);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_vcard_parse_to_contacts() Failed(%d)", err);
+ fclose(fp);
+ return -1;
+ }
+ }
+ else
+ {
+ ERR("vcard is invalid(%d)", ret);
+ cdetail_d->popup = phone_show_popup(cdetail_d->win,
+ S_(CT_SYS_POP_ERROR), 1.5);
+ evas_object_smart_callback_add(cdetail_d->popup, "timeout",
+ __detail_ug_error_popup_cb, cdetail_d->ug);
+ }
+ fclose(fp);
+ return 0;
+}
+
+void ct_detail_person_get_addressbook_name(contacts_record_h record_contact,
+ char *buf, int buf_len)
+{
+ PH_TRACE;
+ int addressbook_id;
+ int err = CONTACTS_ERROR_NONE;
+ const char *display_name;
+ char temp[PH_TEXT_MAX_LEN];
+ contacts_record_h record_addressbook = NULL;
+
+ buf[0] = '\0';
+
+ err = contacts_record_get_int(record_contact,
+ _contacts_contact.address_book_id, &addressbook_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int(address_book_id) Failed(%d)", err);
+
+ err = contacts_db_get_record(_contacts_address_book._uri, addressbook_id,
+ &record_addressbook);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() Failed(%d)",
+ err);
+
+ err = contacts_record_get_str_p(record_addressbook,
+ _contacts_address_book.name, (char**) &display_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (display_name && *display_name)
+ {
+ if (*buf)
+ {
+ snprintf(temp, sizeof(temp), "%s, %s", buf, display_name);
+ snprintf(buf, buf_len, "%s", temp);
+ }
+ else
+ {
+ snprintf(buf, buf_len, "%s", display_name);
+ }
+ }
+ err = contacts_record_destroy(record_addressbook, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+}
+
+static bool __phone_list_is_postal_exist(Eina_List *list,
+ const char *postal_str)
+{
+ PH_TRACE;
+ Eina_List *l;
+ void *v_record_temp = NULL;
+
+ EINA_LIST_FOREACH(list, l, v_record_temp)
+ {
+ contacts_record_h record_temp = (contacts_record_h) v_record_temp;
+ char postaladdress_tmp[PH_TEXT_MAX_LEN] = { 0, };
+ if (NULL == record_temp)
+ continue;
+
+ ct_detail_get_full_addr(record_temp, postaladdress_tmp,
+ sizeof(postaladdress_tmp));
+ if (0 == strcmp(postaladdress_tmp, postal_str))
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+Eina_List* ct_detail_person_get_postal_list(Eina_List *contact_list)
+{
+ PH_TRACE;
+ Eina_Bool checkduplicate = false;
+ int index = 0;
+ int err = CONTACTS_ERROR_NONE;
+ Eina_List *l;
+ Eina_List *list_postal_record = NULL;
+ void *v_record_contact = NULL;
+ contacts_record_h record_address = NULL;
+ contacts_record_h record_clone = NULL;
+
+ p_retvm_if(contact_list == NULL, NULL, "Parameter(contact_list) is NULL");
+
+ EINA_LIST_FOREACH(contact_list, l, v_record_contact)
+ {
+ contacts_record_h record_contact = (contacts_record_h) v_record_contact;
+ index = 0;
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.address, index++, &record_address))
+ {
+ char postaladdress[PH_TEXT_MAX_LEN] = { 0, };
+ ct_detail_get_full_addr(record_address, postaladdress,
+ sizeof(postaladdress));
+ if (checkduplicate)
+ {
+ if (__phone_list_is_postal_exist(list_postal_record,
+ postaladdress))
+ {
+ ERR(
+ "__phone_list_is_postal_exist() return true number = %s",
+ postaladdress);
+ continue;
+ }
+ }
+ err = contacts_record_clone(record_address, &record_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_clone() Failed(%d)", err);
+ break;
+ }
+ list_postal_record = eina_list_append(list_postal_record,
+ record_clone);
+ }
+ checkduplicate = true;
+ }
+ return list_postal_record;
+}
+
+static bool __phone_list_is_messenger_exist(Eina_List *list,
+ const char *messenger)
+{
+ PH_TRACE;
+ Eina_List *l;
+ char *messenger_temp;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_temp = NULL;
+
+ EINA_LIST_FOREACH(list, l, v_record_temp)
+ {
+ contacts_record_h record_temp = (contacts_record_h) v_record_temp;
+ if (NULL == record_temp)
+ continue;
+
+ err = contacts_record_get_str_p(record_temp, _contacts_messenger.im_id,
+ &messenger_temp);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (NULL == messenger_temp)
+ continue;
+
+ if (0 == strcmp(messenger_temp, messenger))
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+Eina_List* ct_detail_person_get_messenger_list(Eina_List *contact_list)
+{
+ PH_TRACE;
+ Eina_Bool checkduplicate = false;
+ int index = 0;
+ char *messenger;
+ Eina_List *l;
+ Eina_List *list_messenger_record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_contact = NULL;
+ contacts_record_h record_messenger = NULL;
+ contacts_record_h record_clone = NULL;
+
+ p_retvm_if(contact_list == NULL, NULL, "Parameter(contact_list) is NULL");
+
+ EINA_LIST_FOREACH(contact_list, l, v_record_contact)
+ {
+ contacts_record_h record_contact = (contacts_record_h) v_record_contact;
+ index = 0;
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.messenger, index++, &record_messenger))
+ {
+ err = contacts_record_get_str_p(record_messenger,
+ _contacts_messenger.im_id, &messenger);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_str_from_list() Failed(%d)", err);
+ break;
+ }
+ if (checkduplicate)
+ {
+ if (__phone_list_is_messenger_exist(list_messenger_record,
+ messenger))
+ {
+ ERR(
+ "__phone_list_is_email_exist() return true messenger = %s",
+ messenger);
+ continue;
+ }
+ }
+ err = contacts_record_clone(record_messenger, &record_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+ list_messenger_record = eina_list_append(list_messenger_record,
+ record_clone);
+ }
+ checkduplicate = true;
+ }
+ return list_messenger_record;
+}
+
+static bool __phone_list_is_website_exist(Eina_List *list, const char *website)
+{
+ PH_TRACE;
+ Eina_List *l;
+ char *website_temp;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_temp = NULL;
+
+ EINA_LIST_FOREACH(list, l, v_record_temp)
+ {
+ contacts_record_h record_temp = (contacts_record_h) v_record_temp;
+ if (NULL == record_temp)
+ continue;
+
+ err = contacts_record_get_str_p(record_temp, _contacts_url.url,
+ &website_temp);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (NULL == website_temp)
+ continue;
+
+ if (0 == strcmp(website_temp, website))
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+Eina_List* ct_detail_person_get_website_list(Eina_List *contact_list)
+{
+ PH_TRACE;
+ Eina_Bool checkduplicate = false;
+ int index = 0;
+ char *website;
+ Eina_List *l;
+ Eina_List *list_website_record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_contact = NULL;
+ contacts_record_h record_url = NULL;
+ contacts_record_h record_clone = NULL;
+
+ p_retvm_if(contact_list == NULL, NULL, "Parameter(contact_list) is NULL");
+
+ EINA_LIST_FOREACH(contact_list, l, v_record_contact)
+ {
+ contacts_record_h record_contact = (contacts_record_h) v_record_contact;
+ index = 0;
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.url, index++, &record_url))
+ {
+ err = contacts_record_get_str_p(record_url, _contacts_url.url,
+ &website);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_str_from_list() Failed(%d)", err);
+ break;
+ }
+ if (checkduplicate
+ && __phone_list_is_website_exist(list_website_record,
+ website))
+ {
+ ERR("__phone_list_is_email_exist() return true URL = %s",
+ website);
+ continue;
+ }
+ err = contacts_record_clone(record_url, &record_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+ list_website_record = eina_list_append(list_website_record,
+ record_clone);
+ }
+ checkduplicate = true;
+ }
+ return list_website_record;
+}
+
+static bool __phone_list_is_relationship_exist(Eina_List *list,
+ const char *relationship_name)
+{
+ PH_TRACE;
+ Eina_List *cursor;
+ char *relationship_name_temp;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_temp = NULL;
+
+ EINA_LIST_FOREACH(list, cursor, v_record_temp)
+ {
+ contacts_record_h record_temp = (contacts_record_h) v_record_temp;
+ if (NULL == record_temp)
+ continue;
+
+ err = contacts_record_get_str_p(record_temp,
+ _contacts_relationship.name, &relationship_name_temp);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (NULL == relationship_name_temp)
+ continue;
+
+ if (0 == strcmp(relationship_name_temp, relationship_name))
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+Eina_List* ct_detail_person_get_relationship_list(Eina_List *contact_list)
+{
+ PH_TRACE;
+ Eina_Bool checkduplicate = false;
+ int index = 0;
+ char *relationship_name;
+ Eina_List *l;
+ Eina_List *list_relationship_record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_contact = NULL;
+ contacts_record_h record_relationship = NULL;
+ contacts_record_h record_clone = NULL;
+
+ p_retvm_if(contact_list == NULL, NULL, "Parameter(contact_list) is NULL");
+
+ EINA_LIST_FOREACH(contact_list, l, v_record_contact)
+ {
+ contacts_record_h record_contact = (contacts_record_h) v_record_contact;
+ index = 0;
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.relationship, index++,
+ &record_relationship))
+ {
+ err = contacts_record_get_str_p(record_relationship,
+ _contacts_relationship.name, &relationship_name);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_str_from_list() Failed(%d)", err);
+ break;
+ }
+ if (checkduplicate
+ && __phone_list_is_relationship_exist(
+ list_relationship_record, relationship_name))
+ {
+ ERR("__phone_list_is_relationship_exist() return true URL = %s",
+ relationship_name);
+ continue;
+ }
+ err = contacts_record_clone(record_relationship, &record_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+ list_relationship_record = eina_list_append(
+ list_relationship_record, record_clone);
+ }
+ checkduplicate = true;
+ }
+ return list_relationship_record;
+}
+
+static bool __phone_list_is_event_exist(Eina_List *list, int event_date)
+{
+ PH_TRACE;
+ Eina_List *l;
+ int event_date_temp;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_temp = NULL;
+
+ EINA_LIST_FOREACH(list, l, v_record_temp)
+ {
+ contacts_record_h record_temp = (contacts_record_h) v_record_temp;
+ if (NULL == record_temp)
+ continue;
+
+ err = contacts_record_get_int(record_temp, _contacts_event.date,
+ &event_date_temp);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if (event_date_temp == event_date)
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+Eina_List* ct_detail_person_get_event_list(Eina_List *contact_list)
+{
+ PH_TRACE;
+ Eina_Bool checkduplicate = false;
+ int index = 0;
+ int event_date;
+ Eina_List *l;
+ Eina_List *list_event_record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_contact = NULL;
+ contacts_record_h record_event = NULL;
+ contacts_record_h record_clone = NULL;
+
+ p_retvm_if(contact_list == NULL, NULL, "Parameter(contact_list) is NULL");
+
+ EINA_LIST_FOREACH(contact_list, l, v_record_contact)
+ {
+ contacts_record_h record_contact = (contacts_record_h) v_record_contact;
+ index = 0;
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.event, index++, &record_event))
+ {
+ err = contacts_record_get_int(record_event, _contacts_event.date,
+ &event_date);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_int_from_list() Failed(%d)", err);
+ break;
+ }
+ if (checkduplicate
+ && __phone_list_is_event_exist(list_event_record,
+ event_date))
+ {
+ ERR("__phone_list_is_email_exist() return true event_date = %d",
+ event_date);
+ continue;
+ }
+ err = contacts_record_clone(record_event, &record_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+ list_event_record = eina_list_append(list_event_record,
+ record_clone);
+ }
+ checkduplicate = true;
+ }
+ return list_event_record;
+}
+
+static bool __phone_list_is_nickname_exist(Eina_List & list, const std::string & nickname)
+{
+ PH_TRACE;
+ Eina_List * tempList = NULL;
+ char * tempNickname = NULL;
+ void * listItemData = NULL;
+ int errCode = CONTACTS_ERROR_NONE;
+
+ EINA_LIST_FOREACH(&list, tempList, listItemData)
+ {
+ contacts_record_h tempRecord = static_cast<contacts_record_h>(listItemData);
+ if (!tempRecord)
+ {
+ continue;
+ }
+
+ errCode = contacts_record_get_str_p(tempRecord, _contacts_nickname.name, &tempNickname);
+ p_retvm_if(CONTACTS_ERROR_NONE != errCode, false,"contacts_record_get_str_p() Failed(%d)", errCode);
+
+ if (!tempNickname)
+ {
+ continue;
+ }
+
+ if (nickname == tempNickname)
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+Eina_List * ct_detail_person_get_nickname_list(Eina_List & contact_list)
+{
+ PH_TRACE;
+
+ Eina_Bool checkduplicate = false;
+ int index = 0;
+ char * nickname = NULL;
+ Eina_List * tempList = NULL;
+ Eina_List * nicknameRecordsList = NULL;
+ int errCode = CONTACTS_ERROR_NONE;
+ void * listData = NULL;
+ contacts_record_h nicknameRecord = NULL;
+ contacts_record_h clonedRecord = NULL;
+
+ EINA_LIST_FOREACH(&contact_list, tempList, listData)
+ {
+ contacts_record_h contactRecord = static_cast<contacts_record_h> (listData);
+ index = 0;
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(contactRecord,
+ _contacts_contact.nickname, index++, &nicknameRecord))
+ {
+ errCode = contacts_record_get_str_p(nicknameRecord, _contacts_nickname.name, &nickname);
+ if (CONTACTS_ERROR_NONE != errCode)
+ {
+ ERR("phone_cts_get_str_from_list() Failed(%d)", errCode);
+ break;
+ }
+ if (checkduplicate && nicknameRecordsList && __phone_list_is_nickname_exist(*nicknameRecordsList, nickname))
+ {
+ ERR("__phone_list_is_nickname_exist() return true nickname = %s", nickname);
+ continue;
+ }
+ errCode = contacts_record_clone(nicknameRecord, &clonedRecord);
+ if (CONTACTS_ERROR_NONE != errCode)
+ {
+ ERR("contacts_record_clone() Failed(%d)", errCode);
+ break;
+ }
+ nicknameRecordsList = eina_list_append(nicknameRecordsList, clonedRecord);
+ }
+ checkduplicate = true;
+ }
+ return nicknameRecordsList;
+}
+
+static bool __phone_list_is_note_exist(Eina_List *list, const char *note)
+{
+ PH_TRACE;
+ Eina_List *l;
+ char *note_temp;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_temp = NULL;
+
+ EINA_LIST_FOREACH(list, l, v_record_temp)
+ {
+ contacts_record_h record_temp = (contacts_record_h) v_record_temp;
+ if (NULL == record_temp)
+ continue;
+
+ err = contacts_record_get_str_p(record_temp, _contacts_note.note,
+ &note_temp);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (NULL == note_temp)
+ continue;
+
+ if (0 == strcmp(note_temp, note))
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+Eina_List* ct_detail_person_get_note_list(Eina_List *contact_list)
+{
+ PH_TRACE;
+ Eina_Bool checkduplicate = false;
+ int index = 0;
+ char *note;
+ Eina_List *l;
+ Eina_List *list_note_record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_contact = NULL;
+ contacts_record_h record_note = NULL;
+ contacts_record_h record_clone = NULL;
+
+ p_retvm_if(contact_list == NULL, NULL, "Parameter(contact_list) is NULL");
+
+ EINA_LIST_FOREACH(contact_list, l, v_record_contact)
+ {
+ contacts_record_h record_contact = (contacts_record_h) v_record_contact;
+ index = 0;
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.note, index++, &record_note))
+ {
+ err = contacts_record_get_str_p(record_note, _contacts_note.note,
+ &note);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_str_from_list() Failed(%d)", err);
+ break;
+ }
+ if (checkduplicate
+ && __phone_list_is_note_exist(list_note_record, note))
+ {
+ ERR("__phone_list_is_email_exist() return true note = %s",
+ note);
+ continue;
+ }
+ err = contacts_record_clone(record_note, &record_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+ list_note_record = eina_list_append(list_note_record, record_clone);
+ }
+ checkduplicate = true;
+ }
+ return list_note_record;
+}
+
+bool ct_detail_person_get_readonly(Eina_List *list_contacts)
+{
+ PH_TRACE;
+ int addressbook_id = -1;
+ int addressbook_mode = CONTACTS_ADDRESS_BOOK_MODE_READONLY;
+ int err = CONTACTS_ERROR_NONE;
+ Eina_List *l;
+ void *v_record_contact = NULL;
+ contacts_record_h record_addressbook = NULL;
+
+ p_retvm_if(NULL == list_contacts, true, "list_contacts is NULL");
+
+ EINA_LIST_FOREACH(list_contacts, l, v_record_contact)
+ {
+ contacts_record_h record_contact = (contacts_record_h) v_record_contact;
+ if (NULL == record_contact)
+ continue;
+
+ err = contacts_record_get_int(record_contact,
+ _contacts_contact.address_book_id, &addressbook_id);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_db_get_record(_contacts_address_book._uri,
+ addressbook_id, &record_addressbook);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ err = contacts_record_get_int(record_addressbook,
+ _contacts_address_book.mode, &addressbook_mode);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_destroy(record_addressbook, true);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ if (CONTACTS_ADDRESS_BOOK_MODE_READONLY != addressbook_mode)
+ return false;
+ }
+ return true;
+}
diff --git a/lib/details/ct-detail-utils.h b/lib/details/ct-detail-utils.h
new file mode 100755
index 0000000..420cd1a
--- /dev/null
+++ b/lib/details/ct-detail-utils.h
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CONTACTS_DETAIL_UTILS_H__
+#define __CONTACTS_DETAIL_UTILS_H__
+
+/**
+ * Helper-module used by core-side part of managing contacts-details module.
+ */
+
+enum CT_BLOCK_TYPE
+{
+ CT_BLOCK_CALL = 0x01,
+ CT_BLOCK_MESSAGE = 0x02,
+};
+
+void ct_detail_make_vcard(ct_detail_data *cdetail_d);
+void ct_detail_send_via_msg(void *data, Evas_Object *obj, void *event_info);
+void ct_detail_send_via_email(void *data, Evas_Object *obj, void *event_info);
+void ct_detail_send_via_bluetooth(void *data, Evas_Object *obj,
+ void *event_info);
+void ct_detail_delete_namecards(ct_detail_data *cdetail_d);
+
+/*
+ * @brief Hide popup from current view and delete it.
+ *
+ * @param data Pointer to ct_input_data
+ * @param obj Could be NULL
+ * @param event_info Could be NULL
+ */
+void ct_detail_popup_hide_cb(void *data, Evas_Object *obj, void *event_info);
+
+/*
+ * @brief Hide menu from current view and delete it.
+ *
+ * @param data Pointer to ct_input_data
+ * @param obj Could be NULL
+ * @param event_info Could be NULL
+ */
+void ct_detail_menu_hide_cb(void *data, Evas_Object *obj, void *event_info);
+
+void ct_detail_contact_changed(const char *view_uri, void *user_data);
+void ct_detail_mouseup(void *data, Evas *evas, Evas_Object *obj,
+ void *event_info);
+const char* ct_detail_get_ringtone_display_name(const char *real_data);
+const char* ct_detail_get_vibration_display_name(const char *real_data);
+void ct_detail_get_group_names(contacts_record_h record_contact, char *dest,
+ int dest_len);
+int ct_detail_get_full_addr(contacts_record_h record, char *buf, int buf_len);
+int ct_detail_parse_bundle(service_h service, ct_detail_data* cdetail_d,
+ int *ret);
+void ct_detail_myfile_ringtone(void *data, Evas_Object *obj, void *event_info);
+void ct_detail_myfile_vibration(void *data, Evas_Object *obj, void *event_info);
+char* ct_detail_gl_baseinfo_label_get(void *data, Evas_Object *obj,
+ const char *part);
+Evas_Object* ct_detail_gl_baseinfo_icon_get(void *data, Evas_Object *obj,
+ const char *part);
+Evas_Object* ct_detail_gl_number_util_icon_get(void *data, Evas_Object *obj,
+ const char *part);
+void ct_detail_voice_call_cb(void *data, Evas_Object *obj, void *event_info);
+void ct_detail_msg_ug_cb(void *data, Evas_Object *obj, void *event_info);
+void ct_detail_create_list_view(ct_detail_data *cdetail_d, Evas_Smart_Cb sel_cb,
+ void *cb_data, int id_caller);
+int ct_detail_load_vcard_contact(ct_detail_data *cdetail_d, char *path);
+void ct_detail_person_get_group_names(Eina_List *contact_list, char *dest,
+ int dest_len);
+void ct_detail_person_get_company_str(Eina_List *contact_list, char *dest,
+ int dest_len);
+void ct_detail_person_get_extra_name(Eina_List *contact_list,
+ contacts_record_h record_person, char *dest, int dest_len);
+void ct_detail_person_get_addressbook_name(contacts_record_h record_account,
+ char *buf, int buf_len);
+Eina_List* ct_detail_person_get_postal_list(Eina_List *contact_list);
+Eina_List* ct_detail_person_get_messenger_list(Eina_List *contact_list);
+Eina_List* ct_detail_person_get_website_list(Eina_List *contact_list);
+Eina_List* ct_detail_person_get_relationship_list(Eina_List *contact_list);
+Eina_List* ct_detail_person_get_event_list(Eina_List *contact_list);
+Eina_List* ct_detail_person_get_nickname_list(Eina_List & contact_list);
+Eina_List* ct_detail_person_get_note_list(Eina_List *contact_list);
+void ctui_person_free_contact_list(Eina_List *contact_list);
+bool ct_detail_person_get_readonly(Eina_List *list_contacts);
+void ct_detail_refresh_view(ct_detail_data *cdetail_d);
+
+#endif //__CONTACTS_DETAIL_UTILS_H__
diff --git a/lib/details/ct-detail-vibration-popup.cpp b/lib/details/ct-detail-vibration-popup.cpp
new file mode 100644
index 0000000..26c7101
--- /dev/null
+++ b/lib/details/ct-detail-vibration-popup.cpp
@@ -0,0 +1,267 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "ct-detail-vibration-popup.h"
+#include "ct-detail-vibration.h"
+#include "phone.h"
+#include "phone-common.h"
+#include "phone-text.h"
+
+typedef struct
+{
+ int id;
+ Evas_Object *radio_group;
+} ct_detail_vibration_item;
+
+typedef struct
+{
+ Evas_Object *parent;
+ Evas_Object *popup;
+ Evas_Object *genlist;
+ Evas_Object *radio_group;
+
+ ct_vibration_set_result_cb result_cb;
+ void *result_cb_data;
+
+ int vibr_id;
+ int prev_vibr_id;
+
+ unsigned item_count;
+ ct_detail_vibration_item *items;
+} ct_detail_vibration_data;
+
+static void detail_vibration_destroy(ct_detail_vibration_data *cvibr_d);
+
+static void detail_vibration_create_items(ct_detail_vibration_data *cvibr_d);
+
+static Evas_Object * detail_vibration_create_popup(ct_detail_vibration_data *cvibr_d);
+static Evas_Object * detail_vibration_create_genlist(ct_detail_vibration_data *cvibr_d);
+static Evas_Object * detail_vibration_create_radio_group(ct_detail_vibration_data *cvibr_d);
+
+static void detail_vibration_gl_fill(ct_detail_vibration_data *cvibr_d);
+static void detail_vibration_gl_sel_cb(void *data, Evas_Object *obj, void *event_info);
+static char * detail_vibration_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object * detail_vibration_gl_content_get(void *data, Evas_Object *obj, const char *part);
+
+static void detail_vibration_ok_cb(void *data, Evas_Object *obj, void *event_info);
+static void detail_vibration_destroy_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+
+Evas_Object * ct_detail_vibration_popup_create(Evas_Object *parent, const char *vibration_path,
+ ct_vibration_set_result_cb result_cb, void *result_cb_data)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == parent, NULL, "parent is NULL");
+ ct_detail_vibration_data *cvibr_d = (ct_detail_vibration_data *)
+ calloc(1, sizeof(ct_detail_vibration_data));
+ cvibr_d->parent = parent;
+ cvibr_d->result_cb = result_cb;
+ cvibr_d->result_cb_data = result_cb_data;
+ cvibr_d->prev_vibr_id = ct_detail_vibration_get_msgid(vibration_path);
+ cvibr_d->vibr_id = cvibr_d->prev_vibr_id;
+
+ cvibr_d->popup = detail_vibration_create_popup(cvibr_d);
+ if(!cvibr_d->popup)
+ {
+ detail_vibration_destroy(cvibr_d);
+ return NULL;
+ }
+
+ cvibr_d->genlist = detail_vibration_create_genlist(cvibr_d);
+ if(!cvibr_d->genlist)
+ {
+ evas_object_del(cvibr_d->popup);
+ return NULL;
+ }
+
+ cvibr_d->radio_group = detail_vibration_create_radio_group(cvibr_d);
+ if(!cvibr_d->radio_group)
+ {
+ evas_object_del(cvibr_d->popup);
+ return NULL;
+ }
+
+ detail_vibration_create_items(cvibr_d);
+ detail_vibration_gl_fill(cvibr_d);
+
+ return cvibr_d->popup;
+}
+
+static void detail_vibration_destroy(ct_detail_vibration_data *cvibr_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == cvibr_d, "cvibr_d is NULL");
+
+ free(cvibr_d->items);
+ free(cvibr_d);
+}
+
+static void detail_vibration_create_items(ct_detail_vibration_data *cvibr_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == cvibr_d, "cvibr_d is NULL");
+
+ cvibr_d->item_count = CTTEXT_VIBRATION_MAX;
+ cvibr_d->items = (ct_detail_vibration_item *)
+ calloc(cvibr_d->item_count, sizeof(ct_detail_vibration_item));
+
+ for(unsigned i = 0; i < cvibr_d->item_count; ++i)
+ {
+ cvibr_d->items[i].id = i;
+ cvibr_d->items[i].radio_group = cvibr_d->radio_group;
+ }
+}
+
+static Evas_Object * detail_vibration_create_popup(ct_detail_vibration_data *cvibr_d)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == cvibr_d, NULL, "cvibr_d is NULL");
+
+ Evas_Object *popup = elm_popup_add(cvibr_d->parent);
+ p_retvm_if(NULL == popup, NULL, "elm_popup_add() failed");
+
+ elm_object_part_text_set(popup, "title,text",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_VIBRATION_PATTERN));
+ bool success = phone_popup_add_button(popup, S_(PH_SYS_SK_OK),
+ detail_vibration_ok_cb, cvibr_d) != NULL
+ && phone_popup_add_button(popup, S_(PH_SYS_SK_CANCEL),
+ NULL, NULL) != NULL;
+
+ if(!success)
+ {
+ evas_object_del(popup);
+ return NULL;
+ }
+
+ elm_object_style_set(popup, "content_no_vhpad");
+ evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL,
+ detail_vibration_destroy_cb, cvibr_d);
+ evas_object_show(popup);
+
+ return popup;
+}
+
+static Evas_Object * detail_vibration_create_genlist(ct_detail_vibration_data *cvibr_d)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == cvibr_d, NULL, "cvibr_d is NULL");
+
+ Evas_Object *genlist = elm_genlist_add(cvibr_d->popup);
+ p_retvm_if(NULL == genlist, NULL, "elm_genlist_add() failed");
+
+ elm_object_content_set(cvibr_d->popup, genlist);
+ evas_object_smart_callback_add(genlist, "selected", detail_vibration_gl_sel_cb, cvibr_d);
+
+ return genlist;
+}
+
+static Evas_Object * detail_vibration_create_radio_group(ct_detail_vibration_data *cvibr_d)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == cvibr_d, NULL, "cvibr_d is NULL");
+
+ Evas_Object *radio = elm_radio_add(cvibr_d->genlist);
+ p_retvm_if(NULL == radio, NULL, "elm_radio_add() failed");
+
+ elm_radio_value_pointer_set(radio, &cvibr_d->vibr_id);
+ elm_radio_state_value_set(radio, -1);
+ elm_radio_value_set(radio, cvibr_d->prev_vibr_id);
+ evas_object_hide(radio);
+
+ return radio;
+}
+
+static void detail_vibration_gl_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ p_retm_if(NULL == event_info, "event_info is NULL");
+
+ ct_detail_vibration_data *cvibr_d = (ct_detail_vibration_data *) data;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ ct_detail_vibration_item *item_data = (ct_detail_vibration_item *)
+ elm_object_item_data_get(item);
+ p_retm_if(NULL == item_data, "item_data is NULL");
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ elm_radio_value_set(cvibr_d->radio_group, item_data->id);
+ //TODO: play selected vibration pattern
+}
+
+static void detail_vibration_gl_fill(ct_detail_vibration_data *cvibr_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == cvibr_d, "cvibr_d is NULL");
+
+ Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
+ itc->item_style = "1text.1icon.2/popup";
+ itc->func.text_get = detail_vibration_gl_text_get;
+ itc->func.content_get = detail_vibration_gl_content_get;
+
+ ct_detail_vibration_item *item = cvibr_d->items;
+ ct_detail_vibration_item *end = item + cvibr_d->item_count;
+ for(; item != end; ++item)
+ {
+ elm_genlist_item_append(cvibr_d->genlist, itc, item,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+
+ elm_genlist_item_class_free(itc);
+}
+
+static char * detail_vibration_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data, NULL, "data is NULL");
+ ct_detail_vibration_item *item_data = (ct_detail_vibration_item *) data;
+ return strdup(T_(CT_GET_TEXT_VIBRATION, item_data->id));
+}
+
+static Evas_Object * detail_vibration_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data, NULL, "data is NULL");
+ ct_detail_vibration_item *item_data = (ct_detail_vibration_item *) data;
+
+ Evas_Object *radio = elm_radio_add(obj);
+ p_retvm_if(NULL == radio, NULL, "elm_radio_add() failed");
+ elm_radio_state_value_set(radio, item_data->id);
+ elm_radio_group_add(radio, item_data->radio_group);
+ return radio;
+}
+
+static void detail_vibration_ok_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ ct_detail_vibration_data *cvibr_d = (ct_detail_vibration_data *) data;
+
+ if(cvibr_d->vibr_id != cvibr_d->prev_vibr_id)
+ {
+ if(cvibr_d->result_cb)
+ {
+ cvibr_d->result_cb(cvibr_d->result_cb_data,
+ ct_detail_vibration_get_path(cvibr_d->vibr_id));
+ }
+ }
+}
+
+static void detail_vibration_destroy_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ ct_detail_vibration_data *cvibr_d = (ct_detail_vibration_data *) data;
+ detail_vibration_destroy(cvibr_d);
+}
diff --git a/lib/details/ct-detail-vibration-popup.h b/lib/details/ct-detail-vibration-popup.h
new file mode 100644
index 0000000..1c40b8c
--- /dev/null
+++ b/lib/details/ct-detail-vibration-popup.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CT_DETAIL_VIBRATION_POPUP_H__
+#define __CT_DETAIL_VIBRATION_POPUP_H__
+
+#include <contacts.h>
+#include <Elementary.h>
+
+/*
+ * @brief Called when user selects new vibration pattern
+ * @param[in] data data passed as result_cb_data
+ * @param[in] vibration_path new selected vibration path
+ */
+typedef void(*ct_vibration_set_result_cb)(void *data, const char *vibration_path);
+
+/*
+ * @brief Create vibration pattern selection popup
+ * @param[in] parent parent widget for popup
+ * @param[in] vibration_path current vibration path
+ * @param[in] result_cb callback to be called when vibration was set
+ * @param[in] result_cb_data data to pass to result_cb
+ * @return popup on success, otherwise NULL
+ */
+Evas_Object * ct_detail_vibration_popup_create(Evas_Object *parent, const char *vibration_path,
+ ct_vibration_set_result_cb result_cb, void *result_cb_data);
+
+#endif /* __CT_DETAIL_VIBRATION_POPUP_H__ */
diff --git a/lib/details/ct-detail-vibration.cpp b/lib/details/ct-detail-vibration.cpp
new file mode 100644
index 0000000..cacca96
--- /dev/null
+++ b/lib/details/ct-detail-vibration.cpp
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "ct-detail-vibration.h"
+#include "phone.h"
+#include "phone-common.h"
+#include "phone-text.h"
+
+/**
+ * FIXME: the following paths are not real because we don't have these
+ * vibration patterns yet
+ */
+
+#define CT_VIBRATION_PATH_PREFIX "/opt/share/svi/haptic/default"
+static const char * const CT_VIBRATION_PATH[] =
+{
+ "",
+ CT_VIBRATION_PATH_PREFIX"heartbeat.ivt",
+ CT_VIBRATION_PATH_PREFIX"jinglebell.ivt",
+ CT_VIBRATION_PATH_PREFIX"ticktock.ivt",
+ CT_VIBRATION_PATH_PREFIX"waltz.ivt",
+ CT_VIBRATION_PATH_PREFIX"zigizigzig.ivt"
+};
+
+int ct_detail_vibration_get_msgid(const char *path)
+{
+ PH_TRACE;
+ if(NULL == path || '\0' == *path)
+ {
+ return CTTEXT_VIBRATION_DEFAULT;
+ }
+
+ path = strrchr(path, '/');
+ for(unsigned msgid = CTTEXT_VIBRATION_DEFAULT + 1;
+ msgid < ARRAY_SIZE(CT_VIBRATION_PATH); ++msgid)
+ {
+ if(strcmp(path, strrchr(CT_VIBRATION_PATH[msgid], '/')) == 0)
+ {
+ return msgid;
+ }
+ }
+
+ return CTTEXT_VIBRATION_DEFAULT;
+}
+
+const char * ct_detail_vibration_get_path(int vibration_msgid)
+{
+ PH_TRACE;
+ p_retvm_if(vibration_msgid < 0
+ || vibration_msgid > (int) ARRAY_SIZE(CT_VIBRATION_PATH),
+ NULL, "invalid msgid");
+ return CT_VIBRATION_PATH[vibration_msgid];
+}
diff --git a/lib/details/ct-detail-vibration.h b/lib/details/ct-detail-vibration.h
new file mode 100644
index 0000000..abf5942
--- /dev/null
+++ b/lib/details/ct-detail-vibration.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CT_DETAIL_VIBRATION_H__
+#define __CT_DETAIL_VIBRATION_H__
+
+/*
+ * @brief Get vibration pattern ID by pattern file path
+ * @param[in] path path to vibration pattern file
+ * @return vibration pattern ID
+ */
+int ct_detail_vibration_get_msgid(const char *path);
+
+/*
+ * @brief Get vibration pattern file path by vibration ID
+ * @param[in] vibrtaion_id vibration pattern ID
+ * @return vibration pattern file path
+ */
+const char * ct_detail_vibration_get_path(int vibration_msgid);
+
+#endif /* __CT_DETAIL_VIBRATION_H__ */
diff --git a/lib/details/ct-detail-view.cpp b/lib/details/ct-detail-view.cpp
new file mode 100755
index 0000000..b893f6d
--- /dev/null
+++ b/lib/details/ct-detail-view.cpp
@@ -0,0 +1,3783 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <ui-gadget-module.h>
+
+#include <errno.h>
+#include <string.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <app.h>
+#include <msg.h>
+#include <account.h>
+
+#include "phone.h"
+#include "ct-detail.h"
+#include "ct-detail-utils.h"
+#include "ct-detail-view.h"
+#include "ct-detail-history.h"
+#include "ct-detail-activity.h"
+#include "ct-detail-vibration.h"
+#include "ct-detail-vibration-popup.h"
+#include "ct-list.h"
+#include "ct-input-view.h"
+#include "ct-group.h"
+#include "ct-group-assign-popup.h"
+#include "ct-list-view-common.h"
+
+#define _CT_LINK
+
+static const char *PHONE_ROTATE = "phone_rotate";
+#define REVEAL_BUTTON "reveal"
+#define MINUS_BUTTON "minus"
+
+enum DETAIL_ITC_TYPE
+{
+ DETAIL_ITC_NOTE = 0,
+ DETAIL_ITC_NICKNAME,
+ DETAIL_ITC_NUM_UTIL_BTN,
+ DETAIL_ITC_UTIL_BTN,
+ DETAIL_ITC_ADDRBOOK,
+ DETAIL_ITC_NUMBER,
+ DETAIL_ITC_EMAIL,
+ DETAIL_ITC_URL,
+ DETAIL_ITC_MESSENGER,
+ DETAIL_ITC_EVENT,
+ DETAIL_ITC_RINGTONE,
+ DETAIL_ITC_VIBRATION,
+ DETAIL_ITC_GROUP,
+ DETAIL_ITC_RELATIONSHIP,
+ DETAIL_ITC_NUMBER_DEFAULT,
+ DETAIL_ITC_EMAIL_DEFAULT,
+ DETAIL_ITC_ADDRESS,
+ DETAIL_ITC_LINK_UNLINK,
+ DETAIL_ITC_UNLINK_POPUP,
+ DETAIL_ITC_EDIT_POPUP,
+ DETAIL_ITC_LINK_ITEM,
+ DETAIL_ITC_LINK_LIST,
+ DETAIL_ITC_LINK_LIST_SUB,
+ DETAIL_ITC_FIELD_TITLE,
+ DETAIL_ITC_FIELD,
+ DETAIL_ITC_TITLE,
+ DETAIL_ITC_UTIL_1BTN,
+ DETAIL_ITC_BASEINFO_1TEXT_1ICON,
+ DETAIL_ITC_BASEINFO_1TEXT_2ICON,
+ DETAIL_ITC_BASEINFO_2TEXT_1ICON,
+ DETAIL_ITC_BASEINFO_2TEXT_2ICON,
+ DETAIL_ITC_BASEINFO_3TEXT_1ICON,
+ DETAIL_ITC_BASEINFO_3TEXT_2ICON,
+ DETAIL_ITC_DEFAULT_NUMBER_SET_POPUP,
+ DETAIL_ITC_DEFAULT_EMAIL_SET_POPUP,
+ DETAIL_ITC_DEFAULT_NAME_POPUP,
+ DETAIL_ITC_MAX,
+};
+
+static Elm_Genlist_Item_Class detail_itcs[] =
+{
+ {
+ 0, 0, 1,
+ "multiline/dialogue/2text", /* NOTE */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "multiline/dialogue/2text", /* NICKNAME */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "detail.3icon", /* NUMBER UTIL BUTTON */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "dialogue/bg/2icon", /* UTIL BUTTON */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "detail.title", /* ADDRESSBOOK */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "detail.field.2text", /* NUMBER */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "detail.field.2text", /* EMAIL */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "detail.field.2text", /* URL */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "dialogue/2text.2", /*MESSENGER */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "2text.3", /*BIRTH*/
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "dialogue/2text.3", /* RINGTONE */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "dialogue/2text.3", /* VIBRATION */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "dialogue/2text.3", /* GROUP */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "2text.3", /* RELATIONSHIP */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "baseinfo.1text", /* DEFAULT NUMBER */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "detail.field.2text", /* DEFAULT EMAIL */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "detail.field.2text", /* ADDRESS */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "dialogue/bg/2icon", /* LINK, UNLINK */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "1text.1icon.2", /* UNLINK POPUP */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "1text.1icon.2", /* EDIT POPUP */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "dialogue/2text.1icon.5", /* LINK ITEM */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "dialogue/2text.1icon.5", /* LINK LIST */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "dialogue/1text.1icon.2/expandable2", /* LINK LIST SUB */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "detail.fieldtitle.1text", /* FIELD TITLE */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "detail.field.2text", /* FIELD */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "dialogue/title", /* TITLE */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "dialogue/bg/1icon", /* UTIL 1 BUTTON */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "baseinfo.1text.1icon", /* BASEINFO 1TEXT 1ICON */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "baseinfo.1text.2icon", /* BASEINFO 1TEXT 2ICON */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "baseinfo.2text.1icon", /* BASEINFO 2TEXT 1ICON */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "baseinfo.2text.2icon", /* BASEINFO 2TEXT 2ICON */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "baseinfo.3text.1icon", /* BASEINFO 3TEXT 1ICON */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "baseinfo.3text.2icon", /* BASEINFO 3TEXT 2ICON */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "dialogue/2text.6", /* DEFAULT NUMBER SET POPUP*/
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "dialogue/2text.6", /* DEFAULT EMAIL SET POPUP*/
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1,
+ "1text", /* DEFAULT NAME */
+ NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+};
+
+static Elm_Genlist_Item_Class detail_ringtone_itc;
+
+static void detail_fill_number_list(Evas_Object *genlist, Eina_List *list,
+ Evas_Smart_Cb func, int default_num_id);
+static void detail_fill_email_list(Evas_Object *genlist, Eina_List *list,
+ Evas_Smart_Cb func, int default_num_id);
+
+static char* detail_gl_2text_multiline_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ char *note;
+ contacts_record_h record = (contacts_record_h) data;
+
+ p_retv_if(NULL == record, NULL);
+
+ if (0 == strcmp(part, "elm.text.1"))
+ {
+ return strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_NOTE));
+ }
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+ contacts_record_get_str_p(record, _contacts_note.note, &note);
+ if (note && *note)
+ return elm_entry_utf8_to_markup(note);
+ }
+ return NULL;
+}
+
+static char* detail_gl_ringtone_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ char *str;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ contacts_record_h record_person = cdetail_d->person;
+ p_retv_if(NULL == record_person, NULL);
+
+ if (0 == strcmp(part, "elm.text.1"))
+ return strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_RINGTONE));
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+ err = contacts_record_get_str_p(record_person,
+ _contacts_person.ringtone_path, &str);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, FALSE,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (str && *str && 0 == access(str, F_OK))
+ return SAFE_STRDUP(ct_detail_get_ringtone_display_name(str));
+ else
+ return strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_DEFAULT));
+ }
+ return NULL;
+}
+
+static void detail_ringtone_reset_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ p_retm_if(NULL == cdetail_d, "parameter(cdetail_d) is NULL");
+ p_retm_if(NULL == cdetail_d->person, "parameter(person) is NULL");
+
+ if (cdetail_d->popup)
+ {
+ evas_object_del(cdetail_d->popup);
+ cdetail_d->popup = NULL;
+ }
+
+ err = contacts_record_set_str(cdetail_d->person,
+ _contacts_person.ringtone_path, NULL);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str(ringtone_path) Failed(%d)", err);
+
+ elm_genlist_item_update(cdetail_d->ringtone_item);
+}
+
+static char *detail_popup_text_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ if (0 == strcmp(part, "elm.text"))
+ return strdup((const char *) data);
+ return NULL;
+}
+
+static void detail_ringtone_gl_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *popup;
+ Evas_Object *genlist;
+ Evas_Object *btn;
+ Evas_Object *box;
+ char *temp;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ elm_genlist_item_selected_set((Elm_Object_Item *) event_info, EINA_FALSE);
+ popup = elm_popup_add(cdetail_d->navi);
+ elm_object_style_set(popup, "min_menustyle");
+ elm_object_part_text_set(popup, "title,text",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_RINGTONE));
+ evas_object_smart_callback_add(popup, "block,clicked", ctui_detail_data_popup_hide_cb,
+ NULL);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ btn = elm_button_add(popup);
+ elm_object_text_set(btn, S_(PH_SYS_SK_CANCEL));
+ elm_object_part_content_set(popup, BUTTON1, btn);
+ evas_object_smart_callback_add(btn, CLICKED, ctui_detail_data_popup_hide_cb, cdetail_d);
+
+ detail_ringtone_itc.item_style = "1text";
+ detail_ringtone_itc.func.text_get = detail_popup_text_get;
+ detail_ringtone_itc.func.content_get = NULL;
+ detail_ringtone_itc.func.state_get = NULL;
+ detail_ringtone_itc.func.del = NULL;
+
+ box = elm_box_add(popup);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ genlist = elm_genlist_add(popup);
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_genlist_item_append(genlist, &detail_ringtone_itc, T_(CT_GET_TEXT_BASIC,CTTEXT_DEFAULT),
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, data);
+ elm_genlist_item_append(genlist, &detail_ringtone_itc, T_(CT_GET_TEXT_BASIC,CTTEXT_RINGTONES),
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, data);
+ elm_genlist_item_append(genlist, &detail_ringtone_itc, T_(CT_GET_TEXT_BASIC,CTTEXT_MY_FILES),
+ NULL, ELM_GENLIST_ITEM_NONE, ct_detail_myfile_ringtone, data);
+
+ err = contacts_record_get_str_p(cdetail_d->person,
+ _contacts_person.ringtone_path, &temp);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_contact_record_get_str_p() Failed(%d)", err);
+
+ if (temp && *temp)
+ elm_genlist_item_append(genlist, &detail_ringtone_itc,
+ S_(CT_SYS_SK_RESET), NULL, ELM_GENLIST_ITEM_NONE,
+ detail_ringtone_reset_cb, data);
+
+ elm_box_pack_end(box, genlist);
+ evas_object_show(genlist);
+ evas_object_size_hint_min_set(box, 600, 200);
+ elm_object_content_set(popup, box);
+ evas_object_show(popup);
+ cdetail_d->popup = popup;
+}
+
+static char* detail_gl_vibration_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ char *str = NULL;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ contacts_record_h record_person = cdetail_d->person;
+ p_retv_if(NULL == record_person, NULL);
+
+ if (0 == strcmp(part, "elm.text.1"))
+ return strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_VIBRATION_PATTERN));
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+ err = contacts_record_get_str_p(record_person,
+ _contacts_person.vibration, &str);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, FALSE,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ return SAFE_STRDUP(T_(CT_GET_TEXT_VIBRATION, ct_detail_vibration_get_msgid(str)));
+ }
+
+ return NULL;
+}
+
+static void detail_vibration_set_result_cb(void *data, const char *path)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ int err = contacts_record_set_str(cdetail_d->person,
+ _contacts_person.vibration, path);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_db_update_record(cdetail_d->person);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_record() Failed(%d)", err);
+
+ elm_genlist_item_update(cdetail_d->vibration_item);
+}
+
+static void detail_vibration_gl_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ p_retm_if(NULL == event_info, "event_info is NULL");
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ char *vibration = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ elm_genlist_item_selected_set((Elm_Object_Item *) event_info, EINA_FALSE);
+
+ err = contacts_record_get_str_p(cdetail_d->person,
+ _contacts_person.vibration, &vibration);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ cdetail_d->popup = ct_detail_vibration_popup_create(cdetail_d->navi, vibration,
+ detail_vibration_set_result_cb, cdetail_d);
+}
+
+static void detail_update_group(void *data)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ int err = contacts_db_update_record((contacts_record_h) cdetail_d->list_contacts->data);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_record() Failed(%d)", err);
+
+ cdetail_d->updated = true;
+ elm_genlist_item_update(cdetail_d->group_item);
+}
+
+typedef struct
+{
+ int contact_id;
+ int addressbook_id;
+ Eina_Bool checked;
+ Elm_Object_Item *item;
+ void *data;
+} ct_detail_person_data;
+
+static bool detail_is_display_contact(ct_detail_data *cdetail_d,contacts_record_h record)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == cdetail_d, NULL, "cdetail_d is NULL");
+ int err = CONTACTS_ERROR_NONE;
+ int contact_id = 0;
+ int display_contact_id = 0;
+
+ err = contacts_record_get_int(cdetail_d->person, _contacts_person.display_contact_id, &display_contact_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int Failed(%d)", err);
+
+ err = contacts_record_get_int(record, _contacts_contact.id, &contact_id);
+ p_retv_if(CONTACTS_ERROR_NONE != err, false);
+
+ if (display_contact_id != contact_id)
+ {
+ return false;
+ }
+ return true;
+}
+
+static Evas_Object *detail_create_link_contacts_genlist(ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == cdetail_d, NULL, "data is NULL");
+ p_retvm_if(NULL == cdetail_d->layout_link, NULL, "cdetail_d->layout_link is NULL");
+ cdetail_d->genlist_link = elm_genlist_add(cdetail_d->layout_link);
+ p_retvm_if(NULL == cdetail_d->genlist_link, NULL, "cdetail_d->genlist_link is NULL");
+ elm_genlist_mode_set(cdetail_d->genlist_link, ELM_LIST_COMPRESS);
+ evas_object_data_set(cdetail_d->genlist_link, "cdetail_d", cdetail_d);
+
+ Eina_List *l = NULL;
+ void *v_record = NULL;
+ EINA_LIST_FOREACH(cdetail_d->list_contacts, l, v_record)
+ {
+ int err = CONTACTS_ERROR_NONE;
+ if (!detail_is_display_contact(cdetail_d, (contacts_record_h) v_record))
+ {
+ ct_detail_person_data *person_info = (ct_detail_person_data *) calloc(1, sizeof(ct_detail_person_data));
+ p_retvm_if(NULL == person_info, NULL, "person_info is NULL");
+
+ err = contacts_record_get_int((contacts_record_h) v_record, _contacts_contact.id,&(person_info->contact_id));
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int Failed(%d)", err);
+
+ err = contacts_record_get_int((contacts_record_h) v_record, _contacts_contact.address_book_id, &(person_info->addressbook_id));
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int Failed(%d)", err);
+
+ Elm_Object_Item *item = elm_genlist_item_append(cdetail_d->genlist_link,
+ &detail_itcs[DETAIL_ITC_LINK_LIST], person_info, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, person_info);
+
+ person_info->item = item;
+ }
+ }
+ elm_object_part_content_set(cdetail_d->layout_link, "contents", cdetail_d->genlist_link);
+ return cdetail_d->genlist_link;
+}
+
+static void detail_unlink_list_item(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d = (ct_detail_data *)data;
+ p_retm_if(NULL == cdetail_d, "cdetail_d is NULL");
+ p_retm_if(NULL == cdetail_d->list_contacts, "cdetail_d->list_contacts is NULL");
+ p_retm_if(NULL == cdetail_d->list_unlink, "cdetail_d->list_unlink is NULL");
+
+ Eina_List *l = NULL;
+ void * v_record = NULL;
+ int person_id = 0;
+
+ EINA_LIST_FOREACH(cdetail_d->list_unlink, l, v_record)
+ {
+ int err = contacts_person_unlink_contact(cdetail_d->person_id, (int) v_record, &person_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_person_unlink_contact Failed(%d)", err);
+ }
+ eina_list_free(cdetail_d->list_unlink);
+ ctui_free_record_list(cdetail_d->list_contacts);
+ cdetail_d->list_contacts = ctui_person_get_contact_list(cdetail_d->person_id);
+ elm_naviframe_item_pop(cdetail_d->navi);
+}
+
+static void detail_link_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ p_retm_if(NULL == cdetail_d, "cdetail_d is NULL");
+ if(event_info)
+ {
+ elm_genlist_item_selected_set((Elm_Object_Item *) event_info, EINA_FALSE);
+ }
+ if(cdetail_d->list_unlink)
+ {
+ eina_list_free(cdetail_d->list_unlink);
+ }
+ if (cdetail_d->list_contacts && 2 < eina_list_count(cdetail_d->list_contacts))
+ {
+ char buf[PH_TEXT_MAX_LEN + 1];
+ char *display_person_name = NULL;
+ int err = 0;
+ err = contacts_record_get_str_p(cdetail_d->person, _contacts_person.display_name, &display_person_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_str_p Failed(%d)", err);
+
+ Evas_Object *base = elm_layout_add(cdetail_d->navi);
+ p_retm_if(NULL == base, "base is NULL");
+ elm_layout_file_set(base, SELECTION_INFO_EDJ, "selectioninfo_layout");
+ cdetail_d->layout_link = base;
+
+ detail_create_link_contacts_genlist(cdetail_d);
+
+ Evas_Object *btn = phone_create_toolbar_btn(cdetail_d->layout_link, S_(CT_SYS_SK_DONE), detail_unlink_list_item, cdetail_d);
+ elm_object_part_content_set(cdetail_d->layout_link, "toolbar", btn);
+
+ snprintf(buf, sizeof(buf), "%s %s", T_(PH_GET_TEXT_BASIC, PHTEXT_LINK_CONTACTS_WITH), display_person_name);
+ cdetail_d->navi_item = elm_naviframe_item_push(cdetail_d->navi, buf, NULL, NULL, cdetail_d->layout_link, NULL);
+ elm_naviframe_item_title_visible_set(cdetail_d->navi_item, EINA_TRUE);
+ }
+}
+
+static void detail_group_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ elm_genlist_item_selected_set((Elm_Object_Item *) event_info, EINA_FALSE);
+ cdetail_d->popup = ct_group_assign_popup_create(cdetail_d->win, cdetail_d->navi,
+ (contacts_record_h) cdetail_d->list_contacts->data, detail_update_group, cdetail_d);
+}
+
+static char* detail_gl_group_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ char display[PH_TEXT_MAX_LEN + 1];
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ if (0 == strcmp(part, "elm.text.1"))
+ {
+ return strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_GROUP));
+ }
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+ display[0] = '\0';
+ ct_detail_person_get_group_names(cdetail_d->list_contacts, display,
+ sizeof(display));
+ return strdup(display);
+ }
+ return NULL;
+
+}
+
+static char* detail_gl_relationship_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = (contacts_record_h) data;
+
+ if (0 == strcmp(part, "elm.text.1"))
+ {
+ int type;
+ char *str_type = NULL;
+ char *str_name = NULL;
+ char buf[PH_TEXT_MAX_LEN + 1];
+
+ err = contacts_record_get_int(record, _contacts_relationship.type,
+ &type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if (CONTACTS_RELATIONSHIP_TYPE_CUSTOM == type)
+ {
+ err = contacts_record_get_str_p(record,
+ _contacts_relationship.label, &str_type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ }
+ if (NULL == str_type || '\0' == str_type[0])
+ str_type = (char *) T_(CT_GET_TEXT_RELATIONSHIP_TYPE, type);
+
+ err = contacts_record_get_str_p(record, _contacts_relationship.name,
+ &str_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (str_name && *str_name)
+ snprintf(buf, sizeof(buf), "%s %s", str_type, str_name);
+ else
+ snprintf(buf, sizeof(buf), "%s", str_type);
+ return strdup(buf);
+ }
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+ return strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_RELATIONSHIP));
+ }
+ return NULL;
+}
+
+static char *detail_gl_address_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int val_type;
+ char *ret_str;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = (contacts_record_h) data;
+
+ p_retv_if(NULL == data, NULL);
+
+ if (0 == strcmp(part, "elm.text.2"))
+ {
+ err = contacts_record_get_int(record, _contacts_address.type,
+ &val_type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if (CONTACTS_ADDRESS_TYPE_CUSTOM == val_type)
+ {
+ err = contacts_record_get_str_p(record, _contacts_address.label,
+ &ret_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (NULL == ret_str || '\0' == ret_str[0])
+ return strdup(
+ T_(CT_GET_TEXT_POSTAL_TYPE, CONTACTS_ADDRESS_TYPE_OTHER));
+ else
+ return strdup(ret_str);
+ }
+ else
+ return strdup(
+ T_(CT_GET_TEXT_POSTAL_TYPE, phone_get_address_type_index(val_type)));
+ }
+ else if (0 == strcmp(part, "elm.text.1"))
+ {
+ char buf[PH_TEXT_MAX_LEN] = { 0, };
+ ct_detail_get_full_addr(record, buf, PH_TEXT_MAX_LEN);
+ return elm_entry_utf8_to_markup(buf);
+ }
+ return NULL;
+}
+
+static char* detail_gl_messenger_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int val_type;
+ char *ret_str = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = (contacts_record_h) data;
+
+ p_retv_if(NULL == data, NULL);
+
+ ret_str = NULL;
+ if (0 == strcmp(part, "elm.text.1"))
+ {
+ err = contacts_record_get_str_p(record, _contacts_messenger.im_id,
+ &ret_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ return SAFE_STRDUP(ret_str);
+ }
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+ err = contacts_record_get_int(record, _contacts_messenger.type,
+ &val_type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if (CONTACTS_MESSENGER_TYPE_CUSTOM == val_type)
+ {
+ err = contacts_record_get_str_p(record, _contacts_messenger.label,
+ &ret_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ return SAFE_STRDUP(ret_str);
+ }
+ else
+ {
+ return strdup(T_(CT_GET_TEXT_IM_TYPE, val_type));
+ }
+ }
+ return NULL;
+}
+
+static char* detail_gl_event_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data, NULL, "data is NULL");
+ p_retvm_if(NULL == obj, NULL, "obj is NULL");
+ p_retvm_if(NULL == part, NULL, "part is NULL");
+
+ int val_type = 0;
+ char *label = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ contacts_record_h record = (contacts_record_h) data;
+ ct_detail_data *cdetail_d = (ct_detail_data *) evas_object_data_get(obj, "cdetail_d");
+
+
+ if (0 == strcmp(part, "elm.text.1"))
+ {
+ int date = 0, day = 0, mon = 0, year = 0;
+
+ err = contacts_record_get_int(record, _contacts_event.date, &date);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ day = date % 100;
+ mon = (date % 10000) / 100;
+ year = date / 10000;
+
+ p_retvm_if(mon < 1 || 12 < mon || day < 1 || 31 < day, NULL,
+ "Invalid date(mon=%d,day=%d)", mon, day);
+ return phone_get_datetime_str(cdetail_d->formatter, year, mon, day);
+ }
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+ err = contacts_record_get_int(record, _contacts_event.type, &val_type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if (val_type == CONTACTS_EVENT_TYPE_CUSTOM)
+ {
+ err = contacts_record_get_str_p(record, _contacts_event.label, &label);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ return SAFE_STRDUP(label);
+ }
+ else
+ {
+ return SAFE_STRDUP(T_(CT_GET_TEXT_EVENT_TYPE, val_type));
+ }
+ }
+ return NULL;
+}
+
+static Elm_Object_Item* __detail_search_item_by_type(DETAIL_ITC_TYPE type, Elm_Object_Item *pItem)
+{
+ PH_TRACE;
+ Elm_Object_Item *pItemNext = NULL;
+ const Elm_Genlist_Item_Class *pItc;
+
+ if ((type < 0) && (type >= DETAIL_ITC_MAX))
+ {
+ return NULL;
+ }
+
+ while (pItem)
+ {
+ pItemNext = elm_genlist_item_next_get(pItem);
+ pItc = elm_genlist_item_item_class_get(pItem);
+ if (pItc == &detail_itcs[type])
+ {
+ break;
+ }
+ pItem = pItemNext;
+ }
+ return pItem;
+}
+
+void __detail_update_number_list(ct_detail_data * cdetail_d)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ int list_count = 0;
+ int number_id = 0;
+ Eina_List *cursor;
+ Elm_Object_Item *item = elm_genlist_first_item_get(cdetail_d->genlist);
+ Elm_Object_Item *item2 = NULL;
+ contacts_record_h record_number = NULL;
+ void *v_record_number = NULL;
+
+ item = __detail_search_item_by_type(DETAIL_ITC_NUMBER_DEFAULT, item);
+
+ Evas_Smart_Cb num_func = ct_detail_gl_number_sel;
+
+ if (cdetail_d->list_number)
+ ctui_free_record_list(cdetail_d->list_number);
+
+ cdetail_d->list_number = ctui_person_get_number_list(
+ cdetail_d->list_contacts);
+ err = phone_cts_get_default_number(cdetail_d->person_id, &record_number);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_default_number() Failed(%d)", err);
+ }
+ int default_num_id = 0;
+ err = contacts_record_get_int(record_number, _contacts_number.id,
+ &default_num_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ if (default_num_id > 0)
+ {
+ elm_object_item_del(cdetail_d->number_util_item);
+ elm_genlist_item_insert_before(cdetail_d->genlist,
+ &detail_itcs[DETAIL_ITC_NUMBER_DEFAULT], record_number, NULL,
+ item, ELM_GENLIST_ITEM_NONE, num_func, record_number);
+ cdetail_d->number_util_item = elm_genlist_item_insert_before(
+ cdetail_d->genlist, &detail_itcs[DETAIL_ITC_NUM_UTIL_BTN],
+ record_number, NULL, item, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+ item2 = elm_genlist_item_next_get(item);
+ elm_object_item_del(item);
+ item = item2;
+ }
+
+ list_count = eina_list_count(cdetail_d->list_number);
+ if (list_count > 1)
+ {
+ item = __detail_search_item_by_type(DETAIL_ITC_NUMBER, item);
+ for (int i = 0; i < list_count-1; i++)
+ {
+ item2 = elm_genlist_item_next_get(item);
+ elm_object_item_del(item);
+ item = item2;
+ }
+
+ v_record_number = (void *) record_number;
+ EINA_LIST_FOREACH(cdetail_d->list_number, cursor, v_record_number)
+ {
+ record_number = (contacts_record_h) v_record_number;
+ err = contacts_record_get_int(record_number, _contacts_number.id,
+ &number_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if ((default_num_id != 0) && (number_id == default_num_id))
+ continue;
+
+ elm_genlist_item_insert_before(cdetail_d->genlist,
+ &detail_itcs[DETAIL_ITC_NUMBER], record_number, NULL, item,
+ ELM_GENLIST_ITEM_NONE, num_func, record_number);
+ }
+ }
+ if (default_num_id)
+ cdetail_d->has_number = true;
+}
+
+void __detail_update_email_list(ct_detail_data * cdetail_d)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ int email_id = 0;
+ Eina_List *cursor;
+ const Elm_Genlist_Item_Class *itc;
+ Elm_Object_Item *item = elm_genlist_first_item_get(cdetail_d->genlist);
+ Elm_Object_Item *item2 = NULL;
+ contacts_record_h record_email = NULL;
+ void *v_record_email = NULL;
+
+ while (item)
+ {
+ item2 = elm_genlist_item_next_get(item);
+ itc = elm_genlist_item_item_class_get(item);
+ if (itc == &detail_itcs[DETAIL_ITC_EMAIL_DEFAULT]
+ || itc == &detail_itcs[DETAIL_ITC_EMAIL])
+ {
+ break;
+ }
+ item = item2;
+ }
+
+ Evas_Smart_Cb email_func = ct_detail_gl_email_sel;
+
+ if (cdetail_d->list_email)
+ ctui_free_record_list(cdetail_d->list_email);
+
+ cdetail_d->list_email = ctui_person_get_email_list(
+ cdetail_d->list_contacts);
+ err = phone_cts_get_default_email(cdetail_d->person_id, &record_email);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_default_email() Failed(%d)", err);
+ }
+ int default_email_id = 0;
+
+ err = contacts_record_get_int(record_email, _contacts_email.id,
+ &default_email_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ if (default_email_id > 0)
+ {
+ elm_genlist_item_insert_before(cdetail_d->genlist,
+ &detail_itcs[DETAIL_ITC_EMAIL_DEFAULT], record_email, NULL,
+ item, ELM_GENLIST_ITEM_NONE, email_func, record_email);
+ }
+
+ int list_count = eina_list_count(cdetail_d->list_email);
+ if (list_count > 1)
+ {
+ v_record_email = (void *) record_email;
+ EINA_LIST_FOREACH(cdetail_d->list_email, cursor, v_record_email)
+ {
+ record_email = (contacts_record_h) v_record_email;;
+ err = contacts_record_get_int(record_email, _contacts_email.id,
+ &email_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if ((default_email_id != 0) && (email_id == default_email_id))
+ continue;
+
+ elm_genlist_item_insert_before(cdetail_d->genlist,
+ &detail_itcs[DETAIL_ITC_EMAIL], record_email, NULL, item,
+ ELM_GENLIST_ITEM_NONE, email_func, record_email);
+ }
+ }
+
+ int i = 0;
+ for (i = 0; i < list_count; i++)
+ {
+ item2 = elm_genlist_item_next_get(item);
+ elm_object_item_del(item);
+ item = item2;
+ }
+}
+
+void __detail_default_number_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = (contacts_record_h) data;
+ ct_detail_data *cdetail_d;
+ int data_id;
+
+ p_retm_if(NULL == record, "parameter(record) is NULL");
+
+ cdetail_d = (ct_detail_data *) evas_object_data_get(obj, "cdetail_d");
+ p_retm_if(NULL == cdetail_d, "evas_object_data_get(record) return NULL");
+
+ err = contacts_record_get_int(record, _contacts_number.id, &data_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_person_set_default_property(CONTACTS_PERSON_PROPERTY_NUMBER,
+ cdetail_d->person_id, data_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_person_set_default_property() Failed(%d)", err);
+ // TODO: ??
+ __detail_update_number_list(cdetail_d);
+
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+}
+
+void __detail_default_email_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = (contacts_record_h) data;
+ ct_detail_data *cdetail_d;
+ int data_id;
+
+ p_retm_if(NULL == record, "parameter(record) is NULL");
+
+ cdetail_d = (ct_detail_data *) evas_object_data_get(obj, "cdetail_d");
+ p_retm_if(NULL == cdetail_d, "evas_object_data_get(record) return NULL");
+
+ err = contacts_record_get_int(record, _contacts_email.id, &data_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_person_set_default_property(CONTACTS_PERSON_PROPERTY_EMAIL,
+ cdetail_d->person_id, data_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_person_set_default_property() Failed(%d)", err);
+
+ // TODO: ??
+ __detail_update_email_list(cdetail_d);
+
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+}
+
+void __detail_click_default_number(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_detail_data *cdetail_d = static_cast<ct_detail_data*>(data);
+
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+ ct_detail_menu_hide_cb(cdetail_d, NULL, NULL);
+
+ Evas_Object *popup = elm_popup_add(cdetail_d->navi);
+ if (NULL != popup)
+ {
+ elm_object_style_set(popup, "liststyle");
+ elm_object_part_text_set(popup, "title,text", T_(CT_GET_TEXT_BASE_OP, CTTEXT_SET_DEFAULT_NUMBER));
+ cdetail_d->popup = popup;
+
+ Evas_Object *btn = elm_button_add(popup);
+ elm_object_text_set(btn, S_(PH_SYS_SK_CANCEL));
+ elm_object_part_content_set(popup, BUTTON1, btn);
+ elm_object_style_set(btn, "popup_button/default");
+ evas_object_smart_callback_add(btn, CLICKED, ct_detail_popup_hide_cb, cdetail_d);
+ evas_object_show(popup);
+
+ Evas_Object *genlist = elm_genlist_add(popup);
+ if (NULL != genlist)
+ {
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_data_set(genlist, "cdetail_d", cdetail_d);
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record_default_number = NULL;
+ err = phone_cts_get_default_number(cdetail_d->person_id, &record_default_number);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("phone_cts_get_default_number() Failed(%d)", err);
+
+ int default_number_id = 0;
+ err = contacts_record_get_int(record_default_number, _contacts_number.id, &default_number_id);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_destroy(record_default_number, true);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_destroy() Failed(%d)", err);
+
+ int number_id = 0;
+ Eina_List *cursor;
+ void *v_record_number = NULL;
+ EINA_LIST_FOREACH(cdetail_d->list_number, cursor, v_record_number)
+ {
+ contacts_record_h record_number = (contacts_record_h) v_record_number;
+ err = contacts_record_get_int(record_number, _contacts_number.id, &number_id);
+ if (default_number_id == number_id)
+ continue;
+
+ elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_DEFAULT_NUMBER_SET_POPUP], record_number, NULL, ELM_GENLIST_ITEM_NONE, __detail_default_number_sel, record_number);
+ }
+
+ evas_object_show(genlist);
+ elm_object_content_set(popup, genlist);
+ }
+ else
+ {
+ ERR("__detail_click_default_number() Failed: %s", "elm_genlist_add() return NULL");
+ }
+ }
+ else
+ {
+ ERR("__detail_click_default_number() Failed: %s", "elm_popup_add() return NULL");
+ }
+ }
+}
+
+void __detail_click_default_email(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_detail_data *cdetail_d = static_cast<ct_detail_data*>(data);
+
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+ ct_detail_menu_hide_cb(cdetail_d, NULL, NULL);
+
+ Evas_Object *popup = elm_popup_add(cdetail_d->navi);
+ if (NULL != popup)
+ {
+ elm_object_style_set(popup, "liststyle");
+ elm_object_part_text_set(popup, "title,text", T_(CT_GET_TEXT_BASE_OP, CTTEXT_SET_DEFAULT_EMAIL));
+ cdetail_d->popup = popup;
+
+ Evas_Object *btn = elm_button_add(popup);
+ elm_object_text_set(btn, S_(PH_SYS_SK_CANCEL));
+ elm_object_part_content_set(popup, BUTTON1, btn);
+ elm_object_style_set(btn, "popup_button/default");
+ evas_object_smart_callback_add(btn, CLICKED, ct_detail_popup_hide_cb, cdetail_d);
+ evas_object_show(popup);
+
+ Evas_Object *genlist = elm_genlist_add(popup);
+ if (NULL != genlist)
+ {
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_data_set(genlist, "cdetail_d", cdetail_d);
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record_default_email = NULL;
+ err = phone_cts_get_default_email(cdetail_d->person_id, &record_default_email);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("phone_cts_get_default_email() Failed(%d)", err);
+
+ int default_email_id = 0;
+ err = contacts_record_get_int(record_default_email, _contacts_email.id, &default_email_id);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_destroy(record_default_email, true);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_destroy() Failed(%d)", err);
+
+ int email_id = 0;
+ Eina_List *cursor;
+ void *v_record_email = NULL;
+ EINA_LIST_FOREACH(cdetail_d->list_email, cursor, v_record_email)
+ {
+ contacts_record_h record_email = (contacts_record_h) v_record_email;
+ err = contacts_record_get_int(record_email, _contacts_email.id, &email_id);
+ if (default_email_id == email_id)
+ continue;
+
+ elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_DEFAULT_EMAIL_SET_POPUP], record_email, NULL, ELM_GENLIST_ITEM_NONE, __detail_default_email_sel, record_email);
+ }
+
+ evas_object_show(genlist);
+ elm_object_content_set(popup, genlist);
+ }
+ else
+ {
+ ERR("__detail_click_default_email() Failed: %s", "elm_genlist_add() return NULL");
+ }
+ }
+ else
+ {
+ ERR("__detail_click_default_email() Failed: %s", "elm_popup_add() return NULL");
+ }
+ }
+}
+
+void __detail_click_send_contact_as_text(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_detail_data* cdetail_d = (ct_detail_data*)data;
+ p_retm_if(NULL == cdetail_d, "contact detail data is null");
+
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+ ct_detail_menu_hide_cb(cdetail_d, NULL, NULL);
+
+ int contact_id = phone_get_contact_id_by_person_id(cdetail_d->person_id);
+ if(contact_id > 0)
+ {
+ ct_process_send_contact_as_text(contact_id, cdetail_d->person_id, cdetail_d->navi, cdetail_d->ug, &cdetail_d->child_ug);
+ }
+}
+
+char* ct_detail_gl_number_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ assert(data);
+ assert(part);
+ if (NULL != data && NULL != part)
+ {
+ contacts_record_h record = static_cast<contacts_record_h>(data);
+
+ int err = CONTACTS_ERROR_NONE;
+ char *ret_str = NULL;
+ if (0 == strcmp(part, "elm.text.2"))
+ {
+ int type;
+ err = contacts_record_get_int(record, _contacts_number.type, &type);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ char buf[PH_TEXT_MAX_LEN + 1] = { 0, };
+ ctui_get_number_type_str(record, type, buf, sizeof(buf));
+ return strdup(buf);
+ }
+ else if (0 == strcmp(part, "elm.text.1"))
+ {
+ err = contacts_record_get_str_p(record, _contacts_number.number, &ret_str);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_get_str_p() Failed(%d)", err);
+ return SAFE_STRDUP(ret_str);
+ }
+ else if (0 == strcmp(part, "elm.text"))
+ {
+ err = contacts_record_get_str_p(record, _contacts_number.number, &ret_str);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_get_str_p() Failed(%d)", err);
+ return SAFE_STRDUP(ret_str);
+ }
+ }
+ else
+ {
+ ERR("ct_detail_gl_number_label_get() Failed: %s", "parameter(data) is NULL");
+ }
+ return NULL;
+}
+
+char* ct_detail_gl_email_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int type;
+ char *ret_str = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = (contacts_record_h) data;
+
+ p_retvm_if(NULL == data, NULL, "parameter(data) is NULL");
+
+ ret_str = NULL;
+ if (0 == strcmp(part, "elm.text.2"))
+ {
+ err = contacts_record_get_int(record, _contacts_email.type, &type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if (CONTACTS_EMAIL_TYPE_CUSTOM == type)
+ {
+ err = contacts_record_get_str_p(record, _contacts_email.label,
+ &ret_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ return SAFE_STRDUP(ret_str);
+ }
+ return strdup(
+ T_(CT_GET_TEXT_EMAIL_TYPE, ctui_get_email_type_index(type)));
+ }
+ else if (0 == strcmp(part, "elm.text.1"))
+ {
+ err = contacts_record_get_str_p(record, _contacts_email.email,
+ &ret_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ return SAFE_STRDUP(ret_str);
+ }
+ else if (0 == strcmp(part, "elm.text"))
+ {
+ err = contacts_record_get_str_p(record, _contacts_email.email,
+ &ret_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ return SAFE_STRDUP(ret_str);
+ }
+ return NULL;
+
+}
+
+static char *detail_gl_url_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int type;
+ char *ret_str = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = (contacts_record_h) data;
+
+ p_retvm_if(NULL == data, NULL, "parameter(data) is NULL");
+
+ if (0 == strcmp(part, "elm.text.2"))
+ {
+ err = contacts_record_get_int(record, _contacts_url.type, &type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if (CONTACTS_URL_TYPE_CUSTOM == type)
+ {
+ err = contacts_record_get_str_p(record, _contacts_url.label,
+ &ret_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ return elm_entry_utf8_to_markup(ret_str);
+ }
+ return strdup(
+ T_(CT_GET_TEXT_WEBSITE_TYPE, phone_get_website_type_index(type)));
+ }
+ else if (0 == strcmp(part, "elm.text.1"))
+ {
+ err = contacts_record_get_str_p(record, _contacts_url.url, &ret_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ return elm_entry_utf8_to_markup(ret_str);
+ }
+ return NULL;
+}
+
+static void detail_number_cb(contacts_record_h record_number,
+ ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ char *num_str;
+
+ if (cdetail_d->popup)
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+
+ err = contacts_record_get_str_p(record_number, _contacts_number.number,
+ &num_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ if (num_str && *num_str)
+ {
+ int rotate;
+ cdetail_d->popup = elm_ctxpopup_add(cdetail_d->navi);
+ p_retm_if(NULL == cdetail_d->popup, "elm_ctxpopup_add() return NULL");
+
+ rotate = (int) evas_object_data_get(cdetail_d->navi, PHONE_ROTATE);
+ if (0 == rotate || 180 == rotate)
+ elm_ctxpopup_direction_priority_set(cdetail_d->popup,
+ ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP,
+ ELM_CTXPOPUP_DIRECTION_LEFT, ELM_CTXPOPUP_DIRECTION_RIGHT);
+
+ evas_object_smart_callback_add(cdetail_d->popup, "dismissed",
+ ct_detail_popup_hide_cb, cdetail_d);
+ evas_object_data_set(cdetail_d->popup, "cdetail_d", cdetail_d);
+
+ elm_ctxpopup_item_append(cdetail_d->popup, S_(PH_SYS_BODY_CALL), NULL,
+ ct_detail_voice_call_cb, num_str);
+ elm_ctxpopup_item_append(cdetail_d->popup, S_(PH_SYS_BODY_MESSAGE),
+ NULL, ct_detail_msg_ug_cb, num_str);
+
+ evas_object_move(cdetail_d->popup, cdetail_d->touch_x,
+ cdetail_d->touch_y);
+ evas_object_show(cdetail_d->popup);
+ }
+}
+
+static void __detail_email_result(service_h service, service_h reply,
+ service_result_e result, void* user_data)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) user_data;
+
+ cdetail_d->touch_block = false;
+}
+
+void ct_detail_gl_email_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ char *email_address;
+ service_h service;
+ Ecore_X_Window win_id;
+ ct_detail_data *cdetail_d;
+ contacts_record_h record_email = (contacts_record_h) data;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ p_retm_if(NULL == record_email, "parameter(record_email) is NULL");
+
+ cdetail_d = (ct_detail_data *) evas_object_data_get(obj, "cdetail_d");
+ p_retm_if(NULL == cdetail_d, "evas_object_data_get() return NULL");
+
+ if (cdetail_d->touch_block == true)
+ return;
+
+ err = contacts_record_get_str_p(record_email, _contacts_email.email,
+ &email_address);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ win_id = elm_win_xwindow_get(cdetail_d->win);
+ service_create(&service);
+ service_set_app_id(service, EMAIL_COMPOSER_PKG);
+ service_set_window(service, win_id);
+ service_add_extra_data(service, SERVICE_DATA_TO, email_address);
+
+ if (service_send_launch_request(service, __detail_email_result, cdetail_d)
+ == SERVICE_ERROR_NONE)
+ cdetail_d->touch_block = true;
+ service_destroy(service);
+}
+
+static void detail_gl_messenger_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ contacts_record_h record_email = (contacts_record_h) data;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ p_retm_if(NULL == record_email, "parameter(record_email) is NULL");
+
+ ERR("detail_gl_messenger_sel() not implemented");
+}
+
+static char* detail_gl_address_book_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ Eina_List *l;
+ void *v_contact = NULL;
+ char temp[PH_TEXT_MAX_LEN];
+ char display[PH_TEXT_MAX_LEN];
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ if (0 == strcmp(part, "elm.text"))
+ {
+ display[0] = '\0';
+ if (cdetail_d->contact)
+ {
+ ct_detail_person_get_addressbook_name(cdetail_d->contact, temp,
+ sizeof(temp));
+ snprintf(display, sizeof(display),
+ T_(CT_GET_TEXT_BASIC, CTTEXT_SAVED_IN), temp);
+ }
+ else
+ {
+ EINA_LIST_FOREACH(cdetail_d->list_contacts, l, v_contact)
+ {
+ contacts_record_h contact = (contacts_record_h) v_contact;
+ ct_detail_person_get_addressbook_name(contact, temp,
+ sizeof(temp));
+ snprintf(display, sizeof(display),
+ T_(CT_GET_TEXT_BASIC, CTTEXT_SAVED_IN), temp);
+ }
+ }
+ if ('\0' == *display)
+ snprintf(display, sizeof(display),
+ T_(CT_GET_TEXT_BASIC, CTTEXT_SAVED_IN), "Noname");
+ return strdup(display);
+ }
+ return NULL;
+}
+
+static char* detail_gl_title_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ char *display = (char *) data;
+ if (0 == strcmp(part, "elm.text") && display && *display)
+ return strdup(display);
+ return NULL;
+}
+
+void ct_detail_gl_number_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ contacts_record_h record_number = (contacts_record_h) data;
+ ct_detail_data *cdetail_d;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ p_retm_if(NULL == record_number, "parameter(CTSstruct) is NULL");
+
+ cdetail_d = (ct_detail_data *) evas_object_data_get(obj, "cdetail_d");
+ p_retm_if(NULL == cdetail_d, "evas_object_data_get() return NULL");
+
+ detail_number_cb(record_number, cdetail_d);
+}
+
+static void detail_send_name_card_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ if (NULL != data)
+ {
+ ct_detail_data *cdetail_d = static_cast<ct_detail_data*>(data);
+ p_retm_if(NULL == cdetail_d, "cdetail_d is null");
+ const char *SEND_NAMECARD = "Send namecard";
+
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+ ct_detail_menu_hide_cb(cdetail_d, NULL, NULL);
+
+ cdetail_d->popup = elm_popup_add(cdetail_d->navi);
+ if (NULL != cdetail_d->popup)
+ {
+ elm_object_part_text_set(cdetail_d->popup, TITLE_TEXT, SEND_NAMECARD);
+
+ elm_popup_item_append(cdetail_d->popup, S_(PH_SYS_BODY_MESSAGE), NULL, ct_detail_send_via_msg, cdetail_d);
+ elm_popup_item_append(cdetail_d->popup, S_(CT_SYS_BODY_EMAIL), NULL, ct_detail_send_via_email, cdetail_d);
+ elm_popup_item_append(cdetail_d->popup, S_(CT_SYS_BODY_BLUETOOTH), NULL, ct_detail_send_via_bluetooth, cdetail_d);
+
+ Evas_Object *cancel_button = elm_button_add(cdetail_d->popup);
+ p_retm_if(NULL == cancel_button, "cancel_button is null");
+ elm_object_text_set(cancel_button, S_(PH_SYS_SK_CANCEL));
+ elm_object_part_content_set(cdetail_d->popup, BUTTON1, cancel_button);
+ evas_object_smart_callback_add(cancel_button, CLICKED, ct_detail_popup_hide_cb, cdetail_d);
+
+ evas_object_show(cdetail_d->popup);
+ }
+ else
+ {
+ ERR("detail_send_name_card_cb() Failed: %s", "elm_popup_add() return NULL");
+ }
+ }
+}
+
+static void detail_list_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ ct_person_list *person_info;
+ int err = CONTACTS_ERROR_NONE;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ if (cdetail_d->person_id)
+ {
+ person_info = (ct_person_list *) elm_object_item_data_get(item);
+ p_retm_if(NULL == person_info,
+ "elm_object_item_data_get() returns NULL");
+
+ err = contacts_person_link_person(cdetail_d->person_id,
+ person_info->id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_person_link_person() Failed(%d)", err);
+
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ phone_show_tickernoti(S_(CT_SYS_POP_SUCCESS));
+ ct_detail_refresh_view(cdetail_d);
+ }
+ else
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+
+ elm_naviframe_item_pop(cdetail_d->navi);
+ }
+}
+
+static void detail_link_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ if (NULL != data)
+ {
+ ct_detail_data *cdetail_d = static_cast<ct_detail_data*>(data);
+
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+ ct_detail_menu_hide_cb(cdetail_d, NULL, NULL);
+
+ ctui_create_list_single_select_view(cdetail_d->win, cdetail_d->navi, detail_list_gl_sel, cdetail_d, cdetail_d->person_id);
+ }
+}
+
+static void detail_unlink_popup_cancel_btn_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+}
+
+static void detail_gl_unlink_item_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int person_id;
+ ct_detail_data *cdetail_d;
+ ct_detail_person_data *person_info = (ct_detail_person_data *) data;
+ int err;
+
+ cdetail_d = (ct_detail_data *) evas_object_data_get(obj, "cdetail_d");
+ p_retm_if(NULL == cdetail_d, "evas_object_data_get() return NULL");
+
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+
+ err = contacts_person_unlink_contact(cdetail_d->person_id,
+ person_info->contact_id, &person_id);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ phone_show_tickernoti(S_(CT_SYS_POP_SUCCESS));
+ ct_detail_refresh_view(cdetail_d);
+ }
+ else
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+}
+
+static void detail_unlink_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_detail_data *cdetail_d = static_cast<ct_detail_data*>(data);
+
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+ ct_detail_menu_hide_cb(cdetail_d, NULL, NULL);
+
+ Evas_Object *popup = elm_popup_add(cdetail_d->navi);
+ if (NULL != popup)
+ {
+ elm_object_style_set(popup, "liststyle");
+
+ Evas_Object *btn = elm_button_add(popup);
+ elm_object_text_set(btn, S_(PH_SYS_POP_CLOSE));
+ elm_object_part_content_set(popup, BUTTON1, btn);
+ elm_object_style_set(btn, "popup_button/default");
+ evas_object_smart_callback_add(btn, CLICKED, detail_unlink_popup_cancel_btn_cb, cdetail_d);
+
+ elm_object_part_text_set(popup, "title,text", T_(CT_GET_TEXT_BASE_OP, CTTEXT_UNLINK));
+ evas_object_show(popup);
+ cdetail_d->popup = popup;
+
+ Evas_Object *genlist = elm_genlist_add(popup);
+ if (NULL != genlist)
+ {
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ cdetail_d->genlist_unlink = genlist;
+ evas_object_data_set(genlist, "cdetail_d", cdetail_d);
+
+ Eina_List *l;
+ void *v_record = NULL;
+ EINA_LIST_FOREACH(cdetail_d->list_contacts, l, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ if (detail_is_display_contact(cdetail_d, record))
+ {
+ continue;
+ }
+ ct_detail_person_data *person_info;
+ person_info = (ct_detail_person_data *) calloc(1, sizeof(ct_detail_person_data));
+ if (NULL == person_info)
+ {
+ ERR("calloc() return NULL");
+ break;
+ }
+
+ int err = CONTACTS_ERROR_NONE;
+ err = contacts_record_get_int(record, _contacts_contact.id, &(person_info->contact_id));
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_get_int(record, _contacts_contact.address_book_id, &(person_info->addressbook_id));
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_get_int() Failed(%d)", err);
+
+ Elm_Object_Item *item = elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_UNLINK_POPUP], person_info, NULL, ELM_GENLIST_ITEM_NONE, detail_gl_unlink_item_sel, person_info);
+
+ person_info->item = item;
+ }
+
+ evas_object_show(genlist);
+ elm_object_content_set(popup, genlist);
+ }
+ else
+ {
+ ERR("__detail_click_default_email() Failed: %s", "elm_genlist_add() return NULL");
+ }
+ }
+ else
+ {
+ ERR("__detail_click_default_email() Failed: %s", "elm_popup_add() return NULL");
+ }
+ }
+}
+
+static void block_contact_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_detail_data* p_detail_data = (ct_detail_data*)data;
+
+ int contact_id = phone_get_contact_id_by_person_id(p_detail_data->person_id);
+ ct_detail_menu_hide_cb(p_detail_data, NULL, NULL);
+
+ p_detail_data->popup = phone_create_block_contact_popup(p_detail_data->navi, contact_id);
+}
+
+static char* detail_gl_unlink_popup_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_MAX_LEN + 1];
+ char *display;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ ct_detail_person_data *person_info = (ct_detail_person_data *) data;
+ p_retvm_if(NULL == person_info, NULL, "person_info is NULL");
+
+ if (0 == strcmp(part, "elm.text") || 0 == strcmp(part, "elm.text.1"))
+ {
+ buf[0] = '\0';
+
+ err = contacts_db_get_record(_contacts_simple_contact._uri, person_info->contact_id, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(record, _contacts_simple_contact.display_name, &display);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (display && *display)
+ snprintf(buf, sizeof(buf), "%s", display);
+
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ if (*buf)
+ return strdup(buf);
+ }
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+
+ buf[0] = '\0';
+ ctui_get_addressbook_name(person_info->addressbook_id, buf,
+ sizeof(buf));
+ if (*buf)
+ return strdup(buf);
+ }
+ return NULL;
+}
+
+static Evas_Object* detail_gl_unlink_popup_icon_get(void *data,
+ Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ ct_detail_person_data *person_info = (ct_detail_person_data *) data;
+ p_retvm_if(NULL == person_info, NULL, "person_info is NULL");
+
+ if (0 == strcmp(part, "elm.icon"))
+ {
+ char *icon_path;
+ Evas_Object *icon;
+
+ icon_path = ctui_get_addressbook_icon_path(person_info->addressbook_id);
+ if (icon_path && *icon_path)
+ {
+ icon = elm_icon_add(obj);
+ p_retvm_if(NULL == icon, NULL, "elm_icon_add() return NULL");
+
+ elm_image_file_set(icon, icon_path, NULL);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL,
+ 1, 1);
+ free(icon_path);
+ return icon;
+ }
+ }
+ return NULL;
+}
+static void detail_gl_unlink_popup_del(void *data, Evas_Object *obj)
+{
+ PH_TRACE;
+ ct_detail_person_data *person_info = (ct_detail_person_data *) data;
+ p_retm_if(NULL == person_info, "person_info is NULL");
+ free(person_info);
+}
+
+static Evas_Object *detail_gl_link_unlink_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ p_retvm_if(NULL == cdetail_d, NULL, "parameter(ct_detail_data) is NULL");
+
+ if (0 == strcmp(part, "elm.icon.1"))
+ {
+ Evas_Object *btn;
+
+ btn = ctui_create_btn(obj,
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_LINK_CONTACTS));
+ p_retvm_if(NULL == btn, NULL, "ctui_create_btn() return NULL");
+ if (!cdetail_d->ug)
+ evas_object_smart_callback_add(btn, CLICKED, detail_link_cb,
+ cdetail_d);
+
+ return btn;
+ }
+ else if (0 == strcmp(part, "elm.icon.2"))
+ {
+ Evas_Object *btn;
+
+ btn = ctui_create_btn(obj, T_(CT_GET_TEXT_BASE_OP, CTTEXT_UNLINK));
+ p_retvm_if(NULL == btn, NULL, "ctui_create_btn() return NULL");
+
+ if (cdetail_d->list_contacts
+ && 1 < eina_list_count(cdetail_d->list_contacts))
+ {
+ if (!cdetail_d->ug)
+ evas_object_smart_callback_add(btn, CLICKED, detail_unlink_cb,
+ cdetail_d);
+ }
+ else
+ elm_object_disabled_set(btn, EINA_TRUE);
+ return btn;
+ }
+ return NULL;
+}
+
+static Evas_Object *detail_gl_util_btn_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ Evas_Object *ret_obj;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ p_retvm_if(NULL == cdetail_d, NULL, "parameter(ct_detail_data) is NULL");
+
+ ret_obj = NULL;
+ if (0 == strcmp(part, "elm.icon.1") || 0 == strcmp(part, "elm.icon"))
+ {
+ Evas_Object *btn;
+ btn = ctui_create_btn(obj, T_(CT_GET_TEXT_BASE_OP, CTTEXT_ADD_TO_HOME));
+ p_retvm_if(NULL == btn, NULL, "ctui_create_btn() return NULL");
+ if (!cdetail_d->has_number)
+ elm_object_disabled_set(btn, EINA_TRUE);
+ ret_obj = btn;
+ }
+ else if (0 == strcmp(part, "elm.icon.2"))
+ {
+ Evas_Object *btn;
+ btn = ctui_create_btn(obj,
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_SEND_NAME_CARD));
+ p_retvm_if(NULL == btn, NULL, "ctui_create_btn() return NULL");
+ if (!cdetail_d->ug)
+ evas_object_smart_callback_add(btn, CLICKED,
+ detail_send_name_card_cb, cdetail_d);
+
+ ret_obj = btn;
+ }
+ return ret_obj;
+}
+
+static void detail_gl_website_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char *website;
+ contacts_record_h record_website = (contacts_record_h) data;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ int ret;
+ service_h service;
+
+ p_retm_if(NULL == record_website, "parameter(value) is NULL");
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ contacts_record_get_str_p(record_website, _contacts_url.url, &website);
+ if (website && *website)
+ {
+ ret = service_create(&service);
+ p_retm_if(SERVICE_ERROR_NONE != ret, "service_create() Failed(%d)",
+ ret);
+
+ ret = service_set_operation(service, SERVICE_OPERATION_VIEW);
+ p_retm_if(SERVICE_ERROR_NONE != ret,
+ "service_set_operation() Failed(%d)", ret);
+
+ if (strstr(website, "http"))
+ ret = service_set_uri(service, website);
+ else
+ {
+ char *new_url = g_strdup_printf("http://%s", website);
+ ret = service_set_uri(service, new_url);
+ free(new_url);
+ }
+ p_retm_if(SERVICE_ERROR_NONE != ret, "service_set_uri() Failed(%d)",
+ ret);
+
+ ret = service_send_launch_request(service, NULL, NULL);
+ p_retm_if(SERVICE_ERROR_NONE != ret,
+ "service_send_launch_request() Failed(%d)", ret);
+
+ service_destroy(service);
+ }
+}
+
+static contacts_record_h detail_find_first_linked_contact(ct_detail_data *detail_d)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == detail_d, NULL, "detail_d is NULL");
+ p_retvm_if(NULL == detail_d->list_contacts, NULL, "detail_d->list_contacts is NULL");
+ Eina_List *l = NULL;
+ void * v_record = NULL;
+ contacts_record_h record = NULL;
+
+ EINA_LIST_FOREACH(detail_d->list_contacts, l, v_record)
+ {
+ record = (contacts_record_h) v_record;
+
+ if(!detail_is_display_contact(detail_d, record))
+ {
+ return record;
+ }
+ }
+ return NULL;
+}
+static char* detail_gl_link_item_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_MAX_LEN + 1];
+ int addressbook_id = 0;
+ contacts_record_h record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ ct_detail_data *detail_d = (ct_detail_data *) data;
+ p_retvm_if(NULL == detail_d, NULL, "detail_d is NULL");
+
+ record = detail_find_first_linked_contact(detail_d);
+ p_retvm_if(NULL == record, NULL, "record is NULL");
+
+ if (0 == strcmp(part, "elm.text") || 0 == strcmp(part, "elm.text.1"))
+ {
+ buf[0] = '\0';
+
+ char *display_name = NULL;
+ err = contacts_record_get_str_p(record, _contacts_contact.display_name, &display_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (display_name && *display_name)
+ {
+ if (detail_d->list_contacts && 2 < eina_list_count(detail_d->list_contacts))
+ {
+ snprintf(buf, sizeof(buf), "%s + %i", display_name, eina_list_count(detail_d->list_contacts) - 2);
+ }
+ else
+ {
+ return strdup(display_name);
+ }
+ }
+ if (*buf)
+ {
+ return strdup(buf);
+ }
+ }
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+
+ buf[0] = '\0';
+ contacts_record_get_int(record, _contacts_contact.address_book_id, &(addressbook_id));
+ ctui_get_addressbook_name(addressbook_id, buf, sizeof(buf));
+ if (*buf)
+ return strdup(buf);
+ }
+ return NULL;
+}
+
+static void detail_gl_unlink_item_list_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int person_id = 0;
+ int err = 0;
+ int contact_id = 0;
+ contacts_record_h record = NULL;
+
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ p_retm_if(NULL == cdetail_d, "evas_object_data_get() return NULL");
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+
+ record = detail_find_first_linked_contact(cdetail_d);
+ p_retm_if(NULL == record, "record is NULL");
+
+ err = contacts_record_get_int(record, _contacts_contact.id, &contact_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int Failed(%d)", err);
+
+ err = contacts_person_unlink_contact(cdetail_d->person_id, contact_id, &person_id);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ phone_show_tickernoti(S_(CT_SYS_POP_SUCCESS));
+ ct_detail_refresh_view(cdetail_d);
+ elm_object_item_del(cdetail_d->link_item);
+ }
+ else
+ {
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+ }
+}
+
+static void detail_unlink_item_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ ct_detail_data *cdetail_d = (ct_detail_data*) data;
+ p_retm_if(NULL == cdetail_d, "cdetail_d is NULL");
+ char *person_display_name = NULL;
+ char *link_display_name = NULL;
+ contacts_record_h record = NULL;
+ int err = 0;
+
+ record = detail_find_first_linked_contact(cdetail_d);
+ p_retm_if(NULL == record, "record is NULL");
+
+ err = contacts_record_get_str_p(cdetail_d->person, _contacts_person.display_name, &person_display_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_str_p Failed(%d)", err);
+
+ err = contacts_record_get_str_p(record, _contacts_contact.display_name, &link_display_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_str_p(display_name) Failed(%d)", err);
+
+ Evas_Object *popup = elm_popup_add(cdetail_d->navi);
+ if (NULL != popup)
+ {
+ phone_popup_add_button(popup, S_(PH_SYS_SK_OK),detail_gl_unlink_item_list_sel,cdetail_d);
+ phone_popup_add_button(popup, S_(PH_SYS_SK_CANCEL),ct_detail_popup_hide_cb,cdetail_d);
+
+ char buf[PH_TEXT_MAX_LEN + 1];
+ snprintf(buf, sizeof(buf), T_(PH_GET_TEXT_BASIC, PHTEXT_SEPARATE_CONTACTS_FROM), link_display_name, person_display_name);
+
+ elm_object_text_set(popup, buf);
+
+ elm_object_part_text_set(popup, "title,text", T_(PH_GET_TEXT_BASIC, PHTEXT_SEPARATE_CONTACTS));
+ evas_object_show(popup);
+ cdetail_d->popup = popup;
+ }
+}
+
+static Evas_Object *detail_gl_link_item_content_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ p_retvm_if(NULL == cdetail_d, NULL, "cdetail_d is NULL");
+ p_retvm_if(NULL == obj, NULL, "obj is NULL");
+ p_retvm_if(NULL == cdetail_d->list_contacts, NULL, "cdetail_d->list_contacts is NULL");
+
+ Evas_Object *button = elm_button_add(obj);
+ p_retvm_if(NULL == button, NULL, "elm_button_add() return NULL");
+ evas_object_propagate_events_set(button, EINA_FALSE);
+ if (cdetail_d->list_contacts && 2 < eina_list_count(cdetail_d->list_contacts))
+ {
+ elm_object_style_set(button, REVEAL_BUTTON);
+ evas_object_smart_callback_add(button, CLICKED, detail_link_sel, cdetail_d);
+ }
+ else
+ {
+ elm_object_style_set(button, MINUS_BUTTON);
+ evas_object_smart_callback_add(button, CLICKED, detail_unlink_item_cb, cdetail_d);
+ }
+ return button;
+}
+static void detail_delete_link_item_from_genlist_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_detail_person_data *person_info = (ct_detail_person_data *) data;
+ p_retm_if(NULL == person_info, "person_info is NULL");
+ p_retm_if(NULL == person_info->item, "person_info->item is NULL");
+ p_retm_if(NULL == obj, "obj is NULL");
+ ct_detail_data *cdetail_d = (ct_detail_data *)evas_object_data_get(obj, "cdetail_d");
+ p_retm_if(NULL == cdetail_d, "cdetail_d is NULL");
+ cdetail_d->list_unlink = eina_list_append(cdetail_d->list_unlink,(void *) person_info->contact_id);
+ elm_object_item_del(person_info->item);
+}
+
+static Evas_Object *detail_gl_link_list_content_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == obj, NULL, "obj is NULL");
+ ct_detail_data *cdetail_d = (ct_detail_data *)evas_object_data_get(obj, "cdetail_d");
+ p_retvm_if(NULL == cdetail_d, NULL, "cdetail_dreturn NULL");
+
+ Evas_Object *button = elm_button_add(obj);
+ evas_object_data_set(button, "cdetail_d", cdetail_d);
+ p_retvm_if(NULL == button, NULL, "elm_button_add() return NULL");
+ evas_object_propagate_events_set(button, EINA_FALSE);
+ evas_object_smart_callback_add(button, CLICKED, detail_delete_link_item_from_genlist_cb, data);
+ elm_object_style_set(button, MINUS_BUTTON);
+ return button;
+}
+
+static char* detail_gl_link_list_sub_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int contact_id = (int) data;
+ char *display;
+ char buf[PH_TEXT_MAX_LEN];
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record_contact = NULL;
+
+ if (0 == strcmp(part, "elm.text"))
+ {
+ buf[0] = '\0';
+
+ err = contacts_db_get_record(_contacts_contact._uri, contact_id,
+ &record_contact);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record(%d) Failed(%d)", contact_id, err);
+
+ err = contacts_record_get_str_p(record_contact,
+ _contacts_contact.display_name, &display);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p(display_name) Failed(%d)", err);
+
+ if (display && *display)
+ snprintf(buf, sizeof(buf), "%s", display);
+
+ err = contacts_record_destroy(record_contact, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ if (*buf)
+ return strdup(buf);
+ }
+ return NULL;
+}
+
+static Evas_Object* detail_gl_link_list_sub_icon_get(void *data,
+ Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ int addressbook_id;
+ int contact_id = (int) data;
+ char *icon_path;
+ Evas_Object *icon;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ if (0 == strcmp(part, "elm.icon"))
+ {
+ err = contacts_db_get_record(_contacts_simple_contact._uri, contact_id,
+ &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ err = contacts_record_get_int(record,
+ _contacts_simple_contact.address_book_id, &addressbook_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ icon_path = ctui_get_addressbook_icon_path(addressbook_id);
+ if (icon_path && *icon_path)
+ {
+ icon = elm_icon_add(obj);
+ p_retvm_if(NULL == icon, NULL, "elm_icon_add() return NULL");
+
+ elm_image_file_set(icon, icon_path, NULL);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL,
+ 1, 1);
+ free(icon_path);
+ return icon;
+ }
+ }
+ return NULL;
+}
+
+static void detail_group_changed(const char *view_uri, void *data)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+ p_retm_if(NULL == cdetail_d, "parameter(cdetail_d) is NULL");
+ elm_genlist_item_update(cdetail_d->group_item);
+}
+
+static void detail_filemanager_status_changed_cb(keynode_t *key, void *data)
+{
+ PH_TRACE;
+ Elm_Object_Item *item_ringtone = (Elm_Object_Item *) data;
+ p_retm_if(NULL == item_ringtone, "parameter(item_ringtone) is NULL");
+ elm_genlist_item_update(item_ringtone);
+}
+
+static void detail_view_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int ret;
+ int err = CONTACTS_ERROR_NONE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ if (cdetail_d->popup)
+ evas_object_del(cdetail_d->popup);
+
+ if (cdetail_d->m_Menu)
+ evas_object_del(cdetail_d->m_Menu);
+
+ if (cdetail_d->genlist)
+ evas_object_del(cdetail_d->genlist);
+
+ if (cdetail_d->th)
+ {
+ elm_theme_extension_del(cdetail_d->th, DETAIL_THEME_EDJ);
+ elm_theme_free(cdetail_d->th);
+ }
+
+ ct_detail_delete_namecards(cdetail_d);
+
+ err = contacts_db_remove_changed_cb(_contacts_contact._uri,
+ ct_detail_contact_changed, cdetail_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_remove_changed_cb() Failed(%d)", err);
+
+ err = contacts_db_remove_changed_cb(_contacts_group._uri,
+ detail_group_changed, cdetail_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_remove_changed_cb() Failed(%d)", err);
+
+ ret = vconf_ignore_key_changed(VCONFKEY_FILEMANAGER_DB_STATUS,
+ detail_filemanager_status_changed_cb);
+ p_warn_if(-1 == ret, "vconf_ignore_key_changed() Failed");
+
+ /* if (cdetail_d->updated) { // group member issue when group member update at detail view
+ Eina_List *l;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h contact = NULL;
+
+ EINA_LIST_FOREACH(cdetail_d->list_contacts, l, contact) {
+ // TODO: contacts_db_update_records
+ err = contacts_db_update_record(contact);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_update_record() Failed(%d)", err);
+ }
+ }*/
+
+ contacts_record_h record = NULL;
+ void *v_record = NULL;
+ EINA_LIST_FREE(cdetail_d->list_number, v_record)
+ {
+ record = (contacts_record_h) v_record;
+ if (NULL == record)
+ continue;
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy(list_number) Failed(%d)", err);
+ }
+ cdetail_d->list_number = NULL;
+
+ EINA_LIST_FREE(cdetail_d->list_email, v_record)
+ {
+ record = (contacts_record_h) v_record;
+ if (NULL == record)
+ continue;
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy(list_email) Failed(%d)", err);
+ }
+ cdetail_d->list_email = NULL;
+
+ EINA_LIST_FREE(cdetail_d->list_postal, v_record)
+ {
+ record = (contacts_record_h) v_record;
+ if (NULL == record)
+ continue;
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy(list_postal) Failed(%d)", err);
+ }
+ cdetail_d->list_postal = NULL;
+
+ EINA_LIST_FREE(cdetail_d->list_relationship, v_record)
+ {
+ record = (contacts_record_h) v_record;
+ if (NULL == record)
+ continue;
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy(list_relationship) Failed(%d)", err);
+ }
+ cdetail_d->list_relationship = NULL;
+
+ EINA_LIST_FREE(cdetail_d->list_event, v_record)
+ {
+ record = (contacts_record_h) v_record;
+ if (NULL == record)
+ continue;
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy(list_event) Failed(%d)", err);
+ }
+ cdetail_d->list_event = NULL;
+
+ EINA_LIST_FREE(cdetail_d->list_messenger, v_record)
+ {
+ record = (contacts_record_h) v_record;
+ if (NULL == record)
+ continue;
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy(list_messenger) Failed(%d)", err);
+ }
+ cdetail_d->list_messenger = NULL;
+
+ EINA_LIST_FREE(cdetail_d->list_website, v_record)
+ {
+ record = (contacts_record_h) v_record;
+ if (NULL == record)
+ continue;
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy(list_website) Failed(%d)", err);
+ }
+ cdetail_d->list_website = NULL;
+
+ ctui_free_record_list(cdetail_d->list_contacts);
+ free(cdetail_d->vcard_path);
+ free(cdetail_d->base_ab_name);
+
+ evas_object_data_del(cdetail_d->navi, "cdetail_d");
+
+ if (cdetail_d->formatter)
+ udat_close(cdetail_d->formatter);
+
+ if (cdetail_d->child_ug)
+ ug_destroy(cdetail_d->child_ug);
+ cdetail_d->child_ug = NULL;
+
+ cdetail_d->view_destroying = FALSE;
+
+ if (cdetail_d->person)
+ {
+ err = contacts_record_destroy(cdetail_d->person, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ }
+
+ if (cdetail_d->has_input)
+ cdetail_d->has_detail = false;
+ else
+ free(cdetail_d);
+
+}
+
+static char *__detail_gl_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ char *str = NULL;
+ if (!data)
+ return NULL;
+
+ str = (char*) data;
+ if (0 == strcmp(part, "elm.text"))
+ {
+
+ return SAFE_STRDUP(str);
+ }
+ return NULL;
+}
+
+static inline void detail_create_itcs()
+{
+ PH_TRACE;
+ detail_itcs[DETAIL_ITC_NUMBER].func.text_get =
+ ct_detail_gl_number_label_get;
+ detail_itcs[DETAIL_ITC_EMAIL].func.text_get = ct_detail_gl_email_label_get;
+ detail_itcs[DETAIL_ITC_URL].func.text_get = detail_gl_url_label_get;
+
+ detail_itcs[DETAIL_ITC_NUMBER_DEFAULT].func.text_get =
+ ct_detail_gl_number_label_get;
+
+ detail_itcs[DETAIL_ITC_MESSENGER].func.text_get =
+ detail_gl_messenger_label_get;
+ detail_itcs[DETAIL_ITC_EVENT].func.text_get = detail_gl_event_label_get;
+
+ detail_itcs[DETAIL_ITC_ADDRESS].func.text_get = detail_gl_address_label_get;
+
+ detail_itcs[DETAIL_ITC_NOTE].func.text_get =
+ detail_gl_2text_multiline_label_get;
+
+ detail_itcs[DETAIL_ITC_RINGTONE].func.text_get =
+ detail_gl_ringtone_label_get;
+
+ detail_itcs[DETAIL_ITC_VIBRATION].func.text_get =
+ detail_gl_vibration_label_get;
+
+ detail_itcs[DETAIL_ITC_GROUP].func.text_get = detail_gl_group_label_get;
+
+ detail_itcs[DETAIL_ITC_RELATIONSHIP].func.text_get =
+ detail_gl_relationship_label_get;
+
+ detail_itcs[DETAIL_ITC_NUM_UTIL_BTN].func.content_get =
+ ct_detail_gl_number_util_icon_get;
+
+ detail_itcs[DETAIL_ITC_UTIL_BTN].func.content_get =
+ detail_gl_util_btn_icon_get;
+
+ detail_itcs[DETAIL_ITC_UTIL_1BTN].func.content_get =
+ detail_gl_util_btn_icon_get;
+
+ detail_itcs[DETAIL_ITC_ADDRBOOK].func.text_get =
+ detail_gl_address_book_label_get;
+
+ detail_itcs[DETAIL_ITC_LINK_UNLINK].func.content_get =
+ detail_gl_link_unlink_icon_get;
+
+ detail_itcs[DETAIL_ITC_UNLINK_POPUP].func.text_get =
+ detail_gl_unlink_popup_label_get;
+ detail_itcs[DETAIL_ITC_UNLINK_POPUP].func.content_get =
+ detail_gl_unlink_popup_icon_get;
+ detail_itcs[DETAIL_ITC_UNLINK_POPUP].func.del = detail_gl_unlink_popup_del;
+
+ detail_itcs[DETAIL_ITC_EDIT_POPUP].func.text_get =
+ detail_gl_unlink_popup_label_get;
+ detail_itcs[DETAIL_ITC_EDIT_POPUP].func.content_get =
+ detail_gl_unlink_popup_icon_get;
+ detail_itcs[DETAIL_ITC_EDIT_POPUP].func.del = detail_gl_unlink_popup_del;
+
+ detail_itcs[DETAIL_ITC_LINK_ITEM].func.text_get =
+ detail_gl_link_item_label_get;
+ detail_itcs[DETAIL_ITC_LINK_ITEM].func.content_get =
+ detail_gl_link_item_content_get;
+
+ detail_itcs[DETAIL_ITC_LINK_LIST].func.text_get =
+ detail_gl_unlink_popup_label_get;
+ detail_itcs[DETAIL_ITC_LINK_LIST].func.content_get =
+ detail_gl_link_list_content_get;
+ detail_itcs[DETAIL_ITC_LINK_LIST].func.del = detail_gl_unlink_popup_del;
+
+ detail_itcs[DETAIL_ITC_LINK_LIST_SUB].func.text_get =
+ detail_gl_link_list_sub_label_get;
+ detail_itcs[DETAIL_ITC_LINK_LIST_SUB].func.content_get =
+ detail_gl_link_list_sub_icon_get;
+
+ detail_itcs[DETAIL_ITC_FIELD_TITLE].func.text_get =
+ detail_gl_title_label_get;
+ detail_itcs[DETAIL_ITC_TITLE].func.text_get = detail_gl_title_label_get;
+
+ detail_itcs[DETAIL_ITC_BASEINFO_1TEXT_1ICON].func.text_get =
+ ct_detail_gl_baseinfo_label_get;
+ detail_itcs[DETAIL_ITC_BASEINFO_1TEXT_1ICON].func.content_get =
+ ct_detail_gl_baseinfo_icon_get;
+
+ detail_itcs[DETAIL_ITC_BASEINFO_2TEXT_1ICON].func.text_get =
+ ct_detail_gl_baseinfo_label_get;
+ detail_itcs[DETAIL_ITC_BASEINFO_2TEXT_1ICON].func.content_get =
+ ct_detail_gl_baseinfo_icon_get;
+
+ detail_itcs[DETAIL_ITC_BASEINFO_3TEXT_1ICON].func.text_get =
+ ct_detail_gl_baseinfo_label_get;
+ detail_itcs[DETAIL_ITC_BASEINFO_3TEXT_1ICON].func.content_get =
+ ct_detail_gl_baseinfo_icon_get;
+
+ detail_itcs[DETAIL_ITC_BASEINFO_1TEXT_2ICON].func.text_get =
+ ct_detail_gl_baseinfo_label_get;
+ detail_itcs[DETAIL_ITC_BASEINFO_1TEXT_2ICON].func.content_get =
+ ct_detail_gl_baseinfo_icon_get;
+
+ detail_itcs[DETAIL_ITC_BASEINFO_2TEXT_2ICON].func.text_get =
+ ct_detail_gl_baseinfo_label_get;
+ detail_itcs[DETAIL_ITC_BASEINFO_2TEXT_2ICON].func.content_get =
+ ct_detail_gl_baseinfo_icon_get;
+
+ detail_itcs[DETAIL_ITC_BASEINFO_3TEXT_2ICON].func.text_get =
+ ct_detail_gl_baseinfo_label_get;
+ detail_itcs[DETAIL_ITC_BASEINFO_3TEXT_2ICON].func.content_get =
+ ct_detail_gl_baseinfo_icon_get;
+
+ detail_itcs[DETAIL_ITC_DEFAULT_NUMBER_SET_POPUP].func.text_get =
+ ct_detail_gl_number_label_get;
+ detail_itcs[DETAIL_ITC_DEFAULT_EMAIL_SET_POPUP].func.text_get =
+ ct_detail_gl_email_label_get;
+
+ detail_itcs[DETAIL_ITC_EMAIL_DEFAULT].func.text_get =
+ ct_detail_gl_email_label_get;
+
+ detail_itcs[DETAIL_ITC_DEFAULT_NAME_POPUP].func.text_get =
+ __detail_gl_label_get;
+}
+
+static void detail_fill_list(Evas_Object *genlist, Elm_Genlist_Item_Class *itc,
+ Eina_List *list, Evas_Smart_Cb func)
+{
+ PH_TRACE;
+ Eina_List *cursor;
+ void *v_record = NULL;
+ Elm_Object_Item * item;
+
+ EINA_LIST_FOREACH(list, cursor, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ item = elm_genlist_item_append(genlist, itc, record, NULL,
+ ELM_GENLIST_ITEM_NONE, func, record);
+
+ if (NULL == func)
+ elm_genlist_item_select_mode_set(item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+}
+
+static void detail_fill_email_list(Evas_Object *genlist, Eina_List *list,
+ Evas_Smart_Cb func, int default_email_id)
+{
+ PH_TRACE;
+ Eina_List *cursor;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_email = NULL;
+ int email_id;
+
+ if (eina_list_count(list) < 2 && default_email_id > 0)
+ return;
+
+ EINA_LIST_FOREACH(list, cursor, v_record_email)
+ {
+ contacts_record_h record_email = (contacts_record_h) v_record_email;
+ err = contacts_record_get_int(record_email, _contacts_email.id,
+ &email_id);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if (default_email_id != 0 && default_email_id == email_id)
+ continue;
+ elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_EMAIL],
+ record_email, NULL, ELM_GENLIST_ITEM_NONE, func, record_email);
+ }
+}
+
+static void detail_fill_number_list(Evas_Object *genlist, Eina_List *list,
+ Evas_Smart_Cb func, int default_num_id)
+{
+ PH_TRACE;
+ Eina_List *cursor;
+ int err = CONTACTS_ERROR_NONE;
+ int number_id;
+ void *v_record_number = NULL;
+
+ if (eina_list_count(list) < 2 && default_num_id > 0)
+ return;
+
+ ctui_genlist_append_separator_20px_with_line(genlist);
+
+ EINA_LIST_FOREACH(list, cursor, v_record_number)
+ {
+ contacts_record_h record_number = (contacts_record_h) v_record_number;
+ err = contacts_record_get_int(record_number, _contacts_number.id,
+ &number_id);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if ((default_num_id != 0) && (number_id == default_num_id))
+ continue;
+
+ elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_NUMBER],
+ record_number, NULL, ELM_GENLIST_ITEM_NONE, func,
+ record_number);
+ }
+}
+
+static void detail_gl_link_list_exp(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ Eina_List *l;
+ void *v_record_temp = NULL;
+ Evas_Object *genlist = obj;
+ Elm_Object_Item *it_parent = (Elm_Object_Item *) event_info;
+ Elm_Object_Item * item;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ EINA_LIST_FOREACH(cdetail_d->list_contacts, l, v_record_temp)
+ {
+ contacts_record_h record_temp = (contacts_record_h) v_record_temp;
+ int contact_id;
+ err = contacts_record_get_int(record_temp, _contacts_contact.id,
+ &contact_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ item = elm_genlist_item_append(genlist,
+ &detail_itcs[DETAIL_ITC_LINK_LIST_SUB], (void *) contact_id,
+ it_parent, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE);
+ }
+}
+
+static void detail_gl_link_list_con(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ elm_genlist_item_subitems_clear(item);
+}
+
+static void __detail_baseinfo_item_update(ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ cdetail_d->base_item = cdetail_d->base_info_item;
+ elm_genlist_item_update(cdetail_d->base_item);
+}
+
+static void __detail_set_default_name(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = (contacts_record_h) data;
+ ct_detail_data *cdetail_d;
+ int contact_id;
+
+ p_retm_if(NULL == record, "parameter(record) is NULL");
+
+ cdetail_d = (ct_detail_data *) evas_object_data_get(obj, "cdetail_d");
+ p_retm_if(NULL == cdetail_d, "evas_object_data_get(record) return NULL");
+
+ err = contacts_record_get_int(record, _contacts_contact.id, &contact_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_person_set_default_property(
+ CONTACTS_PERSON_PROPERTY_NAME_CONTACT, cdetail_d->person_id,
+ contact_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_person_set_default_property() Failed(%d)", err);
+
+ err = contacts_record_destroy(cdetail_d->person, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy(list_event) Failed(%d)", err);
+
+ err = contacts_db_get_record(_contacts_person._uri, cdetail_d->person_id,
+ &(cdetail_d->person));
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() Failed(%d)",
+ err);
+
+ __detail_baseinfo_item_update(cdetail_d);
+
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+}
+
+static void __detail_select_person_name_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *popup;
+ Evas_Object *genlist;
+ Evas_Object *btn;
+ char *person_name;
+ char *contact_name;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record = NULL;
+ Eina_List *l;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ if (2 > eina_list_count(cdetail_d->list_contacts))
+ return;
+
+ if (cdetail_d->popup)
+ evas_object_del(cdetail_d->popup);
+
+ popup = elm_popup_add(cdetail_d->navi);
+ p_retm_if(NULL == popup, "elm_popup_add() return NULL");
+ elm_object_style_set(popup, "liststyle");
+
+ btn = elm_button_add(popup);
+ elm_object_text_set(btn, S_(PH_SYS_POP_CLOSE));
+ elm_object_part_content_set(popup, BUTTON1, btn);
+ elm_object_style_set(btn, "popup_button/default");
+ evas_object_smart_callback_add(btn, CLICKED, ct_detail_popup_hide_cb,
+ cdetail_d);
+
+ elm_object_part_text_set(popup, "title,text", "Set default name");
+ evas_object_show(popup);
+ cdetail_d->popup = popup;
+
+ genlist = elm_genlist_add(popup);
+ p_retm_if(NULL == genlist, "elm_genlist_add() return NULL");
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_data_set(genlist, "cdetail_d", cdetail_d);
+
+ err = contacts_record_get_str_p(cdetail_d->person,
+ _contacts_person.display_name, &person_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ EINA_LIST_FOREACH(cdetail_d->list_contacts, l, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ err = contacts_record_get_str_p(record, _contacts_contact.display_name,
+ &contact_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str() Failed(%d)", err);
+
+ if (strcmp(contact_name, person_name) != 0)
+ {
+ elm_genlist_item_append(genlist,
+ &detail_itcs[DETAIL_ITC_DEFAULT_NAME_POPUP], contact_name,
+ NULL, ELM_GENLIST_ITEM_NONE, __detail_set_default_name,
+ record);
+ }
+ }
+
+ evas_object_show(genlist);
+ elm_object_content_set(popup, genlist);
+
+ elm_genlist_item_selected_set((Elm_Object_Item *) event_info, EINA_FALSE);
+}
+
+Elm_Genlist_Item_Class* ct_detail_get_baseinfo_item_class(
+ ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ int cnt;
+ char *img;
+ char *str_main;
+ char *first = NULL;
+ char *last = NULL;
+ char str_sub1[CT_EDITFIELD_MAX_CHAR * 3 + 1] = { 0, };
+ char str_sub2[CT_EDITFIELD_MAX_CHAR * 4 + 1] = { 0, };
+ int err = CONTACTS_ERROR_NONE;
+
+ str_main = NULL;
+ if (cdetail_d->person)
+ {
+ err = contacts_record_get_str_p(cdetail_d->person,
+ _contacts_person.display_name, &str_main);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ }
+ else if (cdetail_d->contact)
+ {
+ contacts_record_h record_name;
+ err = contacts_record_get_str_p(cdetail_d->contact,
+ _contacts_contact.display_name, &str_main);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ if (NULL == str_main)
+ {
+ err = contacts_record_get_child_record_at_p(cdetail_d->contact,
+ _contacts_contact.name, 0, &record_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_child_record_at_p() Failed(%d)", err);
+ err = contacts_record_get_str_p(record_name, _contacts_name.first,
+ &first);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ PH_DBG("first %s", first);
+ if (strlen(first) > CT_EDITFIELD_MAX_CHAR)
+ {
+ first[CT_EDITFIELD_MAX_CHAR] = '\0';
+ }
+
+ err = contacts_record_get_str_p(record_name, _contacts_name.last,
+ &last);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ PH_DBG("last %s", last);
+ if (strlen(last) > CT_EDITFIELD_MAX_CHAR)
+ {
+ last[CT_EDITFIELD_MAX_CHAR] = '\0';
+ }
+ }
+ }
+
+ str_sub1[0] = '\0';
+ ct_detail_person_get_extra_name(cdetail_d->list_contacts, cdetail_d->person,
+ str_sub1, sizeof(str_sub1));
+ if (strlen(str_sub1) > CT_EDITFIELD_MAX_CHAR * 3)
+ str_sub1[CT_EDITFIELD_MAX_CHAR * 2 + 2] = '\0';
+
+ str_sub2[0] = '\0';
+ ct_detail_person_get_company_str(cdetail_d->list_contacts, str_sub2,
+ sizeof(str_sub2));
+ if (strlen(str_sub2) > CT_EDITFIELD_MAX_CHAR * 4)
+ str_sub2[CT_EDITFIELD_MAX_CHAR * 3 + 4] = '\0';
+
+ img = NULL;
+ if (cdetail_d->person)
+ {
+ err = contacts_record_get_str_p(cdetail_d->person,
+ _contacts_person.image_thumbnail_path, &img);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ }
+ else if (cdetail_d->contact)
+ {
+ err = contacts_record_get_str_p(cdetail_d->contact,
+ _contacts_contact.image_thumbnail_path, &img);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ }
+
+ cnt = 0;
+ if (str_main && *str_main)
+ cnt++;
+ if ((first && *first) || (last && *last))
+ cnt++;
+ if (*str_sub1)
+ cnt++;
+ if (*str_sub2)
+ cnt++;
+ if (img && *img)
+ cnt += 10;
+
+ switch (cnt)
+ {
+ case 1:
+ return &detail_itcs[DETAIL_ITC_BASEINFO_1TEXT_1ICON];
+ case 2:
+ return &detail_itcs[DETAIL_ITC_BASEINFO_2TEXT_1ICON];
+ case 3:
+ return &detail_itcs[DETAIL_ITC_BASEINFO_3TEXT_1ICON];
+ case 11:
+ return &detail_itcs[DETAIL_ITC_BASEINFO_1TEXT_2ICON];
+ case 12:
+ return &detail_itcs[DETAIL_ITC_BASEINFO_2TEXT_2ICON];
+ case 13:
+ return &detail_itcs[DETAIL_ITC_BASEINFO_3TEXT_2ICON];
+ default:
+ if (10 <= cnt)
+ return &detail_itcs[DETAIL_ITC_BASEINFO_1TEXT_2ICON];
+ else
+ return &detail_itcs[DETAIL_ITC_BASEINFO_1TEXT_1ICON];
+ }
+}
+
+static void __detail_gl_realized(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d;
+
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ Elm_Genlist_Item_Class *item_class;
+ p_retm_if(NULL == item, "parameter(item) is NULL");
+
+ cdetail_d = (ct_detail_data *) elm_object_item_data_get(item);
+ item_class = (Elm_Genlist_Item_Class *) elm_genlist_item_item_class_get(
+ item);
+ p_retm_if(NULL == item_class, "parameter(item_class) is NULL");
+
+ if (item_class == &detail_itcs[DETAIL_ITC_GROUP])
+ elm_object_item_signal_emit(item, "elm,state,top", "");
+ else if (item_class == &detail_itcs[DETAIL_ITC_RINGTONE])
+ {
+ if (!ct_detail_person_get_readonly(cdetail_d->list_contacts)
+ && !cdetail_d->vcard_path) //check if group field exists.
+ elm_object_item_signal_emit(item, "elm,state,center", "");
+ else
+ elm_object_item_signal_emit(item, "elm,state,top", "");
+ }
+ else if (item_class == &detail_itcs[DETAIL_ITC_VIBRATION])
+ elm_object_item_signal_emit(item, "elm,state,bottom", "");
+}
+
+API Evas_Object* ctui_detail_genlist_update(ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ int ret;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *genlist;
+ Evas_Object *layout;
+ int default_num_id = 0;
+ int default_email_id = 0;
+ bool need_separator;
+
+ Evas_Smart_Cb num_func = ct_detail_gl_number_sel;
+ Evas_Smart_Cb email_func = ct_detail_gl_email_sel;
+ contacts_record_h default_email_record = NULL;
+ contacts_record_h default_number_record = NULL;
+
+ layout = elm_object_part_content_get(cdetail_d->layout, "contents");
+
+// Create genlist
+ if (NULL == cdetail_d->genlist)
+ {
+ genlist = elm_genlist_add(layout);
+ cdetail_d->genlist = genlist;
+ evas_object_event_callback_add(genlist, EVAS_CALLBACK_MOUSE_UP,
+ ct_detail_mouseup, cdetail_d);
+ evas_object_data_set(genlist, "cdetail_d", cdetail_d);
+ elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+
+ evas_object_smart_callback_add(genlist, "expanded",
+ detail_gl_link_list_exp, cdetail_d);
+ evas_object_smart_callback_add(genlist, "contracted",
+ detail_gl_link_list_con, NULL);
+ elm_object_theme_set(genlist, cdetail_d->th);
+ }
+ else
+ {
+ genlist = cdetail_d->genlist;
+ elm_genlist_clear(genlist);
+
+ ret = vconf_ignore_key_changed(VCONFKEY_FILEMANAGER_DB_STATUS,
+ detail_filemanager_status_changed_cb);
+ p_warn_if(-1 == ret, "vconf_ignore_key_changed() Failed");
+ }
+ ctui_genlist_append_separator_20px(genlist);
+
+ cdetail_d->base_item = elm_genlist_item_append(genlist,
+ ct_detail_get_baseinfo_item_class(cdetail_d), cdetail_d, NULL,
+ ELM_GENLIST_ITEM_NONE, __detail_select_person_name_cb, cdetail_d);
+ cdetail_d->base_info_item = cdetail_d->base_item;
+
+ cdetail_d->list_number = ctui_person_get_number_list(
+ cdetail_d->list_contacts);
+ err = phone_cts_get_default_number(cdetail_d->person_id,
+ &default_number_record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_default_number() Failed(%d)", err);
+ }
+
+ if (CONTACTS_ERROR_NONE == err && default_number_record)
+ {
+ err = contacts_record_get_int(default_number_record,
+ _contacts_number.id, &default_num_id);
+
+ elm_genlist_item_append(genlist,
+ &detail_itcs[DETAIL_ITC_NUMBER_DEFAULT], default_number_record,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, default_number_record);
+
+ cdetail_d->number_util_item = elm_genlist_item_append(genlist,
+ &detail_itcs[DETAIL_ITC_NUM_UTIL_BTN], default_number_record,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+ detail_fill_number_list(genlist, cdetail_d->list_number, num_func,
+ default_num_id);
+ if (default_num_id)
+ cdetail_d->has_number = true;
+//check block number info
+
+// email list
+ cdetail_d->list_email = ctui_person_get_email_list(
+ cdetail_d->list_contacts);
+ err = phone_cts_get_default_email(cdetail_d->person_id,
+ &default_email_record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_default_email() Failed(%d)", err);
+
+ if (CONTACTS_ERROR_NONE == err && default_email_record)
+ {
+ ctui_genlist_append_separator_20px_with_line(genlist);
+ elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_FIELD_TITLE],
+ T_(CT_GET_TEXT_BASIC ,CTTEXT_EMAIL), NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ err = contacts_record_get_int(default_email_record, _contacts_email.id,
+ &default_email_id);
+ elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_EMAIL],
+ default_email_record, NULL, ELM_GENLIST_ITEM_NONE, email_func,
+ default_email_record);
+ }
+ detail_fill_email_list(genlist, cdetail_d->list_email, email_func,
+ default_email_id);
+
+// POSTAL list
+ cdetail_d->list_postal = ct_detail_person_get_postal_list(
+ cdetail_d->list_contacts);
+ if (cdetail_d->list_postal)
+ {
+ ctui_genlist_append_separator_20px_with_line(genlist);
+ elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_FIELD_TITLE],
+ T_(CT_GET_TEXT_BASIC ,CTTEXT_POSTAL_ADDRESS), NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ detail_fill_list(genlist, &detail_itcs[DETAIL_ITC_ADDRESS],
+ cdetail_d->list_postal, NULL);
+ }
+
+ evas_object_smart_callback_add(genlist, "realized", __detail_gl_realized,
+ NULL);
+
+// instant messenger list
+ cdetail_d->list_messenger = ct_detail_person_get_messenger_list(
+ cdetail_d->list_contacts);
+ if (cdetail_d->list_messenger)
+ elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_TITLE],
+ T_(CT_GET_TEXT_BASIC ,CTTEXT_INSTANT_MESSENGER), NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ detail_fill_list(genlist, &detail_itcs[DETAIL_ITC_MESSENGER],
+ cdetail_d->list_messenger, detail_gl_messenger_sel);
+
+ need_separator = true;
+
+// website
+ cdetail_d->list_website = ct_detail_person_get_website_list(
+ cdetail_d->list_contacts);
+ if (cdetail_d->list_website)
+ {
+ need_separator = false;
+ ctui_genlist_append_separator_20px_with_line(genlist);
+ elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_FIELD_TITLE],
+ T_(CT_GET_TEXT_BASIC ,CTTEXT_URL), NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ if (!cdetail_d->ug)
+ detail_fill_list(genlist, &detail_itcs[DETAIL_ITC_URL],
+ cdetail_d->list_website, detail_gl_website_sel);
+ else
+ detail_fill_list(genlist, &detail_itcs[DETAIL_ITC_URL],
+ cdetail_d->list_website, NULL);
+ }
+
+//relationship
+ cdetail_d->list_relationship = ct_detail_person_get_relationship_list(
+ cdetail_d->list_contacts);
+ if (cdetail_d->list_relationship)
+ {
+ //elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_FIELD_TITLE], T_(CT_GET_TEXT_BASIC ,CTTEXT_RELATIONSHIP),
+ // NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ detail_fill_list(genlist, &detail_itcs[DETAIL_ITC_RELATIONSHIP],
+ cdetail_d->list_relationship, NULL);
+ }
+
+// event list
+ cdetail_d->list_event = ct_detail_person_get_event_list(
+ cdetail_d->list_contacts);
+ if (cdetail_d->list_event && need_separator)
+ {
+ need_separator = false;
+ ctui_genlist_append_separator_20px_with_line(genlist);
+ }
+ if (cdetail_d->list_event)
+ {
+ //elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_FIELD_TITLE], T_(CT_GET_TEXT_BASIC ,CTTEXT_EVENT),
+ // NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ detail_fill_list(genlist, &detail_itcs[DETAIL_ITC_EVENT],
+ cdetail_d->list_event, NULL);
+ }
+
+//note list
+ cdetail_d->list_note = ct_detail_person_get_note_list(
+ cdetail_d->list_contacts);
+ if (cdetail_d->list_note && need_separator)
+ {
+ need_separator = false;
+ ctui_genlist_append_separator_20px_with_line(genlist);
+ }
+ if (cdetail_d->list_note)
+ {
+ //elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_FIELD_TITLE], T_(CT_GET_TEXT_BASIC ,CTTEXT_NOTE),
+ // NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ detail_fill_list(genlist, &detail_itcs[DETAIL_ITC_NOTE],
+ cdetail_d->list_note, NULL);
+ }
+
+ if (cdetail_d->person_id)
+ {
+ if(cdetail_d->list_contacts && 1 < eina_list_count(cdetail_d->list_contacts))
+ {
+ cdetail_d->link_item = elm_genlist_item_append(genlist,
+ &detail_itcs[DETAIL_ITC_LINK_ITEM], cdetail_d, NULL,
+ ELM_GENLIST_ITEM_NONE, detail_link_sel, cdetail_d);
+ }
+
+ ctui_genlist_append_separator_8px_with_line(genlist);
+
+ // group
+ if (!ct_detail_person_get_readonly(cdetail_d->list_contacts)
+ && !cdetail_d->vcard_path)
+ {
+ cdetail_d->group_item = elm_genlist_item_append(genlist,
+ &detail_itcs[DETAIL_ITC_GROUP], cdetail_d, NULL,
+ ELM_GENLIST_ITEM_NONE, detail_group_gl_sel, cdetail_d);
+ }
+
+ // Ringtone
+ cdetail_d->ringtone_item = elm_genlist_item_append(genlist,
+ &detail_itcs[DETAIL_ITC_RINGTONE], cdetail_d, NULL,
+ ELM_GENLIST_ITEM_NONE, detail_ringtone_gl_sel, cdetail_d);
+
+ ret = vconf_notify_key_changed(VCONFKEY_FILEMANAGER_DB_STATUS,
+ detail_filemanager_status_changed_cb, cdetail_d->ringtone_item);
+ p_warn_if(-1 == ret, "vconf_notify_key_changed() Failed");
+
+ // Vibration
+ cdetail_d->vibration_item = elm_genlist_item_append(genlist,
+ &detail_itcs[DETAIL_ITC_VIBRATION], cdetail_d, NULL,
+ ELM_GENLIST_ITEM_NONE, detail_vibration_gl_sel, cdetail_d);
+ // Addressbook
+ elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_ADDRBOOK],
+ cdetail_d, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+ }
+
+ return genlist;
+}
+
+static void detail_delete_person_response_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ p_retm_if(NULL == cdetail_d, "parameter(cdetail_d) is NULL");
+ p_retm_if(cdetail_d->person_id <= 0, "parameter(person_id) is NULL");
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+
+ evas_object_data_set(cdetail_d->navi, "ct_list_update_ui", (void *) 1);
+
+ err = contacts_db_delete_record(_contacts_person._uri,
+ cdetail_d->person_id);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ // FIXME : Improve the logic
+ err = contacts_db_remove_changed_cb(_contacts_contact._uri,
+ ct_detail_contact_changed, cdetail_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_remove_changed_cb() Failed(%d)", err);
+
+ if (cdetail_d->is_shortcut)
+ elm_exit();
+ else if (NULL == cdetail_d->prev_view_data && cdetail_d->ug)
+ ug_destroy_me(cdetail_d->ug);
+ else
+ elm_naviframe_item_pop_to(cdetail_d->prev_navi_item);
+ }
+ else
+ {
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+ ERR("contacts_db_delete_record() Failed(%d)", err);
+ }
+
+}
+
+static void detail_gl_edit_item_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ ct_detail_data *cdetail_d;
+ ct_detail_person_data *person_info = (ct_detail_person_data *) data;
+
+ cdetail_d = (ct_detail_data *) evas_object_data_get(obj, "cdetail_d");
+ p_retm_if(NULL == cdetail_d, "evas_object_data_get() return NULL");
+
+ if (cdetail_d->popup)
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+
+ err = contacts_db_get_record(_contacts_contact._uri,
+ person_info->contact_id, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() Failed(%d)",
+ err);
+
+ ct_input_push_navi_content(cdetail_d, record, person_info->contact_id);
+}
+
+static void detail_edit_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ PH_DBG("##### [TSP_TEST] detail->edit start#####");
+
+ ct_detail_data *cdetail_d = static_cast<ct_detail_data*>(data);
+
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+ ct_detail_menu_hide_cb(cdetail_d, NULL, NULL);
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record_contact = NULL;
+ int contact_id;
+
+ if (1 == eina_list_count(cdetail_d->list_contacts))
+ {
+ err = contacts_record_clone((contacts_record_h) cdetail_d->list_contacts->data, &record_contact);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_clone() Failed(%d)", err);
+
+ err = contacts_record_get_int(record_contact, _contacts_contact.id, &contact_id);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_get_int() Failed(%d)", err);
+
+ ct_input_push_navi_content(cdetail_d, record_contact, contact_id);
+
+ return;
+ }
+
+ Evas_Object *popup = elm_popup_add(cdetail_d->navi);
+ if (NULL != popup)
+ {
+ elm_object_style_set(popup, "liststyle");
+ elm_object_part_text_set(popup, "title,text", T_(CT_GET_TEXT_BASIC, CTTEXT_LINKED_CONTACTS));
+ cdetail_d->popup = popup;
+
+ Evas_Object *btn = elm_button_add(popup);
+ elm_object_text_set(btn, S_(PH_SYS_SK_CANCEL));
+ elm_object_part_content_set(popup, BUTTON1, btn);
+ elm_object_style_set(btn, "popup_button/default");
+ evas_object_smart_callback_add(btn, CLICKED, ct_detail_popup_hide_cb, cdetail_d);
+ evas_object_show(popup);
+
+ Evas_Object *genlist = elm_genlist_add(popup);
+ if (NULL != genlist)
+ {
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_data_set(genlist, "cdetail_d", cdetail_d);
+
+ Eina_List *l;
+ void *v_record_contact = (void *) record_contact;
+ EINA_LIST_FOREACH(cdetail_d->list_contacts, l, v_record_contact)
+ {
+ record_contact = (contacts_record_h) v_record_contact;
+ err = contacts_record_get_int(record_contact, _contacts_contact.id, &contact_id);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_get_int() Failed(%d)", err);
+
+ int addressbook_id;
+ err = contacts_record_get_int(record_contact, _contacts_contact.address_book_id, &addressbook_id);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_get_int() Failed(%d)", err);
+
+ contacts_record_h record_addressbook = NULL;
+ err = contacts_db_get_record(_contacts_address_book._uri, addressbook_id, &record_addressbook);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_db_get_record() Failed(%d)", err);
+
+ int addressbook_mode;
+ err = contacts_record_get_int(record_addressbook, _contacts_address_book.mode, &addressbook_mode);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_destroy(record_addressbook, true);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_record_destroy() Failed(%d)", err);
+
+ if (CONTACTS_ADDRESS_BOOK_MODE_READONLY == addressbook_mode)
+ continue;
+
+ ct_detail_person_data *person_info = (ct_detail_person_data *) calloc(1, sizeof(ct_detail_person_data));
+ if (NULL == person_info)
+ {
+ ERR("calloc() return NULL");
+ break;
+ }
+ person_info->contact_id = contact_id;
+ person_info->addressbook_id = addressbook_id;
+
+ Elm_Object_Item *item = elm_genlist_item_append(genlist, &detail_itcs[DETAIL_ITC_EDIT_POPUP], person_info, NULL, ELM_GENLIST_ITEM_NONE, detail_gl_edit_item_sel, person_info);
+
+ person_info->item = item;
+ }
+
+ evas_object_show(genlist);
+ elm_object_content_set(popup, genlist);
+ }
+ else
+ {
+ ERR("detail_edit_cb() Failed: %s", "elm_genlist_add() return NULL");
+ }
+ }
+ else
+ {
+ ERR("detail_edit_cb() Failed: %s", "elm_popup_add() return NULL");
+ }
+ }
+}
+
+static void detail_delete_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_detail_data *cdetail_d = static_cast<ct_detail_data*>(data);
+
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+ ct_detail_menu_hide_cb(cdetail_d, NULL, NULL);
+
+ if (cdetail_d->list_contacts && 1 < eina_list_count(cdetail_d->list_contacts))
+ phone_create_confirm_popup(&cdetail_d->popup, cdetail_d->win, T_(CT_GET_TEXT_BASE_OP, CTTEXT_ALL_LINKED_CONTACTS_WILL_BE_DELETED), detail_delete_person_response_cb, cdetail_d);
+ else
+ phone_create_confirm_popup(&cdetail_d->popup, cdetail_d->win, S_(PH_SYS_POP_DELETE_Q), detail_delete_person_response_cb, cdetail_d);
+ }
+}
+
+static void detail_history_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Elm_Theme *th;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ ct_history_data *chistory_d = (ct_history_data *) calloc(1,
+ sizeof(ct_history_data));
+ p_retm_if(NULL == chistory_d, "Fail to calloc ct_history_data");
+
+ ct_detail_menu_hide_cb(cdetail_d, NULL, NULL);
+
+ chistory_d->win = cdetail_d->win;
+ chistory_d->navi = cdetail_d->navi;
+ chistory_d->person_id = cdetail_d->person_id;
+ chistory_d->formatter = cdetail_d->formatter;
+ chistory_d->view_mode = DETAIL_VIEW_MODE_HISTORY;
+
+ th = elm_theme_new();
+ elm_theme_ref_set(th, NULL);
+ elm_theme_extension_add(th, DETAIL_THEME_EDJ);
+ chistory_d->th = th;
+
+ ct_detail_history_create_itcs();
+ phone_detail_log_generate_date_format(chistory_d->hformatter);
+
+ if (cdetail_d->popup)
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+
+ if (!chistory_d->list)
+ ct_detail_history_load_data(chistory_d);
+
+ ct_detail_history_fill_layout(chistory_d);
+}
+
+static char* detail_get_addressbook_icon_path(int addressbook_id)
+{
+ PH_TRACE;
+ int ret;
+ int account_id;
+ char *icon_path;
+ account_h account;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = contacts_db_get_record(_contacts_address_book._uri, addressbook_id,
+ &record);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ err = contacts_record_get_int(record, _contacts_address_book.account_id,
+ &account_id);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ return NULL;
+ }
+ account = NULL;
+ ret = account_create(&account);
+ p_retvm_if(ACCOUNT_ERROR_NONE != ret, false, "account_create() Failed(%d)",
+ ret);
+
+ ret = account_query_account_by_account_id(account_id, &account);
+ if (ACCOUNT_ERROR_NONE != ret)
+ {
+ ERR("account_query_account_by_account_id() Failed(%d)", ret);
+ account_destroy(account);
+ account_disconnect();
+ return NULL;
+ }
+ p_retvm_if(ACCOUNT_ERROR_NONE != ret, NULL,
+ "account_query_account_by_account_id() Failed(%d)", ret);
+
+ ret = account_get_icon_path(account, &icon_path);
+ if (ACCOUNT_ERROR_NONE != ret)
+ {
+ ERR("account_get_icon_path() Failed(%d)", ret);
+ account_destroy(account);
+ account_disconnect();
+ return NULL;
+ }
+ account_destroy(account);
+
+ return icon_path;
+}
+
+static void detail_init_account_data(ct_detail_data *cdetail_d,
+ ct_activity_data *cactivity_d)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ int i = 0;
+ void *v_addressbook_id = NULL;
+ Eina_List *l = NULL;
+ ct_ab_map acc_types[CT_MAX_ADDRBOOK];
+ char *addressbook_ids = NULL;
+ Eina_List *addressbook_id_list;
+ int ret;
+
+ err = contacts_record_get_str(cdetail_d->person,
+ _contacts_person.addressbook_ids, &addressbook_ids);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str() Failed(%d)", err);
+ addressbook_id_list = ctui_get_addressbook_id_list(addressbook_ids, " ");
+
+ ret = account_connect();
+ p_retm_if(ACCOUNT_ERROR_NONE != ret, "account_connect() Failed(%d)", ret);
+
+ EINA_LIST_FOREACH(addressbook_id_list, l, v_addressbook_id)
+ {
+ int addressbook_id = (int) v_addressbook_id;
+ acc_types[i].icon_path = detail_get_addressbook_icon_path(
+ addressbook_id);
+ acc_types[i].id = addressbook_id;
+ i++;
+ if (i == sizeof(acc_types) / sizeof(*acc_types))
+ break;
+ }
+ cactivity_d->acc_cnt = i;
+ cactivity_d->acc_types = (ct_ab_map *) realloc(cactivity_d->acc_types,
+ i * sizeof(ct_ab_map));
+ p_retm_if(NULL == cactivity_d->acc_types, "realloc() return NULL");
+
+ memcpy(cactivity_d->acc_types, acc_types, i * sizeof(ct_ab_map));
+ ret = account_disconnect();
+ p_warn_if(ACCOUNT_ERROR_NONE != ret, "account_disconnect() Failed(%d)",
+ ret);
+}
+
+static void detail_activity_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_detail_data *cdetail_d = static_cast<ct_detail_data*>(data);
+ Elm_Theme *th;
+
+ ct_activity_data *cactivity_d = (ct_activity_data *) calloc(1, sizeof(ct_activity_data));
+ if (NULL != cactivity_d)
+ {
+ cactivity_d->win = cdetail_d->win;
+ cactivity_d->navi = cdetail_d->navi;
+ cactivity_d->person_id = cdetail_d->person_id;
+ cactivity_d->formatter = cdetail_d->formatter;
+
+ th = elm_theme_new();
+ elm_theme_ref_set(th, NULL);
+ elm_theme_extension_add(th, DETAIL_THEME_EDJ);
+ cactivity_d->th = th;
+
+ ct_detail_activity_create_itcs();
+ phone_detail_log_generate_date_format(cactivity_d->hformatter);
+
+ ct_detail_popup_hide_cb(cdetail_d, NULL, NULL);
+ ct_detail_menu_hide_cb(cdetail_d, NULL, NULL);
+
+ detail_init_account_data(cdetail_d, cactivity_d);
+ if (!cactivity_d->list)
+ ct_detail_activity_load_data(cactivity_d);
+
+ ct_detail_activity_fill_layout(cactivity_d);
+ }
+ else
+ {
+ ERR("detail_activity_clicked_cb() Failed: %s", "Fail to calloc ct_activity_data");
+ }
+ }
+}
+
+static bool detail_contact_has_some_data(ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ if( (eina_list_count(cdetail_d->list_number) > 0
+ || eina_list_count(cdetail_d->list_email) > 0
+ || eina_list_count(cdetail_d->list_postal) > 0
+ || eina_list_count(cdetail_d->list_relationship) > 0
+ || eina_list_count(cdetail_d->list_event) > 0
+ || eina_list_count(cdetail_d->list_messenger) > 0
+ || eina_list_count(cdetail_d->list_website) > 0
+ || eina_list_count(cdetail_d->list_nickname) > 0
+ || eina_list_count(cdetail_d->list_note) > 0
+ ))
+ {
+ return true;
+ }
+ return false;
+}
+
+static void detail_more_btn_clicked_cb(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ const unsigned max_linked_contacts = 10;
+ if (NULL != data)
+ {
+ ct_detail_data *cdetail_d = static_cast<ct_detail_data*>(data);
+
+ ct_detail_popup_hide_cb(data, NULL, NULL);
+ ct_detail_menu_hide_cb(data, NULL, NULL);
+
+ cdetail_d->m_Menu = elm_ctxpopup_add(cdetail_d->navi);
+ if (NULL != cdetail_d->m_Menu)
+ {
+ int rotate = (int) evas_object_data_get(cdetail_d->navi, PHONE_ROTATE);
+ if (0 == rotate || 180 == rotate)
+ elm_ctxpopup_direction_priority_set(cdetail_d->m_Menu, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_LEFT, ELM_CTXPOPUP_DIRECTION_RIGHT);
+
+ evas_object_smart_callback_add(cdetail_d->m_Menu, "dismissed", ct_detail_menu_hide_cb, cdetail_d);
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_list_h list_history = NULL;
+ unsigned int count;
+ err = phone_cts_get_list(_contacts_person_phone_log._uri, _contacts_person_phone_log.person_id, cdetail_d->person_id, &list_history);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ contacts_list_get_count(list_history, &count);
+
+ if (CONTACTS_ERROR_NONE == err && 0 < count)
+ elm_ctxpopup_item_append(cdetail_d->m_Menu, T_(CT_GET_TEXT_BASIC, CTTEXT_HISTORY), NULL, detail_history_clicked_cb, cdetail_d);
+
+ contacts_list_h list_activity = NULL;
+ err = phone_cts_get_list(_contacts_contact_activity._uri, _contacts_contact_activity.person_id, cdetail_d->person_id, &list_activity);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ contacts_list_get_count(list_activity, &count);
+
+ if (CONTACTS_ERROR_NONE == err && 0 < count)
+ elm_ctxpopup_item_append(cdetail_d->m_Menu, T_(CT_GET_TEXT_BASIC, CTTEXT_ACTIVITIES), NULL, detail_activity_clicked_cb, cdetail_d);
+
+ //Delete
+ elm_ctxpopup_item_append(cdetail_d->m_Menu, S_(PH_SYS_SK_DELETE), NULL, detail_delete_cb, cdetail_d);
+
+ //Edit
+ if (!ct_detail_person_get_readonly(cdetail_d->list_contacts))
+ {
+ elm_ctxpopup_item_append(cdetail_d->m_Menu, S_(PH_SYS_SK_EDIT), NULL, detail_edit_cb, cdetail_d);
+ }
+
+ if(detail_contact_has_some_data(cdetail_d))
+ {
+ //Link
+ if (eina_list_count(cdetail_d->list_contacts) < max_linked_contacts)
+ {
+ elm_ctxpopup_item_append(cdetail_d->m_Menu, T_(CT_GET_TEXT_BASE_OP, CTTEXT_LINK_CONTACTS), NULL, detail_link_cb, cdetail_d);
+ }
+
+ //Unlink
+ if (1 < eina_list_count(cdetail_d->list_contacts))
+ {
+
+ elm_ctxpopup_item_append(cdetail_d->m_Menu, T_(CT_GET_TEXT_BASE_OP, CTTEXT_UNLINK), NULL, detail_unlink_cb, cdetail_d);
+ }
+
+ if(0 < eina_list_count(cdetail_d->list_number))
+ {
+ //Block
+ elm_ctxpopup_item_append(cdetail_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_EDIT_BLOCK_CONTACT), NULL, block_contact_cb, cdetail_d);
+ }
+
+ //Default Number
+ if (eina_list_count(cdetail_d->list_number) > 1)
+ {
+ elm_ctxpopup_item_append(cdetail_d->m_Menu, T_(CT_GET_TEXT_BASE_OP, CTTEXT_SET_DEFAULT_NUMBER), NULL, __detail_click_default_number, cdetail_d);
+ }
+
+ //Default Email
+ if (eina_list_count(cdetail_d->list_email) > 1)
+ {
+ elm_ctxpopup_item_append(cdetail_d->m_Menu, T_(CT_GET_TEXT_BASE_OP, CTTEXT_SET_DEFAULT_EMAIL), NULL, __detail_click_default_email, cdetail_d);
+ }
+
+ //Send namecard
+ if (CONTACTS_ADDRESS_BOOK_MODE_READONLY != cdetail_d->base_ab_mode)
+ {
+ elm_ctxpopup_item_append(cdetail_d->m_Menu, T_(CT_GET_TEXT_BASE_OP, CTTEXT_SEND_NAME_CARD), NULL, detail_send_name_card_cb, cdetail_d);
+ }
+
+ //Send contact as text
+ elm_ctxpopup_item_append(cdetail_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_SEND_CONTACTC_AS_TEXT), NULL, __detail_click_send_contact_as_text, cdetail_d);
+ }
+
+ int x, y, w, h;
+ evas_object_geometry_get(cdetail_d->navi, &x, &y, &w, &h);
+ evas_object_move(cdetail_d->m_Menu, 0, y + h);
+ evas_object_show(cdetail_d->m_Menu);
+ }
+ else
+ {
+ ERR("phone_cts_get_list(list_activity) Failed(%d)", err);
+ }
+ }
+ else
+ {
+ ERR("phone_cts_get_list(list_activity) Failed(%d)", err);
+ }
+ }
+ else
+ {
+ ERR("detail_more_btn_clicked_cb() failed: %s", "elm_ctxpopup_add() return NULL");
+ }
+ }
+}
+
+void ct_detail_set_navi(ct_detail_data *cdetail_d, int mode)
+{
+ PH_TRACE;
+ Evas_Object *toolbar_button = NULL;
+
+ p_retm_if(NULL == cdetail_d, "cdetail_d is NULL");
+ cdetail_d->view_mode = mode;
+ p_retm_if(NULL == cdetail_d->navi_item, "navi item is NULL");
+
+ phone_navi_item_reset(cdetail_d->navi_item, cdetail_d);
+
+ switch (mode)
+ {
+ case DETAIL_VIEW_MODE_INFO:
+ if (CONTACTS_ADDRESS_BOOK_MODE_READONLY != cdetail_d->base_ab_mode)
+ {
+ cdetail_d->menu_cb = detail_more_btn_clicked_cb;
+ }
+ break;
+ case DETAIL_VIEW_MODE_VCARD:
+ toolbar_button = phone_create_toolbar_btn(cdetail_d->layout,
+ S_(PH_SYS_OPT_ADD_TO_CONTACTS), detail_edit_cb,
+ cdetail_d);
+ elm_object_part_content_set(cdetail_d->layout,
+ "toolbar", toolbar_button);
+ break;
+ case DETAIL_VIEW_MODE_GAL:
+ break;
+ default:
+ break;
+ }
+}
+
+Evas_Object* ct_detail_create_content(ct_detail_data *cdetail_d)
+{
+ PH_TRACE;
+ Elm_Theme *th;
+ Evas_Object *bg;
+ Evas_Object *base;
+ Evas_Object *layout;
+ Evas_Object *genlist;
+ int err = CONTACTS_ERROR_NONE;
+
+ th = elm_theme_new();
+ elm_theme_ref_set(th, NULL);
+ elm_theme_extension_add(th, DETAIL_THEME_EDJ);
+ cdetail_d->th = th;
+
+ if (cdetail_d->person_id)
+ {
+ err = contacts_db_get_current_version(
+ &(cdetail_d->view_create_version));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_current_version() Failed(%d)", err);
+
+ err = contacts_db_get_record(_contacts_person._uri,
+ cdetail_d->person_id, &(cdetail_d->person));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ cdetail_d->list_contacts = ctui_person_get_contact_list(
+ cdetail_d->person_id);
+
+ err = contacts_db_add_changed_cb(_contacts_contact._uri,
+ ct_detail_contact_changed, cdetail_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_add_changed_cb() Failed(%d)", err);
+
+ err = contacts_db_add_changed_cb(_contacts_group._uri,
+ detail_group_changed, cdetail_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_add_changed_cb() Failed(%d)", err);
+ }
+ else if (cdetail_d->contact && NULL == cdetail_d->list_contacts)
+ {
+ cdetail_d->list_contacts = eina_list_append(cdetail_d->list_contacts,
+ cdetail_d->contact);
+ }
+
+ detail_create_itcs();
+ cdetail_d->formatter = phone_init_time_formatter();
+
+ base = elm_layout_add(cdetail_d->navi);
+ p_retvm_if(NULL == base, NULL, "elm_layout_add() return NULL");
+ elm_layout_file_set(base, SELECTION_INFO_EDJ, "selectioninfo_layout");
+ layout = phone_create_base_layout(base, false);
+ elm_object_part_content_set(base, "contents", layout);
+ cdetail_d->layout = base;
+ bg = phone_create_bg(layout);
+ if (NULL == bg)
+ {
+ ERR("phone_create_bg() return NULL");
+ evas_object_del(cdetail_d->layout);
+ return NULL;
+ }
+ elm_object_style_set(bg, "group_list");
+ phone_detail_log_init_time_format();
+ genlist = ctui_detail_genlist_update(cdetail_d);
+ elm_object_part_content_set(layout, "elm.swallow.content", genlist);
+
+ evas_object_data_set(cdetail_d->navi, "cdetail_d", cdetail_d);
+ evas_object_event_callback_add(cdetail_d->layout, EVAS_CALLBACK_DEL,
+ detail_view_delete_cb, cdetail_d);
+ cdetail_d->has_detail = true;
+
+ return cdetail_d->layout;
+}
diff --git a/lib/details/ct-detail-view.h b/lib/details/ct-detail-view.h
new file mode 100755
index 0000000..7ecfa85
--- /dev/null
+++ b/lib/details/ct-detail-view.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CONTACTS_DETAIL_VIEW_H__
+#define __CONTACTS_DETAIL_VIEW_H__
+
+/**
+ * UI-part of module managing contacts-details.
+ */
+
+enum
+{
+ DETAIL_VIEW_MODE_INFO = 0,
+ DETAIL_VIEW_MODE_HISTORY,
+ DETAIL_VIEW_MODE_ACTIVITY,
+ DETAIL_VIEW_MODE_CHECK,
+ DETAIL_VIEW_MODE_VCARD,
+ DETAIL_VIEW_MODE_GAL,
+};
+
+void ct_detail_set_navi(ct_detail_data *cdetail_d, int mode);
+void ct_detail_gl_number_sel(void *data, Evas_Object *obj, void *event_info);
+void ct_detail_gl_email_sel(void *data, Evas_Object *obj, void *event_info);
+char* ct_detail_gl_number_label_get(void *data, Evas_Object *obj,
+ const char *part);
+char* ct_detail_gl_email_label_get(void *data, Evas_Object *obj,
+ const char *part);
+
+Evas_Object* ct_detail_create_content(ct_detail_data *cdetail_d);
+Elm_Genlist_Item_Class* ct_detail_get_baseinfo_item_class(
+ ct_detail_data *cdetail_d);
+void ct_detail_create_itcs();
+
+#endif //__CONTACTS_DETAIL_VIEW_H__
diff --git a/lib/details/ct-image-viewer.cpp b/lib/details/ct-image-viewer.cpp
new file mode 100755
index 0000000..86add71
--- /dev/null
+++ b/lib/details/ct-image-viewer.cpp
@@ -0,0 +1,430 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "phone.h"
+#include "ct-image-viewer.h"
+
+typedef struct
+{
+ char *image_path;
+ int image_id;
+ int page_id;
+} ct_image_info;
+
+typedef struct
+{
+ Evas_Object *navi;
+ Evas_Object *box;
+ Evas_Object *layout;
+ Evas_Object *scroller;
+
+ Evas_Object *btn_set;
+
+ ct_person_changed_cb person_changed_cb;
+ void *person_changed_cb_data;
+
+ int width;
+ int height;
+ contacts_record_h person;
+
+ Eina_List *list_img;
+ Eina_List *list_contact;
+ int list_img_count;
+} ct_image_viewer_data;
+
+static void __ct_image_rotate_cb(void *data, Evas *e, Evas_Object *obj,
+ void *ei);
+
+static void image_viewer_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_image_viewer_data *cimage_viewer_d = (ct_image_viewer_data *) data;
+ void *info;
+ p_retm_if(NULL == cimage_viewer_d, "parameter(cimage_viewer_d) is NULL");
+
+ evas_object_event_callback_del(cimage_viewer_d->layout,
+ EVAS_CALLBACK_RESIZE, __ct_image_rotate_cb);
+
+ EINA_LIST_FREE(cimage_viewer_d->list_img, info)
+ {
+ ct_image_info *cimage_info = (ct_image_info *) info;
+ free(cimage_info->image_path);
+ free(cimage_info);
+ }
+ free(cimage_viewer_d);
+}
+
+static Eina_List* image_viewer_get_list_image_info(Eina_List *list_contact,
+ ct_image_viewer_data *cimage_viewer_d)
+{
+ PH_TRACE;
+ Eina_List *l;
+ Eina_List *list_img_info = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_contact = NULL;
+ contacts_record_h record_defaut_image = NULL;
+ char *img = NULL;
+ ct_image_info *cimage_info = NULL;
+ int default_image_id = 0;
+ int person_id = 0;
+
+ p_retvm_if(NULL == list_contact, NULL, "parameter(list_contact) is NULL");
+
+ if (cimage_viewer_d->person)
+ {
+ err = contacts_record_get_int(cimage_viewer_d->person,
+ _contacts_person.id, &person_id);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_record_get_int() Failed(%d)", err);
+ PH_DBG("person id %d", person_id);
+
+ err = contacts_person_get_default_property(
+ CONTACTS_PERSON_PROPERTY_IMAGE, person_id, &default_image_id);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_person_get_default_property() Failed(%d)", err);
+ PH_DBG("default_image_id %d", default_image_id);
+
+ err = contacts_db_get_record(_contacts_image._uri, default_image_id,
+ &record_defaut_image);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(record_defaut_image,
+ _contacts_image.path, &img);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ PH_DBG("default_image_img %s", img);
+
+ cimage_info = (ct_image_info *) calloc(1, sizeof(ct_image_info));
+ cimage_info->image_id = default_image_id;
+ cimage_info->image_path = strdup(img);
+ list_img_info = eina_list_append(list_img_info, cimage_info);
+
+ err = contacts_record_destroy(record_defaut_image, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ }
+
+ EINA_LIST_FOREACH(list_contact, l, v_record_contact)
+ {
+ contacts_record_h record_contact = (contacts_record_h) v_record_contact;
+ contacts_record_h record_image = NULL;
+ int image_id;
+ if (NULL == record_contact)
+ continue;
+
+ err = contacts_record_get_str_p(record_contact,
+ _contacts_contact.image_thumbnail_path, &img);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (NULL == img || '\0' == *img)
+ continue;
+
+ err = contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.image, 0, &record_image);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ err = contacts_record_get_int(record_image, _contacts_image.id,
+ &image_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if (image_id != default_image_id)
+ {
+ cimage_info = (ct_image_info *) calloc(1, sizeof(ct_image_info));
+ cimage_info->image_id = image_id;
+ cimage_info->image_path = strdup(img);
+ list_img_info = eina_list_append(list_img_info, cimage_info);
+ }
+ }
+
+ return list_img_info;
+}
+
+static void image_viewer_fill_layout(Evas_Object *box, Eina_List *list_img,
+ int width, int height)
+{
+ PH_TRACE;
+ Eina_List *l;
+ Evas_Object *img;
+ void *info;
+ int page = 0;
+
+ p_retm_if(NULL == list_img, "Invalid parameter(list_img is NULL)");
+
+ EINA_LIST_FOREACH(list_img, l, info)
+ {
+ ct_image_info *cimage_info = (ct_image_info *) info;
+ img = elm_image_add(box);
+ p_retm_if(NULL == img, "elm_image_add() return NULL");
+
+ elm_image_file_set(img, cimage_info->image_path, NULL);
+ evas_object_size_hint_min_set(img, width, height);
+ evas_object_size_hint_aspect_set(img, EVAS_ASPECT_CONTROL_HORIZONTAL, 1,
+ 1);
+
+ elm_box_pack_end(box, img);
+
+ cimage_info->page_id = page++;
+
+ evas_object_show(img);
+ }
+}
+
+static void image_viewer_render_post_cb(void *data, Evas *e, void *even_info)
+{
+ PH_TRACE;
+ int width;
+ int height;
+
+ Evas_Object *box;
+ Evas_Object *scroller;
+ ct_image_viewer_data* cimage_viewer_d = (ct_image_viewer_data *) data;
+
+ evas_event_callback_del(e, EVAS_CALLBACK_RENDER_FLUSH_POST,
+ image_viewer_render_post_cb);
+ evas_object_geometry_get(cimage_viewer_d->layout, NULL, NULL, &width,
+ &height);
+
+ cimage_viewer_d->width = width;
+ cimage_viewer_d->height = height;
+
+ scroller = elm_scroller_add(cimage_viewer_d->layout);
+ p_retm_if(NULL == scroller, "elm_scroller_add() return NULL");
+ cimage_viewer_d->scroller = scroller;
+
+ evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_FALSE);
+ elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_OFF);
+
+ elm_object_part_content_set(cimage_viewer_d->layout, "elm.swallow.content",
+ scroller);
+ elm_scroller_page_size_set(scroller, width, height);
+ elm_object_scroll_lock_y_set(scroller, EINA_TRUE);
+ evas_object_show(scroller);
+
+ box = elm_box_add(scroller);
+ p_retm_if(NULL == box, "elm_box_add() return NULL");
+ cimage_viewer_d->box = box;
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_horizontal_set(box, EINA_TRUE);
+ elm_object_content_set(scroller, box);
+ evas_object_show(box);
+
+ image_viewer_fill_layout(cimage_viewer_d->box, cimage_viewer_d->list_img,
+ cimage_viewer_d->width, cimage_viewer_d->height);
+}
+
+static void image_viewer_set_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int h_page = 0;
+ int v_page = 0;
+ int err = CONTACTS_ERROR_NONE;
+ int person_id = 0;
+ Eina_List *l;
+ ct_image_info *cimage_info = NULL;
+ void * info;
+ ct_image_viewer_data *cimage_viewer_d = (ct_image_viewer_data *) data;
+ p_retm_if(NULL == cimage_viewer_d, "parameter(cimage_viewer_d) is NULL");
+
+ elm_scroller_current_page_get(cimage_viewer_d->scroller, &h_page, &v_page);
+
+ EINA_LIST_FOREACH(cimage_viewer_d->list_img, l, info)
+ {
+ cimage_info = (ct_image_info *) info;
+ if (cimage_info)
+ {
+ if (cimage_info->page_id == h_page)
+ break;
+ }
+ else
+ ERR("cimage_info is null");
+ }
+
+ if (cimage_info)
+ {
+ err = contacts_record_get_int(cimage_viewer_d->person,
+ _contacts_person.id, &person_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_person_set_default_property(
+ CONTACTS_PERSON_PROPERTY_IMAGE, person_id,
+ cimage_info->image_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_person_set_default_property() Failed(%d)", err);
+ }
+ else
+ ERR("cimage_info is null");
+
+ elm_naviframe_item_pop(cimage_viewer_d->navi);
+}
+
+static void __ct_image_refresh(ct_image_viewer_data *cimage_viewer_d)
+{
+ PH_TRACE;
+ Evas_Object *box;
+ Evas_Object *scroller;
+ int h_page = 0;
+ int v_page = 0;
+
+ elm_scroller_current_page_get(cimage_viewer_d->scroller, &h_page, &v_page);
+
+ evas_object_del(cimage_viewer_d->scroller);
+
+ evas_object_geometry_get(cimage_viewer_d->layout, NULL, NULL,
+ &cimage_viewer_d->width, &cimage_viewer_d->height);
+
+ scroller = elm_scroller_add(cimage_viewer_d->layout);
+ p_retm_if(NULL == scroller, "elm_scroller_add() return NULL");
+ cimage_viewer_d->scroller = scroller;
+
+ evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_FALSE);
+ elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_OFF);
+
+ elm_object_part_content_set(cimage_viewer_d->layout, "elm.swallow.content",
+ scroller);
+ elm_scroller_page_size_set(scroller, cimage_viewer_d->width,
+ cimage_viewer_d->height);
+ elm_object_scroll_lock_y_set(scroller, EINA_TRUE);
+ evas_object_show(scroller);
+
+ box = elm_box_add(scroller);
+ p_retm_if(NULL == box, "elm_box_add() return NULL");
+ cimage_viewer_d->box = box;
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_horizontal_set(box, EINA_TRUE);
+ elm_object_content_set(scroller, box);
+ evas_object_show(box);
+
+ image_viewer_fill_layout(cimage_viewer_d->box, cimage_viewer_d->list_img,
+ cimage_viewer_d->width, cimage_viewer_d->height);
+
+ elm_scroller_page_bring_in(cimage_viewer_d->scroller, h_page, v_page);
+}
+
+static void __ct_image_rotate_cb(void *data, Evas *e, Evas_Object *obj,
+ void *ei)
+{
+ PH_TRACE;
+ __ct_image_refresh((ct_image_viewer_data *) data);
+}
+
+void ct_image_viewer(Evas_Object *navi, contacts_record_h person,
+ Eina_List *list_contact, ct_person_changed_cb person_changed_cb,
+ void *person_changed_cb_data)
+{
+ PH_TRACE;
+ char navi_title[PH_TEXT_MAX_LEN + 1];
+
+ Evas_Object *bg;
+ Evas_Object *layout;
+ Elm_Object_Item *navi_item;
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record_contact = NULL;
+ ct_image_viewer_data *cimage_viewer_d;
+
+ cimage_viewer_d = (ct_image_viewer_data *) calloc(1, sizeof(ct_image_viewer_data));
+ p_retm_if(NULL == cimage_viewer_d, "calloc() return NULL");
+
+ cimage_viewer_d->navi = navi;
+ cimage_viewer_d->person = person;
+ cimage_viewer_d->person_changed_cb = person_changed_cb;
+ cimage_viewer_d->person_changed_cb_data = person_changed_cb_data;
+
+ layout = phone_create_base_layout(navi, EINA_FALSE);
+ if (NULL == layout)
+ {
+ ERR("phone_create_base_layout() return NULL");
+ free(cimage_viewer_d);
+ return;
+ }
+ evas_object_show(layout);
+ cimage_viewer_d->layout = layout;
+
+ bg = phone_create_bg(layout);
+ elm_bg_color_set(bg, 0, 0, 0);
+ evas_event_callback_add(evas_object_evas_get(layout),
+ EVAS_CALLBACK_RENDER_FLUSH_POST, image_viewer_render_post_cb,
+ cimage_viewer_d);
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL,
+ image_viewer_delete_cb, cimage_viewer_d);
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_RESIZE,
+ __ct_image_rotate_cb, cimage_viewer_d);
+
+ cimage_viewer_d->list_img = image_viewer_get_list_image_info(list_contact,
+ cimage_viewer_d);
+
+ cimage_viewer_d->list_img_count = eina_list_count(
+ cimage_viewer_d->list_img);
+ if (1 == cimage_viewer_d->list_img_count)
+ {
+ char *display_name;
+ if (person)
+ {
+ err = contacts_record_get_str_p(person,
+ _contacts_person.display_name, &display_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (NULL != display_name)
+ snprintf(navi_title, sizeof(navi_title), "%s", display_name);
+ else
+ snprintf(navi_title, sizeof(navi_title), "%s",
+ T_(CT_GET_TEXT_ERR, CTTEXT_NONAME));
+ }
+ else
+ {
+ record_contact = (contacts_record_h) list_contact->data;
+ err = contacts_record_get_str_p(record_contact,
+ _contacts_contact.display_name, &display_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (NULL != display_name)
+ snprintf(navi_title, sizeof(navi_title), "%s", display_name);
+ else
+ snprintf(navi_title, sizeof(navi_title), "%s",
+ T_(CT_GET_TEXT_ERR, CTTEXT_NONAME));
+ }
+ }
+ else
+ snprintf(navi_title, sizeof(navi_title), "%s",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_SET_DEFAULT));
+
+ navi_item = elm_naviframe_item_push(navi, navi_title, NULL, NULL, layout,
+ NULL);
+
+ if (cimage_viewer_d->list_img_count > 1)
+ {
+ cimage_viewer_d->btn_set = phone_create_toolbar_btn(navi,
+ S_(CT_SYS_SK_SET), image_viewer_set_cb, cimage_viewer_d);
+ elm_object_item_part_content_set(navi_item, "toolbar",
+ cimage_viewer_d->btn_set);
+ }
+}
diff --git a/lib/details/ct-image-viewer.h b/lib/details/ct-image-viewer.h
new file mode 100755
index 0000000..fe41a38
--- /dev/null
+++ b/lib/details/ct-image-viewer.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CT_DETAIL_IMAGE_VIEWER_H__
+#define __CT_DETAIL_IMAGE_VIEWER_H__
+
+#include "phone-common.h"
+
+void ct_image_viewer(Evas_Object *navi, contacts_record_h person,
+ Eina_List *list_contact, ct_person_changed_cb person_changed_cb,
+ void *person_changed_cb_data);
+#endif /* __CT_DETAIL_IMAGE_VIEWER_H__ */
+
diff --git a/lib/details/ct-input-change-name.cpp b/lib/details/ct-input-change-name.cpp
new file mode 100755
index 0000000..e575700
--- /dev/null
+++ b/lib/details/ct-input-change-name.cpp
@@ -0,0 +1,202 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "phone.h"
+#include "ct-input-change-name.h"
+
+typedef struct
+{
+ Evas_Object *navi;
+ Elm_Object_Item *name_item;
+ Elm_Object_Item *navi_it;
+ Evas_Object *done_button;
+ ct_change_name_cb change_name_cb;
+ void *cb_data;
+} ct_input_change_name_data;
+
+static void input_change_name_save_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char *name = NULL;
+ ct_input_change_name_data *changename_d = (ct_input_change_name_data *) data;
+ Evas_Object *editfield = NULL;
+ Evas_Object *entry = NULL;
+
+ p_retm_if(NULL == changename_d, "parameter(changename_d) is NULL");
+
+ if (changename_d->change_name_cb)
+ {
+ editfield = elm_object_item_part_content_get(changename_d->name_item,
+ "elm.icon");
+ p_retm_if(NULL == changename_d,
+ "elm_object_part_content_get() return NULL");
+ entry = elm_object_part_content_get(editfield, "elm.swallow.content");
+ p_retm_if(NULL == changename_d,
+ "elm_object_part_content_get() return NULL");
+
+ name = ctui_entry_markup_to_utf8(elm_entry_entry_get(entry));
+ changename_d->change_name_cb(changename_d->cb_data, name);
+ free(name);
+ }
+ elm_naviframe_item_pop(changename_d->navi);
+}
+
+static void input_change_name_entry_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char *text;
+ ct_input_change_name_data *changename_d = (ct_input_change_name_data *) data;
+
+ text = ctui_entry_markup_to_utf8(elm_entry_entry_get(obj));
+ p_retm_if(NULL == text, "ctui_entry_markup_to_utf8() return NULL");
+
+ if (*text)
+ {
+ elm_object_disabled_set(changename_d->done_button, EINA_FALSE);
+ }
+ else
+ {
+ elm_object_disabled_set(changename_d->done_button, EINA_TRUE);
+ }
+
+ free(text);
+}
+
+static Evas_Object* input_change_name_gl_content_get(void *data,
+ Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ static Elm_Entry_Filter_Limit_Size limit_filter_data;
+ Evas_Object *edit_field = NULL;
+ Evas_Object *entry = NULL;
+ ct_input_change_name_data *changename_d = (ct_input_change_name_data *) data;
+
+ edit_field = ctui_create_editfield(obj, NULL, NULL, false);
+
+ entry = elm_object_part_content_get(edit_field, "elm.swallow.content");
+ elm_object_signal_emit(edit_field, "elm,state,guidetext,hide", "elm");
+
+ limit_filter_data.max_char_count = CT_EDITFIELD_MAX_CHAR;
+ elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size,
+ &limit_filter_data);
+ evas_object_smart_callback_add(entry, "changed",
+ input_change_name_entry_changed_cb, changename_d);
+ evas_object_smart_callback_add(entry, "preedit,changed",
+ input_change_name_entry_changed_cb, changename_d);
+
+ evas_object_show(entry);
+ elm_object_focus_set(entry, EINA_TRUE);
+ elm_entry_cursor_end_set(entry);
+
+ return edit_field;
+}
+
+static void __input_change_name_item_gl_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ p_retm_if(NULL == item, "parameter(item) is NULL");
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+}
+
+static Elm_Genlist_Item_Class itc_change_name =
+{
+ 0, 0, 1,
+ "dialogue/1icon",
+ NULL, NULL,
+ {
+ NULL,
+ input_change_name_gl_content_get,
+ NULL, NULL,
+ },
+};
+
+static Evas_Object* input_change_name_create_view(
+ ct_input_change_name_data *changename_d)
+{
+ PH_TRACE;
+ Evas_Object *base, *bg;
+ Evas_Object *genlist;
+
+ base = phone_create_base_layout(changename_d->navi, false);
+ bg = phone_create_bg(base);
+ if (NULL == bg)
+ {
+ ERR("phone_create_bg() return NULL");
+ evas_object_del(base);
+ return NULL;
+ }
+ elm_object_style_set(bg, "group_list");
+
+ genlist = elm_genlist_add(base);
+ changename_d->name_item = elm_genlist_item_append(genlist, &itc_change_name,
+ changename_d, NULL, ELM_GENLIST_ITEM_NONE,
+ __input_change_name_item_gl_sel, NULL);
+ elm_genlist_item_select_mode_set(changename_d->name_item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ elm_object_part_content_set(base, "elm.swallow.content", genlist);
+
+ return base;
+}
+
+static void input_change_name_del(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_change_name_data *changename_d = (ct_input_change_name_data *) data;
+ free(changename_d);
+}
+
+void ct_input_change_name_view(Evas_Object *navi, ct_change_name_cb cb,
+ void *cb_data)
+{
+ PH_TRACE;
+ Evas_Object *layout;
+ ct_input_change_name_data *changename_d;
+
+ changename_d = (ct_input_change_name_data *) calloc(1, sizeof(ct_input_change_name_data));
+ p_retm_if(NULL == changename_d, "calloc() return NULL");
+ changename_d->navi = navi;
+ changename_d->change_name_cb = cb;
+ changename_d->cb_data = cb_data;
+
+ layout = input_change_name_create_view(changename_d);
+ if (NULL == layout)
+ {
+ ERR("input_change_name_create_view() return NULL");
+ free(changename_d);
+ return;
+ }
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL,
+ input_change_name_del, changename_d);
+
+ changename_d->navi_it = elm_naviframe_item_push(navi,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_CUSTOM), NULL, NULL, layout,
+ NULL);
+
+ changename_d->done_button = elm_button_add(navi);
+ elm_object_text_set(changename_d->done_button, S_(CT_SYS_SK_DONE));
+ evas_object_smart_callback_add(changename_d->done_button, "clicked",
+ input_change_name_save_cb, changename_d);
+ elm_object_item_part_content_set(changename_d->navi_it, "toolbar",
+ changename_d->done_button);
+ elm_object_disabled_set(changename_d->done_button, EINA_TRUE);
+}
+
diff --git a/lib/details/ct-input-change-name.h b/lib/details/ct-input-change-name.h
new file mode 100755
index 0000000..7f5c1ed
--- /dev/null
+++ b/lib/details/ct-input-change-name.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CT_INPUT_CHANGE_NAME_H__
+#define __CT_INPUT_CHANGE_NAME_H__
+
+#include "phone-common.h"
+
+void ct_input_change_name_view(Evas_Object *navi, ct_change_name_cb cb,
+ void *cb_data);
+
+#endif /* __CT_INPUT_CHANGE_NAME_H__ */
+
diff --git a/lib/details/ct-input-num-email.cpp b/lib/details/ct-input-num-email.cpp
new file mode 100755
index 0000000..1a28c80
--- /dev/null
+++ b/lib/details/ct-input-num-email.cpp
@@ -0,0 +1,1327 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "phone.h"
+#include "ct-detail.h"
+#include "ct-detail-utils.h"
+#include "ct-input-utils.h"
+#include "ct-input-view.h"
+
+#include "ct-input-num-email.h"
+#include "ct-input-change-name.h"
+
+static Evas_Object* input_fill_layout_number(ct_input_data *cinput_d,
+ contacts_record_h record);
+static Evas_Object* input_fill_layout_email(ct_input_data *cinput_d,
+ contacts_record_h record);
+static Evas_Object* input_new_layout_number(ct_input_data *cinput_d);
+static Evas_Object* input_new_layout_email(ct_input_data *cinput_d);
+
+static void input_email_default_reset(ct_input_data *cinput_d);
+
+static void input_email_del(ct_input_data *cinput_d,
+ ct_input_typed_data *typed_data)
+{
+ PH_TRACE;
+ int idx;
+ Eina_List *list = NULL;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+ p_retm_if(NULL == typed_data, "parameter(typed_data) is NULL");
+
+ err = (contacts_error_e) contacts_record_remove_child_record(cinput_d->contact,
+ _contacts_contact.email, typed_data->record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_remove_child_record() Failed(%d)", err);
+
+ if (typed_data->ly_content == cinput_d->ly_email_first)
+ {
+ idx = ct_input_box_idx_get(cinput_d->box, typed_data->ly_content);
+ list = elm_box_children_get(cinput_d->box);
+ cinput_d->ly_email_first = (Evas_Object *) eina_list_nth(list, idx + 1);
+ eina_list_free(list);
+ }
+
+ if (typed_data->ly_content == cinput_d->ly_email_default)
+ input_email_default_reset(cinput_d);
+
+ err = (contacts_error_e) contacts_record_destroy(typed_data->record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ elm_box_unpack(cinput_d->box, typed_data->ly_content);
+ evas_object_del(typed_data->ly_content);
+}
+
+static void input_email_del_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ ct_input_typed_data *typed_data;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ input_email_del(cinput_d, typed_data);
+
+}
+
+static void input_number_default_reset(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ int cnt = 0;
+ int idx __attribute__ ((unused));
+ Evas_Object *ly_content;
+ Eina_List *list;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ ct_input_typed_data *typed_data;
+
+ idx = ct_input_box_idx_get(cinput_d->box, cinput_d->ly_number_first);
+ list = elm_box_children_get(cinput_d->box);
+ ly_content = cinput_d->ly_number_first;
+
+ cinput_d->ly_number_default = NULL;
+
+ while (ly_content != cinput_d->ly_number_last)
+ {
+ typed_data = (ct_input_typed_data *) evas_object_data_get(ly_content, "typed_data");
+ if (NULL == typed_data)
+ {
+ ly_content = (Evas_Object *) eina_list_nth(list, ++cnt);
+ continue;
+ }
+
+ err = (contacts_error_e) contacts_record_set_bool(typed_data->record,
+ _contacts_number.is_default, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_bool() Failed(%d)", err);
+
+ cinput_d->ly_number_default = typed_data->ly_content;
+ edje_object_signal_emit(_EDJ(typed_data->ly_content),
+ "elm,state,contact,default_number,enabled", "elm");
+ break;
+ }
+ eina_list_free(list);
+}
+
+static void input_email_default_reset(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ int cnt = 0;
+ int idx __attribute__ ((unused));
+ Evas_Object *ly_content;
+ Eina_List *list;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ ct_input_typed_data *typed_data;
+
+ idx = ct_input_box_idx_get(cinput_d->box, cinput_d->ly_email_first);
+ list = elm_box_children_get(cinput_d->box);
+ ly_content = cinput_d->ly_email_first;
+
+ cinput_d->ly_email_default = NULL;
+
+ while (ly_content != cinput_d->ly_email_last)
+ {
+ typed_data = (ct_input_typed_data *) evas_object_data_get(ly_content, "typed_data");
+ if (NULL == typed_data)
+ {
+ ly_content = (Evas_Object *) eina_list_nth(list, ++cnt);
+ continue;
+ }
+
+ err = (contacts_error_e) contacts_record_set_bool(typed_data->record,
+ _contacts_email.is_default, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_bool() Failed(%d)", err);
+
+ cinput_d->ly_email_default = typed_data->ly_content;
+ edje_object_signal_emit(_EDJ(typed_data->ly_content),
+ "elm,state,contact,default_number,enabled", "elm");
+
+ break;
+ }
+ eina_list_free(list);
+}
+
+static void input_number_del(ct_input_data *cinput_d,
+ ct_input_typed_data *typed_data)
+{
+ PH_TRACE;
+ int idx;
+ Eina_List *list = NULL;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+ p_retm_if(NULL == typed_data, "parameter(typed_data) is NULL");
+
+ err = (contacts_error_e) contacts_record_remove_child_record(cinput_d->contact,
+ _contacts_contact.number, typed_data->record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_remove_child_record() Failed(%d)", err);
+
+ cinput_d->cnt_num--;
+
+ if (typed_data->ly_content == cinput_d->ly_number_first)
+ {
+ idx = ct_input_box_idx_get(cinput_d->box, typed_data->ly_content);
+ list = elm_box_children_get(cinput_d->box);
+ cinput_d->ly_number_first = (Evas_Object *) eina_list_nth(list, idx + 1);
+ eina_list_free(list);
+ }
+
+ if (typed_data->ly_content == cinput_d->ly_number_default)
+ input_number_default_reset(cinput_d);
+
+ err = (contacts_error_e) contacts_record_destroy(typed_data->record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ elm_box_unpack(cinput_d->box, typed_data->ly_content);
+ evas_object_del(typed_data->ly_content);
+}
+
+static void input_number_del_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_typed_data *typed_data;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ input_number_del(cinput_d, typed_data);
+
+}
+
+static Evas_Object* input_new_layout_email(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ Evas_Object *layout;
+
+ record = ct_input_new_record_email(cinput_d->contact);
+ p_retvm_if(NULL == record, NULL, "ct_input_new_record_email() return NULL");
+
+ layout = input_fill_layout_email(cinput_d, record);
+ p_retvm_if(NULL == layout, NULL, "input_fill_layout_email() return NULL");
+
+ if (NULL == cinput_d->ly_email_first)
+ cinput_d->ly_email_first = layout;
+ cinput_d->ly_email_last = layout;
+
+ return layout;
+}
+
+static void input_number_type_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int type = (int) data;
+ int num_type;
+ char buf[PH_TEXT_MAX_LEN + 1];
+ ct_input_data *cinput_d;
+ ct_input_typed_data *typed_data;
+ Evas_Object *btn_type;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ cinput_d = (ct_input_data *) evas_object_data_get(obj, "cinput_d");
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ num_type = phone_get_number_type_index(type);
+ if (CONTACTS_NUMBER_TYPE_CUSTOM == num_type)
+ {
+ ct_input_change_name_view(cinput_d->cdetail_d->navi,
+ ct_input_custom_type_rename_cb, typed_data);
+ evas_object_del(obj);
+ return;
+ }
+
+ err = (contacts_error_e) contacts_record_set_int(typed_data->record, _contacts_number.type,
+ num_type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ ctui_get_number_type_str(typed_data->record, num_type, buf, sizeof(buf));
+ btn_type = elm_object_part_content_get(typed_data->ly_content,
+ "elm.icon.type");
+ p_retm_if(NULL == btn_type, "elm_object_part_content_get() return NULL");
+ elm_object_text_set(btn_type, buf);
+ evas_object_del(obj);
+}
+
+static void input_email_type_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int type = (int) data;
+ ct_input_data *cinput_d;
+ ct_input_typed_data *typed_data;
+ Evas_Object *btn_type;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ cinput_d = (ct_input_data *) evas_object_data_get(obj, "cinput_d");
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ if (CONTACTS_EMAIL_TYPE_CUSTOM == type)
+ {
+ ct_input_change_name_view(cinput_d->cdetail_d->navi,
+ ct_input_custom_type_rename_cb, typed_data);
+ evas_object_del(obj);
+ return;
+ }
+
+ err = (contacts_error_e) contacts_record_set_int(typed_data->record, _contacts_email.type,
+ type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ btn_type = elm_object_part_content_get(typed_data->ly_content,
+ "elm.icon.type");
+ p_retm_if(NULL == btn_type, "elm_object_part_content_get() return NULL");
+
+ elm_object_text_set(btn_type,
+ T_(CT_GET_TEXT_EMAIL_TYPE, ctui_get_email_type_index(type)));
+ evas_object_del(obj);
+}
+
+static void input_website_type_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int type = (int) data;
+ ct_input_data *cinput_d;
+ ct_input_typed_data *typed_data;
+ Evas_Object *btn_type;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ cinput_d = (ct_input_data *) evas_object_data_get(obj, "cinput_d");
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ if (CONTACTS_URL_TYPE_CUSTOM == type)
+ {
+ ct_input_change_name_view(cinput_d->cdetail_d->navi,
+ ct_input_custom_type_rename_cb, typed_data);
+ evas_object_del(obj);
+ return;
+ }
+
+ err = (contacts_error_e) contacts_record_set_int(typed_data->record, _contacts_url.type, type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ btn_type = elm_object_part_content_get(typed_data->ly_content,
+ "elm.icon.type");
+ p_retm_if(NULL == btn_type, "elm_object_part_content_get() return NULL");
+
+ elm_object_text_set(btn_type,
+ T_(CT_GET_TEXT_WEBSITE_TYPE, phone_get_website_type_index(type)));
+ evas_object_del(obj);
+}
+
+static void input_messenger_type_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int type = (int) data;
+ ct_input_typed_data *typed_data;
+ Evas_Object *btn_type;
+ ct_input_data *cinput_d;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ cinput_d = (ct_input_data *) evas_object_data_get(obj, "cinput_d");
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ if (CONTACTS_MESSENGER_TYPE_CUSTOM == type)
+ {
+ ct_input_change_name_view(cinput_d->cdetail_d->navi,
+ ct_input_custom_type_rename_cb, typed_data);
+ evas_object_del(obj);
+ return;
+ }
+
+ err = (contacts_error_e) contacts_record_set_int(typed_data->record, _contacts_messenger.type,
+ type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ btn_type = elm_object_part_content_get(typed_data->ly_content,
+ "elm.icon.type");
+ p_retm_if(NULL == btn_type, "elm_object_part_content_get() return NULL");
+
+ elm_object_text_set(btn_type, T_(CT_GET_TEXT_IM_TYPE, type));
+ evas_object_del(obj);
+}
+
+static void input_relationship_type_rename_cb(void *data, char *str)
+{
+ PH_TRACE;
+ Evas_Object *btn_type;
+ ct_input_typed_data *typed_data = (ct_input_typed_data *) data;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ p_retm_if(NULL == typed_data, "parameter(typed_data)");
+
+ err = (contacts_error_e) contacts_record_set_str(typed_data->record,
+ _contacts_relationship.label, str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ btn_type = elm_object_part_content_get(typed_data->ly_content,
+ "elm.icon.type");
+ p_retm_if(NULL == btn_type, "elm_object_part_content_get() return NULL");
+
+ if (str && *str)
+ elm_object_text_set(btn_type, str);
+}
+
+static void input_relationship_type_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int type = (int) data;
+ ct_input_typed_data *typed_data;
+ Evas_Object *btn_type;
+ ct_input_data *cinput_d;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ cinput_d = (ct_input_data *) evas_object_data_get(obj, "cinput_d");
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ if (CONTACTS_RELATIONSHIP_TYPE_CUSTOM == type)
+ ct_input_change_name_view(cinput_d->cdetail_d->navi,
+ input_relationship_type_rename_cb, typed_data);
+
+ err = (contacts_error_e) contacts_record_set_int(typed_data->record,
+ _contacts_relationship.type, type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ btn_type = elm_object_part_content_get(typed_data->ly_content,
+ "elm.icon.type");
+ p_retm_if(NULL == btn_type, "elm_object_part_content_get() return NULL");
+
+ elm_object_text_set(btn_type, T_(CT_GET_TEXT_RELATIONSHIP_TYPE, type));
+ evas_object_del(obj);
+}
+
+static void input_event_type_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int type = (int) data;
+ ct_input_data *cinput_d = NULL;
+ ct_input_typed_data *typed_data = NULL;
+ Evas_Object *btn_type = NULL;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ cinput_d = (ct_input_data *) evas_object_data_get(obj, "cinput_d");
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ if (CONTACTS_URL_TYPE_CUSTOM == type)
+ {
+ ct_input_change_name_view(cinput_d->cdetail_d->navi,
+ ct_input_custom_type_rename_cb, typed_data);
+ evas_object_del(obj);//Deleting popup
+ return;
+ }
+
+ err = (contacts_error_e) contacts_record_set_int(typed_data->record, _contacts_event.type,
+ type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ btn_type = elm_object_part_content_get(typed_data->ly_content,
+ "elm.icon.type");
+ p_retm_if(NULL == btn_type, "elm_object_part_content_get() return NULL");
+
+ elm_object_text_set(btn_type, T_(CT_GET_TEXT_EVENT_TYPE, type));
+ evas_object_del(obj);
+}
+
+void ct_input_data_type_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int i;
+ int type_int;
+ Evas_Object *ly_event;
+ ct_input_typed_data *typed_data = (ct_input_typed_data *) data;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ p_retm_if(NULL == typed_data, "parameter(typed_data) is NULL");
+
+ ct_input_data *cinput_d = (ct_input_data *) evas_object_data_get(obj, "cinput_d");
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ if (cinput_d->popup)
+ ct_detail_popup_hide_cb(cinput_d, NULL, NULL);
+
+ Evas_Object *popup = elm_ctxpopup_add(cinput_d->cdetail_d->win);
+ p_retm_if(NULL == popup, "elm_ctxpopup_add() return NULL");
+ cinput_d->popup = popup;
+
+ int rotate = (int) evas_object_data_get(cinput_d->cdetail_d->navi, "phone_rotate");
+ if (0 == rotate || 180 == rotate)
+ elm_ctxpopup_direction_priority_set(popup, ELM_CTXPOPUP_DIRECTION_DOWN,
+ ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_LEFT,
+ ELM_CTXPOPUP_DIRECTION_RIGHT);
+
+ evas_object_smart_callback_add(popup, "dismissed", ct_detail_popup_hide_cb,
+ cinput_d);
+ evas_object_data_set(popup, "typed_data", typed_data);
+ evas_object_data_set(popup, "cinput_d", cinput_d);
+
+ if (0 == strcmp(typed_data->view_uri, _contacts_number._uri))
+ {
+ err = (contacts_error_e) contacts_record_get_int(typed_data->record, _contacts_number.type,
+ &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ for (i = CTTEXT_TYPE_MOBILE; i <= CTTEXT_TYPE_OTHER; i++)
+ {
+ if (type_int == phone_get_number_type_index(i))
+ continue;
+ elm_ctxpopup_item_append(popup, T_(CT_GET_TEXT_NUM_TYPE, i), NULL,
+ input_number_type_changed_cb, (void *) i);
+ }
+ if (CONTACTS_NUMBER_TYPE_CUSTOM != type_int)
+ {
+ elm_ctxpopup_item_append(popup,
+ T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_CUSTOM), NULL,
+ input_number_type_changed_cb, (void *) CTTEXT_TYPE_CUSTOM);
+ }
+ }
+ else if (0 == strcmp(typed_data->view_uri, _contacts_email._uri))
+ {
+ err = (contacts_error_e) contacts_record_get_int(typed_data->record, _contacts_email.type,
+ &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ int temp_type = CONTACTS_EMAIL_TYPE_HOME;
+ while (temp_type <= CONTACTS_EMAIL_TYPE_WORK)
+ {
+ if (type_int == temp_type)
+ {
+ temp_type = temp_type << 1;
+ continue;
+ }
+ elm_ctxpopup_item_append(popup,
+ T_(CT_GET_TEXT_EMAIL_TYPE, ctui_get_email_type_index(temp_type)),
+ NULL, input_email_type_changed_cb, (void *) temp_type);
+ temp_type = temp_type << 1;
+ }
+ if (CONTACTS_EMAIL_TYPE_OTHER != type_int)
+ {
+ elm_ctxpopup_item_append(popup,
+ T_(CT_GET_TEXT_EMAIL_TYPE, ctui_get_email_type_index(CONTACTS_EMAIL_TYPE_OTHER)),
+ NULL, input_email_type_changed_cb,
+ (void *) CONTACTS_EMAIL_TYPE_OTHER);
+ }
+ if (CONTACTS_EMAIL_TYPE_CUSTOM != type_int)
+ {
+ elm_ctxpopup_item_append(popup,
+ T_(CT_GET_TEXT_EMAIL_TYPE, ctui_get_email_type_index(CONTACTS_EMAIL_TYPE_CUSTOM)),
+ NULL, input_email_type_changed_cb,
+ (void *) CONTACTS_EMAIL_TYPE_CUSTOM);
+ }
+ }
+ else if (0 == strcmp(typed_data->view_uri, _contacts_url._uri))
+ {
+ err = (contacts_error_e) contacts_record_get_int(typed_data->record, _contacts_url.type,
+ &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ for (i = CONTACTS_URL_TYPE_HOME; i <= CONTACTS_URL_TYPE_WORK; i++)
+ {
+ if (type_int == i)
+ continue;
+ elm_ctxpopup_item_append(popup,
+ T_(CT_GET_TEXT_WEBSITE_TYPE, phone_get_website_type_index(i)),
+ NULL, input_website_type_changed_cb, (void *) i);
+ }
+ if (CONTACTS_URL_TYPE_CUSTOM != type_int)
+ {
+ elm_ctxpopup_item_append(popup,
+ T_(CT_GET_TEXT_WEBSITE_TYPE, phone_get_website_type_index(CONTACTS_URL_TYPE_CUSTOM)),
+ NULL, input_website_type_changed_cb,
+ (void *) CONTACTS_URL_TYPE_CUSTOM);
+ }
+ }
+ else if (0 == strcmp(typed_data->view_uri, _contacts_messenger._uri))
+ {
+ err = (contacts_error_e) contacts_record_get_int(typed_data->record,
+ _contacts_messenger.type, &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ for (i = CONTACTS_MESSENGER_TYPE_CUSTOM;
+ i <= CONTACTS_MESSENGER_TYPE_SKYPE; i++)
+ {
+ if (type_int == i)
+ continue;
+ if (CONTACTS_MESSENGER_TYPE_FACEBOOK == i)
+ continue; //Jira issue S1-4557
+ elm_ctxpopup_item_append(popup, T_(CT_GET_TEXT_IM_TYPE, i), NULL,
+ input_messenger_type_changed_cb, (void *) i);
+ }
+ if (type_int != CONTACTS_MESSENGER_TYPE_OTHER)
+ {
+ elm_ctxpopup_item_append(popup,
+ T_(CT_GET_TEXT_IM_TYPE, type_int),
+ NULL, input_messenger_type_changed_cb,
+ (void *) CONTACTS_MESSENGER_TYPE_CUSTOM);
+ }
+ }
+ else if (0 == strcmp(typed_data->view_uri, _contacts_relationship._uri))
+ {
+ err = (contacts_error_e) contacts_record_get_int(typed_data->record,
+ _contacts_relationship.type, &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ for (i = CONTACTS_RELATIONSHIP_TYPE_ASSISTANT;
+ i <= CONTACTS_RELATIONSHIP_TYPE_CUSTOM; i++)
+ {
+ if (type_int == i)
+ continue;
+ elm_ctxpopup_item_append(popup,
+ T_(CT_GET_TEXT_RELATIONSHIP_TYPE, i), NULL,
+ input_relationship_type_changed_cb, (void *) i);
+ }
+ }
+
+ else if (0 == strcmp(typed_data->view_uri, _contacts_event._uri))
+ {
+ err = (contacts_error_e) contacts_record_get_int(typed_data->record, _contacts_event.type,
+ &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ int idx = ct_input_box_idx_get(cinput_d->box, cinput_d->ly_event_first);
+
+ Eina_List *list = elm_box_children_get(cinput_d->box);
+ bool used_birthday = false;
+ do
+ {
+ int type_event;
+ ly_event = (Evas_Object *) eina_list_nth(list, idx++);
+ ct_input_typed_data *typed_data_event = (ct_input_typed_data *) evas_object_data_get(ly_event, "typed_data");
+ err = (contacts_error_e) contacts_record_get_int(typed_data_event->record, _contacts_event.type, &type_event);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_int() Failed(%d)", err);
+
+ if (CONTACTS_EVENT_TYPE_BIRTH == type_event)
+ {
+ used_birthday = true;
+ break;
+ }
+ }
+ while (ly_event != cinput_d->ly_event_last);
+ eina_list_free(list);
+
+ for (i = CONTACTS_EVENT_TYPE_CUSTOM;
+ i <= CONTACTS_EVENT_TYPE_ANNIVERSARY; i++)
+ {
+ if (type_int == i)
+ continue;
+ else if (i == CONTACTS_EVENT_TYPE_BIRTH && used_birthday)
+ continue;
+ elm_ctxpopup_item_append(popup, T_(CT_GET_TEXT_EVENT_TYPE, i), NULL,
+ input_event_type_changed_cb, (void *) i);
+ }
+ }
+ else
+ {
+ ERR("Unknown type");
+ return;
+ }
+
+ phone_move_ctxpopup(popup, obj);
+ evas_object_show(popup);
+}
+
+static Evas_Object* input_new_layout_number(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ Evas_Object *layout;
+
+ record = ct_input_new_record_number(cinput_d->contact);
+ p_retvm_if(NULL == record, NULL, "input_new_number() return NULL");
+
+ layout = input_fill_layout_number(cinput_d, record);
+ p_retvm_if(NULL == layout, NULL, "input_fill_layout_number() return NULL");
+
+ if (NULL == cinput_d->ly_number_first)
+ cinput_d->ly_number_first = layout;
+ cinput_d->ly_number_last = layout;
+
+ return layout;
+}
+
+static inline bool input_num_email_check_dirty_number(char digit)
+{
+ PH_TRACE;
+ switch (digit)
+ {
+ case '0' ... '9':
+ case 'p':
+ case 'w':
+ case 'P':
+ case 'W':
+ case '#':
+ case '*':
+ case '(':
+ case '/':
+ case ')':
+ case 'N':
+ case ',':
+ case '.':
+ case ';':
+ return false;
+ case '+': //only first position
+ default:
+ return true;
+ }
+}
+
+static inline int input_check_utf8(char c)
+{
+ PH_TRACE;
+ if (c < 128)
+ return 1;
+ else if ((c & (char) 0xe0) == (char) 0xc0)
+ return 2;
+ else if ((c & (char) 0xf0) == (char) 0xe0)
+ return 3;
+ else if ((c & (char) 0xf8) == (char) 0xf0)
+ return 4;
+ else if ((c & (char) 0xfc) == (char) 0xf8)
+ return 5;
+ else if ((c & (char) 0xfe) == (char) 0xfc)
+ return 6;
+ else
+ return CONTACTS_ERROR_INTERNAL;
+}
+
+static int input_num_email_clean_number(const char *src, char *dest,
+ int dest_size)
+{
+ PH_TRACE;
+ int s_pos = 0, d_pos = 0, char_type;
+
+ if (NULL == src)
+ ERR("The parameter(src) is NULL");
+ else
+ {
+ if ('+' == src[s_pos])
+ dest[d_pos++] = src[s_pos++];
+
+ while (src[s_pos] != 0)
+ {
+ if (d_pos >= dest_size - 2)
+ break;
+ char_type = input_check_utf8(src[s_pos]);
+ if (char_type <= 1)
+ {
+ if (input_num_email_check_dirty_number(src[s_pos]))
+ {
+ s_pos++;
+ continue;
+ }
+ dest[d_pos++] = src[s_pos++];
+ }
+ else
+ s_pos += char_type;
+ }
+ }
+
+ dest[d_pos] = 0;
+ return d_pos;
+}
+
+static void input_number_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ unsigned int len;
+ char *tmp;
+ char buf[PH_TEXT_MAX_LEN];
+ Evas_Object *btn_minus;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ ct_input_typed_data *typed_data;
+
+ p_retm_if(NULL == cinput_d, "parameter(ct_input_data) is NULL");
+
+ tmp = ctui_entry_markup_to_utf8(elm_entry_entry_get(obj));
+ p_retm_if(NULL == tmp, "ctui_entry_markup_to_utf8() return NULL");
+ len = input_num_email_clean_number(tmp, buf, sizeof(buf));
+
+ if (strlen(tmp) != len)
+ {
+ ctui_entry_entry_set(obj, buf);
+ elm_entry_cursor_end_set(obj);
+ phone_show_popup(cinput_d->cdetail_d->win,
+ T_(CT_GET_TEXT_ERR, CTTEXT_INVALID_NUMBER), 2.0);
+ free(tmp);
+ return;
+ }
+ free(tmp);
+ if (0 == len)
+ return;
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+ cinput_d->cnt_num++;
+
+ if (typed_data->ly_content == cinput_d->ly_number_last)
+ {
+ btn_minus = elm_button_add(typed_data->ly_content);
+ p_retm_if(NULL == btn_minus, "elm_button_add() return NULL");
+
+ elm_object_style_set(btn_minus, "minus");
+ evas_object_data_set(btn_minus, "typed_data", typed_data);
+ elm_object_part_content_set(typed_data->ly_content, "elm.icon.edit",
+ btn_minus);
+ evas_object_smart_callback_add(btn_minus, "clicked",
+ input_number_del_clicked_cb, cinput_d);
+
+ p_retm_if(NULL == input_new_layout_number(cinput_d),
+ "input_new_layout_number() return NULL");
+
+ return;
+ }
+}
+
+static void input_email_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ Evas_Object *btn_minus;
+ ct_input_typed_data *typed_data;
+ const char *tmp;
+
+ tmp = elm_entry_entry_get(obj);
+ p_retm_if(NULL == tmp || '\0' == tmp[0],
+ "elm_entry_entry_get() return NULL");
+
+ evas_object_smart_callback_del(obj, "changed", input_email_changed_cb);
+ p_retm_if(NULL == cinput_d, "parameter(ct_input_data) is NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ if (typed_data->ly_content == cinput_d->ly_email_last)
+ {
+ btn_minus = elm_button_add(typed_data->ly_content);
+ p_retm_if(NULL == btn_minus, "elm_button_add() return NULL");
+
+ elm_object_style_set(btn_minus, "minus");
+ evas_object_data_set(btn_minus, "typed_data", typed_data);
+ elm_object_part_content_set(typed_data->ly_content, "elm.icon.edit",
+ btn_minus);
+ evas_object_smart_callback_add(btn_minus, "clicked",
+ input_email_del_clicked_cb, cinput_d);
+
+ p_retm_if(NULL == input_new_layout_email(cinput_d),
+ "input_new_layout_email() return NULL");
+ }
+}
+
+static void input_number_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ assert(obj);
+ if (NULL != data && NULL != obj)
+ {
+ Evas_Object* entry = obj;
+ ct_input_typed_data* typed_data = static_cast<ct_input_typed_data*>(evas_object_data_get(entry, "typed_data"));
+ if (NULL != typed_data)
+ {
+ ct_input_data* cinput_d = static_cast<ct_input_data*>(data);
+
+ char* input = { 0 };
+ input = ctui_entry_markup_to_utf8(elm_entry_entry_get(entry));
+ if (NULL != input)
+ {
+ int errorCode = CONTACTS_ERROR_NONE;
+ errorCode = (contacts_error_e) contacts_record_set_str(typed_data->record, _contacts_number.number, input);
+ if (CONTACTS_ERROR_NONE == errorCode)
+ {
+ if (NULL == cinput_d->ly_number_default)
+ {
+ cinput_d->ly_number_default = typed_data->ly_content;
+ edje_object_signal_emit(_EDJ(typed_data->ly_content), "elm,state,contact,default_number,enabled", "elm");
+
+ errorCode = (contacts_error_e) contacts_record_set_bool(typed_data->record, _contacts_number.is_default, true);
+ if (CONTACTS_ERROR_NONE != errorCode)
+ {
+ ERR("contacts_record_set_bool() failed(%d)", errorCode);
+ }
+ }
+ }
+ else
+ {
+ ERR("contacts_record_set_str() failed(%d)", errorCode);
+ }
+ free(input);
+ }
+ else if (typed_data->ly_content == cinput_d->ly_number_default)
+ {
+ ERR("%s", "ctui_entry_markup_to_utf8() return NULL");
+ edje_object_signal_emit(_EDJ(typed_data->ly_content), "elm,state,contact,default_number,disabled", "elm");
+ input_number_default_reset(cinput_d);
+ }
+ }
+ else
+ {
+ ERR("%s", "evas_object_data_get() return NULL");
+ }
+ }
+}
+
+static void input_email_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char *input = NULL;
+ Evas_Object *entry = obj;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ ct_input_typed_data *typed_data;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(entry, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ input = ctui_entry_markup_to_utf8(elm_entry_entry_get(entry));
+ p_retm_if(NULL == input, "ctui_entry_markup_to_utf8() return NULL");
+
+ err = (contacts_error_e) contacts_record_set_str(typed_data->record, _contacts_email.email,
+ input);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() failed(%d)", err);
+
+ if (NULL == cinput_d->ly_email_default)
+ {
+ cinput_d->ly_email_default = typed_data->ly_content;
+ edje_object_signal_emit(_EDJ(typed_data->ly_content),
+ "elm,state,contact,default_number,enabled", "elm");
+
+ err = (contacts_error_e) contacts_record_set_bool(typed_data->record,
+ _contacts_email.is_default, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_bool() failed(%d)", err);
+ }
+
+ free(input);
+}
+
+static Evas_Object *input_number_get_edit_rename(ct_input_data *cinput_d,
+ ct_input_typed_data *typed_data)
+{
+ PH_TRACE;
+ char *val_str;
+ Evas_Object *entry;
+ Evas_Object *editfield;
+ Evas_Object *ly_content = typed_data->ly_content;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ editfield = ct_input_add_editfield(ly_content, NULL,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_NUMBER),
+ input_number_unfocused_cb, cinput_d);
+ p_retvm_if(NULL == editfield, NULL, "ct_input_add_editfield() return NULL");
+
+ entry = elm_object_part_content_get(editfield, "elm.swallow.content");
+ typed_data->data = entry;
+
+ evas_object_data_set(entry, "typed_data", typed_data);
+ elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_PHONENUMBER);
+
+ err = (contacts_error_e) contacts_record_get_str_p(typed_data->record, _contacts_number.number,
+ &val_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (val_str && *val_str)
+ ctui_entry_entry_set(entry, val_str);
+ else
+ evas_object_smart_callback_add(entry, "changed",
+ input_number_changed_cb, cinput_d);
+
+ return editfield;
+}
+
+static Evas_Object *input_email_get_edit_rename(ct_input_data *cinput_d,
+ ct_input_typed_data *typed_data)
+{
+ PH_TRACE;
+ char *val_str;
+ Evas_Object *entry;
+ Evas_Object *editfield;
+ Evas_Object *ly_content = typed_data->ly_content;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+
+ editfield = ct_input_add_editfield(ly_content, NULL,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_EMAIL), input_email_unfocused_cb,
+ cinput_d);
+ p_retvm_if(NULL == editfield, NULL, "ct_input_add_editfield() return NULL");
+
+ entry = elm_object_part_content_get(editfield, "elm.swallow.content");
+ typed_data->data = entry;
+
+ evas_object_data_set(entry, "typed_data", typed_data);
+ elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_EMAIL);
+
+ err = (contacts_error_e) contacts_record_get_str_p(typed_data->record, _contacts_email.email,
+ &val_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (val_str && *val_str)
+ ctui_entry_entry_set(entry, val_str);
+ else
+ evas_object_smart_callback_add(entry, "changed", input_email_changed_cb,
+ cinput_d);
+
+ return editfield;
+}
+
+static Evas_Object* input_fill_layout_number(ct_input_data *cinput_d,
+ contacts_record_h record)
+{
+ PH_TRACE;
+ bool is_default;
+ char *val_str;
+ int type_int;
+ char buf[PH_TEXT_MAX_LEN + 1];
+ Evas_Object *ly_content;
+ Evas_Object *ef;
+ Evas_Object *btn_minus;
+ Evas_Object *btn_type = NULL;
+ Evas_Object *ico_check;
+ Evas_Object *box = cinput_d->box;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ ct_input_typed_data *typed_data;
+
+ ly_content = elm_layout_add(box);
+ p_retvm_if(NULL == ly_content, NULL,
+ "ct_input_create_dg_layout() return NULL");
+ elm_layout_file_set(ly_content, CONTACTS_EDJ, "dialogue/1icon.1type.1edit");
+ evas_object_size_hint_align_set(ly_content, EVAS_HINT_FILL, 0.0);
+
+ evas_object_show(ly_content);
+
+ cinput_d->ly_number_base = ly_content;
+
+ err = (contacts_error_e) contacts_record_get_bool(record, _contacts_number.is_default,
+ &is_default);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_bool() Failed(%d)", err);
+
+ if (is_default)
+ {
+ edje_object_signal_emit(_EDJ(ly_content),
+ "elm,state,contact,default_number,enabled", "elm");
+ cinput_d->ly_number_default = ly_content;
+ }
+
+ err = (contacts_error_e) contacts_record_get_int(record, _contacts_number.type, &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ ctui_get_number_type_str(record, type_int, buf, sizeof(buf));
+
+ btn_type = elm_button_add(ly_content);
+ if (NULL == btn_type)
+ {
+ ERR("elm_button_add() return NULL");
+ evas_object_del(ly_content);
+ return NULL;
+ }
+ elm_object_text_set(btn_type, buf);
+ evas_object_data_set(btn_type, "cinput_d", cinput_d);
+ elm_object_part_content_set(ly_content, "elm.icon.type", btn_type);
+
+ ico_check = elm_icon_add(ly_content);
+ if (NULL == ico_check)
+ {
+ ERR("elm_icon_add() return NULL");
+ evas_object_del(ly_content);
+ return NULL;
+ }
+ elm_image_file_set(ico_check, CTUI_IMG_CHECK, NULL);
+ evas_object_size_hint_aspect_set(ico_check, EVAS_ASPECT_CONTROL_VERTICAL, 1,
+ 1);
+ elm_object_part_content_set(ly_content, "elm.icon", ico_check);
+
+ typed_data = (ct_input_typed_data *) calloc(1, sizeof(ct_input_typed_data));
+ p_retvm_if(NULL == typed_data, NULL, "calloc() return NULL");
+ typed_data->record = record;
+ typed_data->ly_content = ly_content;
+ typed_data->view_uri = _contacts_number._uri;
+
+ err = (contacts_error_e) contacts_record_get_str_p(record, _contacts_number.number, &val_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (val_str && *val_str)
+ {
+ btn_minus = elm_button_add(ly_content);
+ if (NULL == btn_minus)
+ {
+ ERR("elm_button_add() return NULL");
+ free(typed_data);
+ return NULL;
+ }
+ elm_object_style_set(btn_minus, "minus");
+ evas_object_data_set(btn_minus, "typed_data", typed_data);
+ elm_object_part_content_set(ly_content, "elm.icon.edit", btn_minus);
+ evas_object_smart_callback_add(btn_minus, "clicked",
+ input_number_del_clicked_cb, cinput_d);
+ }
+
+ ef = input_number_get_edit_rename(cinput_d, typed_data);
+ if (NULL == ef)
+ {
+ ERR("input_number_get_edit_rename() return NULL");
+ free(typed_data);
+ return NULL;
+ }
+ elm_object_part_content_set(ly_content, "elm.icon", ef);
+ ct_input_add_name_field(ef, cinput_d);
+
+ evas_object_smart_callback_add(btn_type, "clicked",
+ ct_input_data_type_clicked_cb, typed_data);
+ evas_object_event_callback_add(ly_content, EVAS_CALLBACK_DEL,
+ ct_input_typed_layout_del_cb, typed_data);
+
+ if (cinput_d->ly_number_last)
+ elm_box_pack_after(box, ly_content, cinput_d->ly_number_last);
+ else
+ elm_box_pack_end(box, ly_content);
+
+ return ly_content;
+}
+
+void ct_input_fill_layout_numbers(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ int index = 0;
+ Evas_Object *ly = NULL;
+ contacts_record_h record = NULL;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(cinput_d->contact,
+ _contacts_contact.number, index++, &record))
+ {
+ ly = input_fill_layout_number(cinput_d, record);
+ p_retm_if(NULL == ly, "input_fill_layout_number() return NULL");
+
+ cinput_d->cnt_num++;
+ if (NULL == cinput_d->ly_number_first)
+ cinput_d->ly_number_first = ly;
+ }
+
+ if (NULL != ly)
+ cinput_d->ly_number_last = ly;
+
+ p_retm_if(NULL == input_new_layout_number(cinput_d),
+ "input_new_layout_number() return NULL");
+}
+
+static Evas_Object* input_fill_layout_email(ct_input_data *cinput_d,
+ contacts_record_h record)
+{
+ PH_TRACE;
+ bool is_default;
+ char *val_str;
+ char *custom_type;
+ int type_int;
+ Evas_Object *ly_content, *btn_type;
+ Evas_Object *ef;
+ Evas_Object *btn_minus;
+ Evas_Object *ico_check;
+ Evas_Object *box = cinput_d->box;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ ct_input_typed_data *typed_data;
+
+ ly_content = elm_layout_add(box);
+ p_retvm_if(NULL == ly_content, NULL, "elm_layout_add() return NULL");
+ elm_layout_file_set(ly_content, CONTACTS_EDJ, "dialogue/1icon.1type.1edit");
+ evas_object_size_hint_align_set(ly_content, EVAS_HINT_FILL, 0.0);
+ evas_object_show(ly_content);
+
+ err = (contacts_error_e) contacts_record_get_bool(record, _contacts_email.is_default,
+ &is_default);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_bool() Failed(%d)", err);
+
+ if (is_default)
+ {
+ edje_object_signal_emit(_EDJ(ly_content),
+ "elm,state,contact,default_number,enabled", "elm");
+ cinput_d->ly_email_default = ly_content;
+ }
+
+ err = (contacts_error_e) contacts_record_get_int(record, _contacts_email.type, &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ btn_type = elm_button_add(ly_content);
+ if (NULL == btn_type)
+ {
+ ERR("elm_button_add() return NULL");
+ evas_object_del(ly_content);
+ return NULL;
+ }
+ custom_type =
+ (char *) T_(CT_GET_TEXT_EMAIL_TYPE, ctui_get_email_type_index(type_int));
+ if (CONTACTS_EMAIL_TYPE_CUSTOM == type_int)
+ {
+ err = (contacts_error_e) contacts_record_get_str_p(record, _contacts_email.label,
+ &custom_type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (NULL == custom_type || '\0' == custom_type[0])
+ custom_type =
+ (char *) T_(CT_GET_TEXT_EMAIL_TYPE, ctui_get_email_type_index(CONTACTS_EMAIL_TYPE_OTHER));
+ }
+
+ elm_object_text_set(btn_type, custom_type);
+ evas_object_data_set(btn_type, "cinput_d", cinput_d);
+ elm_object_part_content_set(ly_content, "elm.icon.type", btn_type);
+
+ ico_check = elm_icon_add(ly_content);
+ if (NULL == ico_check)
+ {
+ ERR("elm_icon_add() return NULL");
+ evas_object_del(ly_content);
+ return NULL;
+ }
+ elm_image_file_set(ico_check, CTUI_IMG_CHECK, NULL);
+ evas_object_size_hint_aspect_set(ico_check, EVAS_ASPECT_CONTROL_VERTICAL, 1,
+ 1);
+ elm_object_part_content_set(ly_content, "elm.icon", ico_check);
+
+ typed_data = (ct_input_typed_data *) calloc(1, sizeof(ct_input_typed_data));
+ p_retvm_if(NULL == typed_data, NULL, "calloc() return NULL");
+ typed_data->record = record;
+ typed_data->ly_content = ly_content;
+ typed_data->view_uri = _contacts_email._uri;
+ evas_object_data_set(ly_content, "typed_data", typed_data);
+
+ err = (contacts_error_e) contacts_record_get_str_p(record, _contacts_email.email, &val_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ if (val_str && *val_str)
+ {
+ btn_minus = elm_button_add(ly_content);
+ if (NULL == btn_minus)
+ {
+ ERR("elm_button_add() return NULL");
+ evas_object_del(ly_content);
+ free(typed_data);
+ return NULL;
+ }
+ elm_object_style_set(btn_minus, "minus");
+ evas_object_data_set(btn_minus, "typed_data", typed_data);
+ elm_object_part_content_set(ly_content, "elm.icon.edit", btn_minus);
+ evas_object_smart_callback_add(btn_minus, "clicked",
+ input_email_del_clicked_cb, cinput_d);
+ }
+
+ ef = input_email_get_edit_rename(cinput_d, typed_data);
+ if (NULL == ef)
+ {
+ ERR("input_email_get_edit_rename() return NULL");
+ evas_object_del(ly_content);
+ free(typed_data);
+ return NULL;
+ }
+ elm_object_part_content_set(ly_content, "elm.icon", ef);
+
+ evas_object_event_callback_add(ly_content, EVAS_CALLBACK_DEL,
+ ct_input_typed_layout_del_cb, typed_data);
+ evas_object_smart_callback_add(btn_type, "clicked",
+ ct_input_data_type_clicked_cb, typed_data);
+
+ if (cinput_d->ly_email_last)
+ elm_box_pack_after(box, ly_content, cinput_d->ly_email_last);
+ else
+ elm_box_pack_end(box, ly_content);
+
+ ct_input_add_name_field(ef, cinput_d);
+
+ return ly_content;
+}
+
+int ct_input_fill_layout_emails(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ int cnt = 0;
+ int index = 0;
+ Evas_Object *ly;
+ contacts_record_h record = NULL;
+
+ ly = NULL;
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(cinput_d->contact,
+ _contacts_contact.email, index++, &record))
+ {
+ ly = input_fill_layout_email(cinput_d, record);
+ p_retvm_if(NULL == ly, cnt, "input_fill_layout_email() return NULL");
+
+ if (NULL == cinput_d->ly_email_first)
+ cinput_d->ly_email_first = ly;
+ cnt++;
+ }
+
+ if (NULL != ly)
+ cinput_d->ly_email_last = ly;
+
+ p_retvm_if(NULL == input_new_layout_email(cinput_d), cnt,
+ "input_new_layout_email() return NULL");
+
+ return cnt;
+}
+
diff --git a/lib/details/ct-input-num-email.h b/lib/details/ct-input-num-email.h
new file mode 100755
index 0000000..e4ca743
--- /dev/null
+++ b/lib/details/ct-input-num-email.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CONTACTS_INPUT_VIEW_EXT_H__
+#define __CONTACTS_INPUT_VIEW_EXT_H__
+
+void ct_input_fill_layout_numbers(ct_input_data *i_data);
+int ct_input_fill_layout_emails(ct_input_data *i_data);
+void ct_input_data_type_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info);
+
+#endif //__CONTACTS_INPUT_VIEW_EXT_H__
diff --git a/lib/details/ct-input-utils.cpp b/lib/details/ct-input-utils.cpp
new file mode 100755
index 0000000..6023741
--- /dev/null
+++ b/lib/details/ct-input-utils.cpp
@@ -0,0 +1,1762 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <regex.h>
+#include <errno.h>
+#include <aul.h>
+#include <ui-gadget-module.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <fcntl.h>
+#include <app_service.h>
+#include <assert.h>
+
+#include "phone.h"
+#include "ct-list.h"
+#include "ct-detail.h"
+#include "ct-detail-utils.h"
+#include "ct-detail-vibration.h"
+#include "ct-input-utils.h"
+#include "ct-input-view.h"
+
+#define CT_INPUT_BASE_ADDRBOOK UGDATAIDR"/base_addrbook"
+
+/**
+ * @brief This function gets count of events related to @a contactRecord
+ * @param contactRecord Record attached to _contacts_contact table
+ * @return Count of events related to contact on success, otherwise 0
+ */
+static unsigned int getCountOfEvents(contacts_record_h contactRecord)
+{
+ unsigned int count(0);
+
+ if(contactRecord)
+ {
+ if(CONTACTS_ERROR_NONE != contacts_record_get_child_record_count(
+ contactRecord, _contacts_contact.event, &count))
+ {
+ count = 0;
+ }
+ }
+
+ return count;
+}
+
+static void input_set_base_ab(char* ab_name)
+{
+ PH_TRACE;
+ int fd;
+ char buf[PH_TEXT_MAX_LEN + 1] = { 0 };
+ p_ret_if(NULL == ab_name);
+ fd = open(CT_INPUT_BASE_ADDRBOOK, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+ p_retm_if(fd < 0, "Open(%s) Failed", CT_INPUT_BASE_ADDRBOOK);
+ snprintf(buf, sizeof(buf), "%s", ab_name);
+ if (-1 == write(fd, buf, strlen(buf)))
+ ERR("write()... Failed(%s)", strerror(errno));
+ close(fd);
+}
+
+int ct_input_get_base_ab(void)
+{
+ PH_TRACE;
+ int fd = 0;
+ int size = 0;
+ char buf[PH_TEXT_MAX_LEN + 1] = { 0, };
+
+ fd = open(CT_INPUT_BASE_ADDRBOOK, O_RDONLY);
+ p_retvm_if(fd < 0, 0, "Open(%s) Failed", CT_INPUT_BASE_ADDRBOOK);
+ size = read(fd, buf, sizeof(buf));
+ close(fd);
+
+ if (size > 0)
+ return ctui_get_addressbook_id(buf);
+ else
+ return 0;
+}
+
+static void input_change_photo(ct_input_data *cinput_d, const char *normal,
+ const char *full)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ record = ctui_get_record_image(cinput_d->contact);
+ p_retm_if(NULL == record, "ctui_get_record_image() Failed(%d)");
+
+ err = contacts_record_set_str(record, _contacts_image.path, normal);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)");
+
+ ct_input_update_image(cinput_d);
+}
+
+static void input_img_crop_result(ui_gadget_h ug, service_h service, void *data)
+{
+ PH_TRACE;
+ char *normal = NULL;
+ char *full = NULL;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ p_retm_if(NULL == ug || NULL == data, "ug or data is NULL");
+
+ if (service)
+ {
+ service_get_extra_data(service, "crop_image_path", &normal);
+ p_retm_if(!normal, "return value is NULL.\n");
+
+ service_get_extra_data(service, "image_path", &full);
+ input_change_photo(cinput_d, normal, full);
+ free(normal);
+ }
+}
+
+static void input_src_ug_destroy(ui_gadget_h ug, void *priv)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) priv;
+ p_retm_if(NULL == cinput_d, "cinput_d is NULL");
+ p_retm_if(NULL == ug, "ug is NULL");
+
+ if (cinput_d->child_ug)
+ {
+ ug_destroy(cinput_d->child_ug);
+ cinput_d->child_ug = NULL;
+ }
+
+ elm_object_tree_focus_allow_set(cinput_d->cdetail_d->navi, EINA_TRUE);
+}
+
+static void input_crop_ug_back_cb(void *data);
+
+static void input_crop_ug_destroy(ui_gadget_h ug, void *priv)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) priv;
+
+ p_retm_if(NULL == cinput_d, "cinput_d is NULL");
+ elm_object_tree_focus_allow_set(cinput_d->cdetail_d->navi, EINA_TRUE);
+ p_retm_if(NULL == ug, "ug is NULL");
+
+ if (cinput_d->crop_ug)
+ {
+ ug_destroy(ug);
+ cinput_d->crop_ug = NULL;
+ }
+
+ if(cinput_d->back_cb == input_crop_ug_back_cb)
+ {
+ cinput_d->back_cb = NULL;
+ }
+}
+
+static void input_crop_ug_back_cb(void *data)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ p_retm_if(NULL == cinput_d, "cinput_d is NULL");
+ input_crop_ug_destroy(cinput_d->crop_ug, data);
+}
+
+static void input_gallery_result(ui_gadget_h ug, service_h service, void *data)
+{
+ PH_TRACE;
+ char *val = NULL;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ p_retm_if(NULL == ug || NULL == data, "ug or data is NULL");
+
+ if (service)
+ {
+ struct ug_cbs cbs = { 0 };
+
+ service_get_extra_data(service, "path", &val);
+ p_retm_if(!val, "return value is NULL.\n");
+
+ cbs.result_cb = input_img_crop_result;
+ cbs.destroy_cb = input_crop_ug_destroy;
+ cbs.priv = cinput_d;
+ cinput_d->crop_ug = (ui_gadget_h) phone_image_crop_ug(cinput_d->cdetail_d->ug, val,
+ &cbs);
+ cinput_d->back_cb = input_crop_ug_back_cb;
+ free(val);
+ }
+}
+
+void ct_input_gallery(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ struct ug_cbs cbs = { 0 };
+ service_h service = NULL;
+
+ p_retm_if(NULL == cinput_d, "cinput_d is NULL");
+ elm_object_tree_focus_allow_set(cinput_d->cdetail_d->navi, EINA_FALSE);
+
+ service_create(&service);
+ service_add_extra_data(service, "launch-type", "select-one");
+ service_add_extra_data(service, "file-type", "image");
+
+ cbs.result_cb = input_gallery_result;
+ cbs.destroy_cb = input_src_ug_destroy;
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.priv = cinput_d;
+
+ cinput_d->child_ug = ug_create(cinput_d->cdetail_d->ug, GALLERY_UG,
+ UG_MODE_FULLVIEW, service, &cbs);
+ p_warn_if(NULL == cinput_d->child_ug, "ug_create() Failed");
+
+ service_destroy(service);
+
+ if (cinput_d->cdetail_d->popup)
+ {
+ evas_object_del(cinput_d->cdetail_d->popup);
+ cinput_d->cdetail_d->popup = NULL;
+ }
+}
+
+static void input_camera_result(service_h service, service_h reply,
+ service_result_e result, void* user_data)
+{
+ PH_TRACE;
+ char *normal = NULL;
+ char *full = NULL;
+ ct_input_data *cinput_d = (ct_input_data *) user_data;
+
+ cinput_d->camera_service_launched = false;
+
+ elm_object_tree_focus_allow_set(cinput_d->cdetail_d->navi, EINA_TRUE);
+
+ service_get_extra_data(reply, "crop_image_path", &normal);
+ p_retm_if(!normal, "return value is NULL.\n");
+
+ service_get_extra_data(reply, "image_path", &full);
+ input_change_photo(cinput_d, normal, full);
+
+ free(normal);
+ free(full);
+}
+
+void ct_input_camera(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ int ret;
+ service_h service;
+
+ p_retm_if(NULL == cinput_d, "paramter(ct_input_data) is NULL");
+ p_retm_if(NULL == cinput_d->cdetail_d, "cinput_d->cdetail_d is NULL.\n");
+ p_ret_if(true == cinput_d->camera_service_launched);
+
+ if (cinput_d->cdetail_d && cinput_d->cdetail_d->popup)
+ ct_detail_popup_hide_cb(cinput_d->cdetail_d, NULL, NULL);
+
+ service = NULL;
+ ret = service_create(&service);
+ p_retm_if(SERVICE_ERROR_NONE != ret, "service_create() Failed(%d)", ret);
+
+ if (NULL == cinput_d->cdetail_d->win)
+ {
+ ERR("cinput_d->cdetail_d->win is NULL.\n");
+ ret = service_destroy(service);
+ p_retm_if(SERVICE_ERROR_NONE != ret, "service_destroy() Failed(%d)",
+ ret);
+ return;
+ }
+
+ ret = service_set_window(service,
+ elm_win_xwindow_get(cinput_d->cdetail_d->win));
+ if (SERVICE_ERROR_NONE != ret)
+ {
+ ERR("service_set_package() Failed(%d)", ret);
+ ret = service_destroy(service);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_destroy() Failed(%d)",
+ ret);
+ return;
+ }
+
+ ret = service_set_operation(service, SERVICE_OPERATION_CREATE_CONTENT);
+ if (SERVICE_ERROR_NONE != ret)
+ {
+ ERR("service_set_operation() Failed(%d)", ret);
+ ret = service_destroy(service);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_destroy() Failed(%d)",
+ ret);
+ return;
+ }
+
+ ret = service_set_mime(service, "image/jpg");
+ if (SERVICE_ERROR_NONE != ret)
+ {
+ ERR("service_set_mime() Failed(%d)", ret);
+ ret = service_destroy(service);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_destroy() Failed(%d)",
+ ret);
+ return;
+ }
+
+ ret = service_add_extra_data(service, "CALLER", "contacts");
+ if (SERVICE_ERROR_NONE != ret)
+ {
+ ERR("service_add_extra_data() Failed(%d)", ret);
+ ret = service_destroy(service);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_destroy() Failed(%d)",
+ ret);
+ return;
+ }
+
+ ret = service_send_launch_request(service, input_camera_result, cinput_d);
+ if (SERVICE_ERROR_NONE != ret)
+ {
+ ERR("service_send_launch_request() Failed(%d)", ret);
+ ret = service_destroy(service);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_destroy() Failed(%d)",
+ ret);
+ return;
+ }
+
+ cinput_d->camera_service_launched = true;
+
+ ret = service_destroy(service);
+ p_retm_if(SERVICE_ERROR_NONE != ret, "service_destroy() Failed(%d)", ret);
+}
+
+static void input_myfile_ringtone_result(ui_gadget_h ug, service_h service,
+ void *data)
+{
+ PH_TRACE;
+ char *val = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ p_retm_if(NULL == ug || NULL == data, "ug or data is NULL");
+
+ if (service)
+ {
+ service_get_extra_data(service, "result", &val);
+ p_retm_if(!val, "return value is NULL.\n");
+
+ err = contacts_record_set_str(cinput_d->contact,
+ _contacts_contact.ringtone_path, val);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ free(val);
+
+ ct_input_update_ringtone(cinput_d->contact, cinput_d->ly_ringtone);
+ }
+}
+
+static inline ui_gadget_h input_myfile_ug(struct ug_cbs cbs, service_h service,
+ ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ ui_gadget_h ug;
+
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.priv = cinput_d;
+
+ ug = ug_create(cinput_d->cdetail_d->ug, MYFILES_UG, UG_MODE_FULLVIEW,
+ service, &cbs);
+ p_warn_if(NULL == ug, "ug_create() Failed");
+
+ return ug;
+}
+
+void ct_input_myfile_ringtone(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ struct ug_cbs cbs = { 0 };
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ const char *ringtone_path = NULL;
+ char *str = NULL;
+ char buf[PH_TEXT_MAX_LEN + 1];
+ service_h service;
+
+ p_retm_if(NULL == cinput_d, "cinput_d is NULL");
+
+ service_create(&service);
+
+ service_add_extra_data(service, "path", "/opt/share/settings/Ringtones");
+ service_add_extra_data(service, "select_type", "SINGLE_FILE");
+ service_add_extra_data(service, "file_type", "SOUND");
+
+ err = contacts_record_get_str_p(cinput_d->contact,
+ _contacts_contact.ringtone_path, &str);
+ if (CONTACTS_ERROR_NONE == err)
+ ringtone_path = ct_detail_get_ringtone_display_name(str);
+
+ if (ringtone_path && *ringtone_path)
+ {
+ snprintf(buf, sizeof(buf), "/opt/share/settings/Ringtones/%s",
+ ringtone_path);
+ service_add_extra_data(service, "marked_mode", buf);
+ }
+
+ cbs.result_cb = input_myfile_ringtone_result;
+ cbs.destroy_cb = input_src_ug_destroy;
+ cinput_d->child_ug = input_myfile_ug(cbs, service, cinput_d);
+
+ if (cinput_d->popup)
+ {
+ evas_object_del(cinput_d->popup);
+ cinput_d->popup = NULL;
+ }
+
+ service_destroy(service);
+}
+
+#define ACCOUNT_RGEX "([a-z0-9!#$%&'*+/=?^_`{|}~-]+[.])*[a-z0-9!#$%&'*+/=?^_`{|}~-]+"
+#define DOMAIN_RGEX "([a-z0-9!#$%&'*+/=?^_`{|}~-]+[.])+[a-z0-9!#$%&'*+/=?^_`{|}~-]+"
+#define EMAIL_RGEX ACCOUNT_RGEX"@"DOMAIN_RGEX
+
+int ct_input_valid_email(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ int len;
+ int index = 0;
+ int result = TRUE;
+ char *email = NULL;
+ regex_t compiled;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.email, index++, &record))
+ {
+ err = contacts_record_get_str_p(record, _contacts_email.email, &email);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_str_p() Failed(%d)", err);
+ continue;
+ }
+ if (email && strlen(email) > 0)
+ {
+ len = strlen(email) + 1;
+ regmatch_t str[len];
+
+ if (regcomp(&compiled, EMAIL_RGEX, REG_ICASE | REG_EXTENDED))
+ result = FALSE;
+ if (regexec(&compiled, email, len, str, 0) == REG_NOMATCH)
+ result = FALSE;
+
+ regfree(&compiled);
+ }
+ if (!result)
+ break;
+ }
+ return result;
+}
+
+static int input_is_name_empty(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ char *name = NULL;
+
+ record = ct_input_get_record_name(record_contact);
+ p_retvm_if(NULL == record, TRUE, "ct_input_get_record_name() return NULL");
+
+ contacts_record_get_str_p(record, _contacts_name.first, &name);
+ if (NULL == name || '\0' == *name)
+ {
+ contacts_record_get_str_p(record, _contacts_name.last, &name);
+ if (NULL == name || '\0' == *name)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static int input_is_num_empty(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ int index = 0;
+ char *number;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.number, index++, &record))
+ {
+ err = contacts_record_get_str_p(record, _contacts_number.number,
+ &number);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_str_p() Failed(%d)", err);
+ continue;
+ }
+ if (number && *number)
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static int input_is_email_empty(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ int index = 0;
+ char *email;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.email, index++, &record))
+ {
+ err = contacts_record_get_str_p(record, _contacts_email.email, &email);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_str_p() Failed(%d)", err);
+ continue;
+ }
+ if (email && *email)
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static void input_btn_popup(ct_detail_data *cdetail_d, const char *desc)
+{
+ PH_TRACE;
+ Evas_Object *popup;
+ Evas_Object *btn;
+
+ popup = elm_popup_add(cdetail_d->navi);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_text_set(popup, desc);
+
+ btn = elm_button_add(popup);
+ elm_object_text_set(btn, S_(PH_SYS_SK_OK));
+ elm_object_part_content_set(popup, "button1", btn);
+ elm_object_style_set(btn, "popup_button/default");
+ evas_object_smart_callback_add(btn, "clicked", ct_detail_popup_hide_cb,cdetail_d);
+
+ cdetail_d->popup = popup;
+ evas_object_show(popup);
+}
+
+static int timeToInt(const struct tm& currTime)
+{
+ return (currTime.tm_year + 1900) * 10000 + (currTime.tm_mon + 1) * 100 + currTime.tm_mday;
+}
+
+/**
+ * @brief This function sets current date to @a numberOfEvent event
+ * @param contactsRecord Record attached to _contacts_contact table
+ * @param numberOfEvents Index number of event to set current date
+ * @return True if success, otherwise false
+ */
+static bool setCurrentDateToEvent(contacts_record_h contactsRecord, unsigned int numberOfEvent)
+{
+ bool isOk(false);
+ if(contactsRecord)
+ {
+ time_t timer = time(NULL);
+ if(timer != -1)
+ {
+ struct tm *currTime = localtime(&timer);
+ if(currTime)
+ {
+ int timeToSet = timeToInt(*currTime);
+ contacts_record_h eventRecord = NULL;
+ if(CONTACTS_ERROR_NONE == contacts_record_get_child_record_at_p(contactsRecord,
+ _contacts_contact.event, numberOfEvent, &eventRecord))
+ {
+ isOk = CONTACTS_ERROR_NONE == contacts_record_set_int(eventRecord,
+ _contacts_event.date, timeToSet);
+ }
+ }
+ }
+ }
+ return isOk;
+}
+
+void ct_input_save_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int ret;
+ int ret_id = 0;
+ int err = CONTACTS_ERROR_NONE;
+ ct_detail_data *cdetail_d;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ p_retm_if(NULL == cinput_d, "cinput_d is NULL");
+
+ if(getCountOfEvents(cinput_d->contact) == 1)
+ {
+ p_retm_if(setCurrentDateToEvent(cinput_d->contact, 0) != true, "setCurrentDateToEvent is failed");
+ }
+
+ cdetail_d = cinput_d->cdetail_d;
+
+ err = contacts_record_set_int(cinput_d->contact,
+ _contacts_contact.address_book_id, cinput_d->base_ab);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ if (TRUE != (ret = ct_input_valid_email(cinput_d->contact)))
+ {
+ input_btn_popup(cdetail_d, T_(CT_GET_TEXT_ERR, CTTEXT_INVALID_EMAIL));
+ cinput_d->popup = cdetail_d->popup;
+ return;
+ }
+
+ if (input_is_name_empty(cinput_d->contact)
+ && input_is_num_empty(cinput_d->contact)
+ && input_is_email_empty(cinput_d->contact))
+ {
+ input_btn_popup(cdetail_d, T_(CT_GET_TEXT_ERR, CTTEXT_SAVE_FAIL));
+ cinput_d->popup = cdetail_d->popup;
+ return;
+ }
+
+
+ if (cinput_d->contact_id)
+ {
+ err = contacts_db_update_record(cinput_d->contact);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ctui_create_contacts_error_popup(cdetail_d->navi, err);
+ if (cdetail_d->service_operation)
+ phone_service_reply_simple(cdetail_d->service_operation,
+ SERVICE_RESULT_FAILED);
+ return;
+ }
+ else
+ {
+ cinput_d->saved = true;
+ if (cdetail_d->service_operation)
+ phone_ug_return_value(cdetail_d->service_operation, 0, 0, 0,
+ cdetail_d->person_id);
+ }
+ }
+ else
+ {
+ err = contacts_db_insert_record(cinput_d->contact, &ret_id);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ctui_create_contacts_error_popup(cdetail_d->navi, err);
+ if (cdetail_d->service_operation)
+ phone_service_reply_simple(cdetail_d->service_operation,
+ SERVICE_RESULT_FAILED);
+ return;
+ }
+ cinput_d->saved = true;
+ input_set_base_ab(cinput_d->base_ab_name);
+ if (NULL == cdetail_d->prev_view_data && cdetail_d->ug)
+ {
+ phone_ug_return_id(cdetail_d->ug, ret_id, 0, 0);
+ if (cdetail_d->service_operation)
+ phone_ug_return_value(cdetail_d->service_operation, 0, 0, 0,
+ ret_id);
+ }
+ }
+
+ /* evas_object_smart_callback_del() func will be deleted */
+ evas_object_smart_callback_del(obj, "clicked", ct_input_save_cb);
+
+ if (cdetail_d->prev_view_data
+ && ((CT_UG_REQUEST_UPDATE_CONTACT <= cdetail_d->ug_request
+ && cdetail_d->ug_request <= CT_UG_REQUEST_SAVE_RINGTONE)
+ || (PH_UG_REQUEST_SET_WITH_NUM <= cdetail_d->ug_request
+ && cdetail_d->ug_request
+ <= PH_UG_REQUEST_SET_WITH_RINGTONE)))
+ {
+ ug_destroy_me(cdetail_d->ug);
+ }
+ else if (cdetail_d->ug && !cdetail_d->has_detail
+ && NULL == cdetail_d->prev_view_data)
+ {
+ ug_destroy_me(cdetail_d->ug);
+ }
+ else if (cdetail_d->vcard_path)
+ elm_exit();
+ else
+ elm_naviframe_item_pop(cdetail_d->navi);
+}
+
+void ct_input_custom_type_rename_cb(void *data, char *str)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *btn_type;
+ ct_input_typed_data *typed_data = (ct_input_typed_data *) data;
+ p_retm_if(NULL == typed_data, "parameter(typed_data)");
+
+ if (0 == strcmp(typed_data->view_uri, _contacts_number._uri))
+ {
+ err = contacts_record_set_int(typed_data->record, _contacts_number.type,
+ CONTACTS_NUMBER_TYPE_CUSTOM);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+ err = contacts_record_set_str(typed_data->record,
+ _contacts_number.label, str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+ }
+ else if (0 == strcmp(typed_data->view_uri, _contacts_email._uri))
+ {
+ err = contacts_record_set_int(typed_data->record, _contacts_email.type,
+ CONTACTS_EMAIL_TYPE_CUSTOM);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+ err = contacts_record_set_str(typed_data->record, _contacts_email.label,
+ str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+ }
+ else if (0 == strcmp(typed_data->view_uri, _contacts_address._uri))
+ {
+ err = contacts_record_set_int(typed_data->record,
+ _contacts_address.type, CONTACTS_ADDRESS_TYPE_CUSTOM);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+ err = contacts_record_set_str(typed_data->record,
+ _contacts_address.label, str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+ }
+ else if (0 == strcmp(typed_data->view_uri, _contacts_url._uri))
+ {
+ err = contacts_record_set_int(typed_data->record, _contacts_url.type,
+ CONTACTS_URL_TYPE_CUSTOM);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+ err = contacts_record_set_str(typed_data->record, _contacts_url.label,
+ str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+ }
+ else if (0 == strcmp(typed_data->view_uri, _contacts_messenger._uri))
+ {
+ err = contacts_record_set_int(typed_data->record,
+ _contacts_messenger.type, CONTACTS_MESSENGER_TYPE_CUSTOM);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+ err = contacts_record_set_str(typed_data->record,
+ _contacts_messenger.label, str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+ }
+ else if (0 == strcmp(typed_data->view_uri, _contacts_relationship._uri))
+ {
+ err = contacts_record_set_int(typed_data->record,
+ _contacts_relationship.type, CONTACTS_RELATIONSHIP_TYPE_CUSTOM);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+ err = contacts_record_set_str(typed_data->record,
+ _contacts_relationship.label, str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+ }
+ else if (0 == strcmp(typed_data->view_uri, _contacts_event._uri))
+ {
+ err = contacts_record_set_int(typed_data->record, _contacts_event.type,
+ CONTACTS_EVENT_TYPE_CUSTOM);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+ err = contacts_record_set_str(typed_data->record, _contacts_event.label,
+ str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+ }
+
+ btn_type = elm_object_part_content_get(typed_data->ly_content,
+ "elm.icon.type");
+ p_retm_if(NULL == btn_type, "elm_object_part_content_get() return NULL");
+
+ if (str && *str)
+ elm_object_text_set(btn_type, str);
+}
+
+void ct_input_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ if (elm_object_focus_get(obj))
+ return;
+ evas_object_smart_callback_call(obj, "unfocused", NULL);
+}
+
+Evas_Object* ct_input_add_editfield(Evas_Object *parent, const char * title, const char* guide_txt,
+ Evas_Smart_Cb unfocused_cb, void *unfocused_cb_data)
+{
+ PH_TRACE;
+
+ Evas_Object * editfield = ctui_create_editfield(parent, title, guide_txt, false);
+ p_retvm_if(NULL == editfield, NULL, "ctui_create_editfield() return NULL");
+
+ Evas_Object * entry = elm_object_part_content_get(editfield, "elm.swallow.content");
+ evas_object_smart_callback_add(entry, "changed", ct_input_entry_changed_cb, editfield);
+
+ if (unfocused_cb)
+ {
+ evas_object_smart_callback_add(entry, "unfocused", unfocused_cb, unfocused_cb_data);
+ }
+
+ return editfield;
+}
+
+int ct_input_next_number_type(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ int i;
+ int used[CTTEXT_TYPE_RADIO + 1] = { 0 };
+ int cts_type;
+ int type;
+ int index = 0;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.number, index++, &record))
+ {
+ err = contacts_record_get_int(record, _contacts_number.type, &cts_type);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ continue;
+ }
+ type = phone_detail_log_get_phonenumber_type(cts_type);
+ used[type] = 1;
+ }
+
+ for (i = CTTEXT_TYPE_MOBILE; i < CTTEXT_TYPE_OTHER; i++)
+ {
+ if (0 == used[i])
+ return phone_get_number_type_index(i);
+ }
+ return CTTEXT_TYPE_OTHER;
+}
+
+int ct_input_next_email_type(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ int i;
+ int used = 0;
+ int cts_type;
+ int index = 0;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.email, index++, &record))
+ {
+ err = contacts_record_get_int(record, _contacts_email.type, &cts_type);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ continue;
+ }
+ used |= cts_type;
+ }
+ for (i = 1; (1 << i) <= CONTACTS_EMAIL_TYPE_WORK; i++)
+ {
+ if (!(used & (1 << i)))
+ return 1 << i;
+ }
+
+ return CONTACTS_EMAIL_TYPE_OTHER;
+}
+
+int ct_input_next_event_type(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ int index = 0;
+ int cts_type;
+ bool used_birthday = false;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.event, index++, &record))
+ {
+ err = contacts_record_get_int(record, _contacts_event.type, &cts_type);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ continue;
+ }
+ if (CONTACTS_EVENT_TYPE_BIRTH == cts_type)
+ {
+ used_birthday = true;
+ break;
+ }
+ }
+
+ if (used_birthday)
+ return CONTACTS_EVENT_TYPE_ANNIVERSARY;
+
+ return CONTACTS_EVENT_TYPE_BIRTH;
+}
+
+int ct_input_next_address_type(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ int i;
+ int used = 0;
+ int cts_type;
+ int index = 0;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.address, index++, &record))
+ {
+ err = contacts_record_get_int(record, _contacts_address.type,
+ &cts_type);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ continue;
+ }
+ used |= cts_type;
+ }
+ for (i = 1; (1 << i) <= CONTACTS_ADDRESS_TYPE_WORK; i++)
+ {
+ if (!(used & (1 << i)))
+ return 1 << i;
+ }
+
+ return CONTACTS_ADDRESS_TYPE_OTHER;
+}
+
+int ct_input_next_web_type(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ int i;
+ int index = 0;
+ int cts_type;
+ int used[CONTACTS_URL_TYPE_WORK + 1] = { 0 };
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.url, index++, &record))
+ {
+ err = contacts_record_get_int(record, _contacts_url.type, &cts_type);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ continue;
+ }
+ used[cts_type] = 1;
+ }
+
+ for (i = CONTACTS_URL_TYPE_HOME; i <= CONTACTS_URL_TYPE_WORK; i++)
+ {
+ if (0 == used[i])
+ return i;
+ }
+ return CONTACTS_URL_TYPE_OTHER;
+}
+
+int ct_input_next_relationship_type(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ int i;
+ int index = 0;
+ int cts_type;
+ int used[CONTACTS_RELATIONSHIP_TYPE_CUSTOM + 1] = { 0 };
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.relationship, index++, &record))
+ {
+ err = contacts_record_get_int(record, _contacts_relationship.type,
+ &cts_type);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ continue;
+ }
+ used[cts_type] = 1;
+ }
+
+ for (i = CONTACTS_RELATIONSHIP_TYPE_ASSISTANT;
+ i <= CONTACTS_RELATIONSHIP_TYPE_CUSTOM; i++)
+ {
+ if (!used[i])
+ return i;
+ }
+ return CONTACTS_RELATIONSHIP_TYPE_CUSTOM;
+}
+
+int ct_input_next_messenger_type(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ int i;
+ int index = 0;
+ int cts_type;
+ bool used[CONTACTS_MESSENGER_TYPE_IRC + 1] = { 0 };
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.messenger, index++, &record))
+ {
+ err = contacts_record_get_int(record, _contacts_messenger.type,
+ &cts_type);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ continue;
+ }
+ used[cts_type] = true;
+ }
+
+ for(i = CONTACTS_MESSENGER_TYPE_SKYPE; i > CONTACTS_MESSENGER_TYPE_OTHER; --i)
+ {
+ if( (CONTACTS_MESSENGER_TYPE_FACEBOOK != i)
+ && (CONTACTS_MESSENGER_TYPE_CUSTOM != i)
+ && !used[i])
+ {
+ return i;
+ }
+ }
+
+ return CONTACTS_MESSENGER_TYPE_OTHER;
+}
+
+Evas_Object* ct_input_create_dg_layout(Evas_Object *parent, const char *theme)
+{
+ PH_TRACE;
+ Evas_Object *layout = elm_layout_add(parent);
+ p_retvm_if(NULL == layout, NULL, "elm_layout_add() return NULL");
+
+ elm_layout_theme_set(layout, "layout", "dialogue", theme);
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, 0.0);
+
+ evas_object_show(layout);
+ return layout;
+}
+
+void ct_input_typed_layout_del_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_typed_data *typed_data = (ct_input_typed_data *) data;
+ p_retm_if(NULL == typed_data, "parameter(typed_data) is NULL");
+ free(typed_data);
+}
+
+void ct_input_update_ringtone(contacts_record_h record_contact,
+ Evas_Object *ly_content)
+{
+ PH_TRACE;
+ const char *display;
+ char *temp;
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_get_str_p(record_contact,
+ _contacts_contact.ringtone_path, &temp);
+ p_retm_if(CONTACTS_ERROR_NONE != err && CONTACTS_ERROR_NO_DATA != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ display = ct_detail_get_ringtone_display_name((const char *) temp);
+
+ elm_object_part_text_set(ly_content, "elm.text.2", display);
+}
+
+void ct_input_update_vibration(contacts_record_h record_contact,
+ Evas_Object *ly_content)
+{
+ PH_TRACE;
+ char *vibration = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_get_str_p(record_contact, _contacts_contact.vibration,
+ &vibration);
+ p_retm_if(CONTACTS_ERROR_NONE != err && CONTACTS_ERROR_NO_DATA != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ elm_object_part_text_set(ly_content, "elm.text.2",
+ T_(CT_GET_TEXT_VIBRATION, ct_detail_vibration_get_msgid(vibration)));
+}
+
+unsigned int ct_input_box_idx_get(Evas_Object *box, Evas_Object *obj)
+{
+ PH_TRACE;
+ int count = 0;
+ Eina_List *list, *cursor;
+ list = elm_box_children_get(box);
+ void *v_data;
+
+ EINA_LIST_FOREACH(list, cursor, v_data)
+ {
+ Evas_Object *data = (Evas_Object *) v_data;
+ if (data == obj)
+ break;
+ count++;
+ }
+ eina_list_free(list);
+ return count;
+}
+
+void ct_input_update_group(void *data)
+{
+ PH_TRACE;
+ Evas_Object *ly_content;
+ char display[PH_TEXT_MAX_LEN + 1];
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+ p_retm_if(NULL == cinput_d->contact || NULL == cinput_d->ly_group,
+ "parameter is NULL");
+
+ ct_detail_get_group_names(cinput_d->contact, display, sizeof(display));
+ ly_content = cinput_d->ly_group;
+ elm_object_part_text_set(ly_content, "elm.text.2", display);
+}
+
+void ct_input_save_button_update(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ if (cinput_d->save_button)
+ elm_object_disabled_set(cinput_d->save_button, cinput_d->save_disable);
+}
+
+static inline Eina_Bool input_is_editfield_empty(Evas_Object *editfield)
+{
+ PH_TRACE;
+ const char *val;
+ Evas_Object *entry;
+
+ p_retvm_if(NULL == editfield, EINA_TRUE, "parameter(editfield) is NULL");
+
+ entry = elm_object_part_content_get(editfield, "elm.swallow.content");
+ p_retvm_if(NULL == entry, EINA_TRUE,
+ "elm_object_part_content_get() return NULL");
+
+ val = elm_entry_entry_get(entry);
+ if (val && *val)
+ return EINA_FALSE;
+
+ return EINA_TRUE;
+}
+
+static bool __input_is_field_filled(Evas_Object *box, Eina_List *list,
+ Evas_Object *first, Evas_Object *last, const char *part)
+{
+ PH_TRACE;
+ int idx = 0;
+ ;
+ Evas_Object *ly_content = NULL;
+ Evas_Object *edit_field = NULL;
+
+ p_retvm_if(NULL == box, false, "parameter(box) is NULL");
+ p_retvm_if(NULL == list, false, "parameter(list) is NULL");
+ p_retvm_if(NULL == first, false, "parameter(first) is NULL");
+ p_retvm_if(NULL == last, false, "parameter(last) is NULL");
+
+ ly_content = first;
+ idx = ct_input_box_idx_get(box, ly_content);
+ while (ly_content)
+ {
+ edit_field = elm_object_part_content_get(ly_content, part);
+ if (EINA_FALSE == input_is_editfield_empty(edit_field))
+ return true;
+
+ if (ly_content == last)
+ break;
+ ly_content = (Evas_Object *) eina_list_nth(list, ++idx);
+ }
+ return false;
+
+}
+
+static void __input_mandatory_field_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ bool exist_valid_field = false;
+ Eina_List *list = NULL;
+ Evas_Object *edit_field = NULL;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ edit_field = elm_object_part_content_get(cinput_d->ly_basic_info,
+ "elm.icon");
+ if (edit_field && EINA_FALSE == input_is_editfield_empty(edit_field))
+ {
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ return;
+ }
+
+ edit_field = elm_object_part_content_get(
+ cinput_d->ly_basic_info_middle_name, "elm.icon");
+ if (edit_field && EINA_FALSE == input_is_editfield_empty(edit_field))
+ {
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ return;
+ }
+
+ edit_field = elm_object_part_content_get(cinput_d->ly_basic_info_last_name,
+ "elm.icon");
+ if (edit_field && EINA_FALSE == input_is_editfield_empty(edit_field))
+ {
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ return;
+ }
+
+ edit_field = elm_object_part_content_get(cinput_d->ly_basic_info_suffix,
+ "elm.icon");
+ if (edit_field && EINA_FALSE == input_is_editfield_empty(edit_field))
+ {
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ return;
+ }
+
+ edit_field = elm_object_part_content_get(cinput_d->ly_basic_info_nickname,
+ "elm.icon");
+ if (edit_field && EINA_FALSE == input_is_editfield_empty(edit_field))
+ {
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ return;
+ }
+
+ edit_field = elm_object_part_content_get(cinput_d->ly_basic_info_job_title,
+ "elm.icon");
+ if (edit_field && EINA_FALSE == input_is_editfield_empty(edit_field))
+ {
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ return;
+ }
+
+ edit_field = elm_object_part_content_get(cinput_d->ly_basic_info_department,
+ "elm.icon");
+ if (EINA_FALSE == input_is_editfield_empty(edit_field))
+ {
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ return;
+ }
+
+ edit_field = elm_object_part_content_get(cinput_d->ly_basic_info_company,
+ "elm.icon");
+ if (edit_field && EINA_FALSE == input_is_editfield_empty(edit_field))
+ {
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ return;
+ }
+
+ list = elm_box_children_get(cinput_d->box);
+ exist_valid_field = __input_is_field_filled(cinput_d->box, list,
+ cinput_d->ly_number_first, cinput_d->ly_number_last, "elm.icon");
+ if (exist_valid_field)
+ {
+ PH_DBG("valid field = number");
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ eina_list_free(list);
+ return;
+ }
+
+ exist_valid_field = __input_is_field_filled(cinput_d->box, list,
+ cinput_d->ly_email_first, cinput_d->ly_email_last, "elm.icon");
+ if (exist_valid_field)
+ {
+ PH_DBG("valid field = email");
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ eina_list_free(list);
+ return;
+ }
+
+ exist_valid_field = __input_is_field_filled(cinput_d->box, list,
+ cinput_d->ly_addr_first, cinput_d->ly_addr_last, "elm.icon");
+ if (exist_valid_field)
+ {
+ PH_DBG("valid field = address");
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ eina_list_free(list);
+ return;
+ }
+
+ exist_valid_field = __input_is_field_filled(cinput_d->box, list,
+ cinput_d->ly_messenger_first, cinput_d->ly_messenger_last,
+ "elm.icon");
+ if (exist_valid_field)
+ {
+ PH_DBG("valid field = messenger");
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ eina_list_free(list);
+ return;
+ }
+
+ exist_valid_field = __input_is_field_filled(cinput_d->box, list,
+ cinput_d->ly_url_first, cinput_d->ly_url_last, "elm.icon");
+ if (exist_valid_field)
+ {
+ PH_DBG("valid field = url");
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ eina_list_free(list);
+ return;
+ }
+
+ exist_valid_field = __input_is_field_filled(cinput_d->box, list,
+ cinput_d->ly_relationship_first, cinput_d->ly_relationship_last,
+ "elm.icon");
+ if (exist_valid_field)
+ {
+ PH_DBG("valid field = url");
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ eina_list_free(list);
+ return;
+ }
+
+ eina_list_free(list);
+
+ edit_field = elm_object_part_content_get(cinput_d->ly_note, "elm.icon");
+ if (edit_field && EINA_FALSE == input_is_editfield_empty(edit_field))
+ {
+ cinput_d->save_disable = EINA_FALSE;
+ ct_input_save_button_update(cinput_d);
+ return;
+ }
+
+ PH_DBG("cinput_d->save_disable=%d", cinput_d->save_disable);
+ if (EINA_TRUE == cinput_d->save_disable)
+ return;
+
+ cinput_d->save_disable = EINA_TRUE;
+ ct_input_save_button_update(cinput_d);
+}
+
+void ct_input_add_name_field(Evas_Object *editfield, ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ Evas_Object *entry;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+ p_retm_if(NULL == editfield, "parameter(editfield) is NULL");
+
+ entry = elm_object_part_content_get(editfield, "elm.swallow.content");
+ p_retm_if(NULL == cinput_d, "elm_object_part_content_get() return NULL");
+
+ evas_object_smart_callback_add(entry, "changed",
+ __input_mandatory_field_changed_cb, cinput_d);
+ evas_object_smart_callback_add(entry, "preedit,changed",
+ __input_mandatory_field_changed_cb, cinput_d);
+}
+
+int ct_input_get_full_address(contacts_record_h record_postal, char *buf,
+ int buf_len)
+{
+ PH_TRACE;
+ char *code = NULL;
+ char *region = NULL;
+ char *locality = NULL;
+ char *street = NULL;
+ char *extended = NULL;
+ char *country = NULL;
+ char *pobox = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_record_get_str_p(record_postal,
+ _contacts_address.postal_code, &code);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ err = contacts_record_get_str_p(record_postal, _contacts_address.extended,
+ &extended);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ err = contacts_record_get_str_p(record_postal, _contacts_address.postbox,
+ &pobox);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ err = contacts_record_get_str_p(record_postal, _contacts_address.street,
+ &street);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ err = contacts_record_get_str_p(record_postal, _contacts_address.locality,
+ &locality);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ err = contacts_record_get_str_p(record_postal, _contacts_address.region,
+ &region);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ err = contacts_record_get_str_p(record_postal, _contacts_address.country,
+ &country);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ snprintf(buf, buf_len, "%s%s%s%s%s%s%s%s%s%s%s%s%s", SAFE_STR(code)
+, STR_BLANK(code, extended), STR_BLANK(extended, pobox),
+ STR_BLANK(pobox, street), STR_BLANK(street, locality), STR_BLANK(locality, region), STR_BLANK(region, country));
+
+ return 0;
+}
+
+static contacts_record_h input_get_record(contacts_record_h record_contact,
+ int property_id)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ p_retvm_if(NULL == record_contact, NULL,
+ "parameter(record_contact) is NULL");
+
+ err = contacts_record_get_child_record_at_p(record_contact, property_id, 0,
+ &record);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ return record;
+}
+
+contacts_record_h ct_input_new_record(contacts_record_h contact,
+ int property_id, const char *view_uri)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = contacts_record_create(view_uri, &record);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(contact, property_id, record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_add_child_record() Failed(%d)", err);
+
+ return record;
+}
+
+contacts_record_h ct_input_new_record_relationship(contacts_record_h contact)
+{
+ PH_TRACE;
+ int type;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ type = ct_input_next_relationship_type(contact);
+ PH_DBG("type=%d", type);
+
+ record = ct_input_new_record(contact, _contacts_contact.relationship,
+ _contacts_relationship._uri);
+ p_retvm_if(NULL == record, NULL, "ct_input_new_record() return NULL");
+
+ err = contacts_record_set_int(record, _contacts_relationship.type, type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ return record;
+}
+
+contacts_record_h ct_input_new_record_address(contacts_record_h contact)
+{
+ PH_TRACE;
+ int type;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ type = ct_input_next_address_type(contact);
+ PH_DBG("type=%d", type);
+
+ record = ct_input_new_record(contact, _contacts_contact.address,
+ _contacts_address._uri);
+ p_retvm_if(NULL == record, NULL, "ct_input_new_record() return NULL");
+
+ err = contacts_record_set_int(record, _contacts_address.type, type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ return record;
+}
+
+contacts_record_h ct_input_new_record_web(contacts_record_h contact)
+{
+ PH_TRACE;
+ int type;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ type = ct_input_next_web_type(contact);
+ PH_DBG("type=%d", type);
+
+ record = ct_input_new_record(contact, _contacts_contact.url,
+ _contacts_url._uri);
+ p_retvm_if(NULL == record, NULL, "ct_input_new_record() return NULL");
+
+ err = contacts_record_set_int(record, _contacts_url.type, type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ return record;
+}
+
+contacts_record_h ct_input_new_record_number(contacts_record_h contact)
+{
+ PH_TRACE;
+ int type;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ type = ct_input_next_number_type(contact);
+ PH_DBG("type=%d", type);
+
+ record = ct_input_new_record(contact, _contacts_contact.number,
+ _contacts_number._uri);
+ p_retvm_if(NULL == record, NULL, "ct_input_new_record() return NULL");
+
+ err = contacts_record_set_int(record, _contacts_number.type, type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ return record;
+}
+
+contacts_record_h ct_input_new_record_email(contacts_record_h contact)
+{
+ PH_TRACE;
+ int type;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ type = ct_input_next_email_type(contact);
+ PH_DBG("type=%d", type);
+
+ record = ct_input_new_record(contact, _contacts_contact.email,
+ _contacts_email._uri);
+ p_retvm_if(NULL == record, NULL, "ct_input_new_record() return NULL");
+
+ err = contacts_record_set_int(record, _contacts_email.type, type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ return record;
+}
+
+contacts_record_h ct_input_new_record_messenger(contacts_record_h contact)
+{
+ PH_TRACE;
+ int type;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ type = ct_input_next_messenger_type(contact);
+ PH_DBG("type=%d", type);
+
+ record = ct_input_new_record(contact, _contacts_contact.messenger,
+ _contacts_messenger._uri);
+ p_retvm_if(NULL == record, NULL, "ct_input_new_record() return NULL");
+
+ err = contacts_record_set_int(record, _contacts_messenger.type, type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ return record;
+}
+
+contacts_record_h ct_input_new_record_event(contacts_record_h contact)
+{
+ PH_TRACE;
+ int type;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ type = ct_input_next_event_type(contact);
+ PH_DBG("type=%d", type);
+
+ record = ct_input_new_record(contact, _contacts_contact.event,
+ _contacts_event._uri);
+ p_retvm_if(NULL == record, NULL, "ct_input_new_record() return NULL");
+
+ err = contacts_record_set_int(record, _contacts_event.type, type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+ return record;
+}
+
+contacts_record_h ct_input_get_record_nickname(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ record = input_get_record(record_contact, _contacts_contact.nickname);
+ if (NULL == record)
+ record = ct_input_new_record(record_contact, _contacts_contact.nickname,
+ _contacts_nickname._uri);
+ return record;
+}
+
+contacts_record_h ct_input_get_record_name(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ record = input_get_record(record_contact, _contacts_contact.name);
+ if (NULL == record)
+ {
+ record = ct_input_new_record(record_contact, _contacts_contact.name,
+ _contacts_name._uri);
+ PH_DBG("record=%p", record);
+ }
+
+ return record;
+}
+
+contacts_record_h ct_input_get_record_company(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ record = input_get_record(record_contact, _contacts_contact.company);
+ if (NULL == record)
+ record = ct_input_new_record(record_contact, _contacts_contact.company,
+ _contacts_company._uri);
+ return record;
+}
+
+contacts_record_h ct_input_get_record_note(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ record = input_get_record(record_contact, _contacts_contact.note);
+ if (NULL == record)
+ record = ct_input_new_record(record_contact, _contacts_contact.note,
+ _contacts_note._uri);
+ return record;
+}
+
+static void input_remove_empty_field(contacts_record_h record_contact,
+ int property_id, int property_id_str)
+{
+ PH_TRACE;
+ int i;
+ unsigned int count;
+ char *str;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ p_retm_if(NULL == record_contact, "parameter(record_contact) is NULL");
+
+ err = contacts_record_get_child_record_count(record_contact, property_id,
+ &count);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_child_record_count() Failed(%d)", err);
+
+ for (i = count - 1; 0 <= i; i--)
+ {
+ err = contacts_record_get_child_record_at_p(record_contact, property_id,
+ i, &record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_child_record_at_p() Failed(%d)", err);
+ continue;
+ }
+
+ err = contacts_record_get_str(record, property_id_str, &str);
+ if (CONTACTS_ERROR_NONE != err || NULL == str || '\0' == *str)
+ {
+ err = contacts_record_remove_child_record(record_contact,
+ property_id, record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_remove_child_record() Failed(%d)", err);
+
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ }
+ free(str);
+ }
+}
+
+static void input_remove_empty_field_address(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ int i;
+ unsigned int count;
+ char str[PH_TEXT_MAX_LEN];
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ p_retm_if(NULL == record_contact, "parameter(record_contact) is NULL");
+
+ err = contacts_record_get_child_record_count(record_contact,
+ _contacts_contact.address, &count);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_child_record_count() Failed(%d)", err);
+
+ for (i = count - 1; 0 <= i; i--)
+ {
+ err = contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.address, i, &record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_child_record_at_p() Failed(%d)", err);
+ continue;
+ }
+ str[0] = '\0';
+ ct_detail_get_full_addr(record, str, sizeof(str));
+
+ if ('\0' == *str)
+ {
+ err = contacts_record_remove_child_record(record_contact,
+ _contacts_contact.address, record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_remove_child_record() Failed(%d)", err);
+
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ }
+ }
+
+}
+
+void ct_input_remove_empty_fields(contacts_record_h record_contact)
+{
+ PH_TRACE;
+ p_retm_if(NULL == record_contact, "parameter(record_contact) is NULL");
+ input_remove_empty_field(record_contact, _contacts_contact.number,
+ _contacts_number.number);
+ input_remove_empty_field(record_contact, _contacts_contact.email,
+ _contacts_email.email);
+ input_remove_empty_field_address(record_contact);
+ input_remove_empty_field(record_contact, _contacts_contact.url,
+ _contacts_url.url);
+ input_remove_empty_field(record_contact, _contacts_contact.messenger,
+ _contacts_messenger.im_id);
+ input_remove_empty_field(record_contact, _contacts_contact.note,
+ _contacts_note.note);
+ input_remove_empty_field(record_contact, _contacts_contact.relationship,
+ _contacts_relationship.name);
+}
+
diff --git a/lib/details/ct-input-utils.h b/lib/details/ct-input-utils.h
new file mode 100755
index 0000000..a9a15e3
--- /dev/null
+++ b/lib/details/ct-input-utils.h
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Helper module for managing contact's details.
+ */
+
+#ifndef __CONTACTS_INPUT_UTILS_H__
+#define __CONTACTS_INPUT_UTILS_H__
+
+int ct_input_get_base_ab(void);
+void ct_input_camera(ct_input_data *cinput_d);
+void ct_input_gallery(ct_input_data *cinput_d);
+void ct_input_myfile_ringtone(void *data, Evas_Object *obj, void *event_info);
+void ct_input_myfile_vibration(void *data, Evas_Object *obj, void *event_info);
+void ct_input_save_cb(void *data, Evas_Object *obj, void *event_info);
+void ct_input_entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
+Evas_Object* ct_input_add_editfield(Evas_Object *parent, const char * title, const char* guide_txt,
+ Evas_Smart_Cb unfocused_cb, void *unfocused_cb_data);
+int ct_input_next_number_type(contacts_record_h record_contact);
+int ct_input_next_email_type(contacts_record_h record_contact);
+int ct_input_next_address_type(contacts_record_h record_contact);
+int ct_input_next_web_type(contacts_record_h record_contact);
+int ct_input_next_messenger_type(contacts_record_h record_contact);
+int ct_input_next_relationship_type(contacts_record_h record_contact);
+int ct_input_next_event_type(contacts_record_h record_contact);
+void ct_input_custom_type_rename_cb(void *data, char *str);
+
+enum
+{
+ INPUT_LAYOUT_NONE,
+ INPUT_LAYOUT_RENAME,
+ INPUT_LAYOUT_EDIT,
+};
+Evas_Object* ct_input_create_dg_layout(Evas_Object *parent, const char *theme);
+void ct_input_typed_layout_del_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info);
+void ct_input_update_ringtone(contacts_record_h record_contact,
+ Evas_Object *layout);
+void ct_input_update_vibration(contacts_record_h record_contact,
+ Evas_Object *layout);
+unsigned int ct_input_box_idx_get(Evas_Object *box, Evas_Object *obj);
+void ct_input_update_group(void *data);
+void ct_input_save_button_update(ct_input_data *cinput_d);
+void ct_input_add_name_field(Evas_Object *editfield, ct_input_data *cinput_d);
+int ct_input_get_full_address(contacts_record_h record_postal, char *buf,
+ int buf_len);
+
+contacts_record_h ct_input_get_record_nickname(
+ contacts_record_h record_contact);
+contacts_record_h ct_input_get_record_name(contacts_record_h record_contact);
+contacts_record_h ct_input_get_record_company(contacts_record_h record_contact);
+contacts_record_h ct_input_get_record_note(contacts_record_h record_contact);
+contacts_record_h ct_input_new_record(contacts_record_h contact,
+ int property_id, const char *view_uri);
+contacts_record_h ct_input_new_record_address(contacts_record_h contact);
+contacts_record_h ct_input_new_record_web(contacts_record_h contact);
+contacts_record_h ct_input_new_record_event(contacts_record_h contact);
+contacts_record_h ct_input_new_record_number(contacts_record_h contact);
+contacts_record_h ct_input_new_record_email(contacts_record_h contact);
+contacts_record_h ct_input_new_record_messenger(contacts_record_h contact);
+contacts_record_h ct_input_new_record_relationship(contacts_record_h contact);
+void ct_input_remove_empty_fields(contacts_record_h record_contact);
+
+#endif //__CONTACTS_INPUT_UTILS_H__
diff --git a/lib/details/ct-input-view.cpp b/lib/details/ct-input-view.cpp
new file mode 100755
index 0000000..fd8efe0
--- /dev/null
+++ b/lib/details/ct-input-view.cpp
@@ -0,0 +1,3836 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <errno.h>
+#include <Ecore_X.h>
+#include <ui-gadget-module.h>
+#include "phone.h"
+#include "ct-detail.h"
+#include "ct-detail-utils.h"
+#include "ct-detail-vibration.h"
+#include "ct-detail-vibration-popup.h"
+#include "ct-detail-view.h"
+#include "ct-list.h"
+#include "ct-input-utils.h"
+#include "ct-input-view.h"
+
+#include "ct-input-num-email.h"
+#include "ct-input-change-name.h"
+#include "ct-group.h"
+#include "ct-group-assign-popup.h"
+
+static void input_fill_layout(ct_input_data *cinput_d);
+static void input_update_address(ct_input_data *cinput_d);
+static Evas_Object* input_new_layout_address(ct_input_data *cinput_d);
+static Evas_Object* input_new_layout_website(ct_input_data *cinput_d);
+static Evas_Object* input_new_layout_messenger(ct_input_data *cinput_d);
+static Evas_Object* input_new_layout_relationship(ct_input_data & cinput_d);
+static Evas_Object* input_new_layout_event(ct_input_data & cinput_d);
+static void __input_basic_info_expand_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info);
+
+enum input_items
+{
+ INPUT_IMAGE = 0,
+ INPUT_BASIC_INFO,
+ INPUT_NUMBER,
+ INPUT_EMAIL,
+ INPUT_ADDRESS,
+ INPUT_NICKNAME,
+ INPUT_MESSENGER,
+ INPUT_URL,
+ INPUT_RELATIONSHIP,
+ INPUT_EVENT,
+ INPUT_NOTE,
+
+ INPUT_GROUP,
+ INPUT_RINGTONE,
+ INPUT_VIBRATION,
+ INPUT_ADDRBOOK,
+
+ INPUT_MORE_INFO,
+ INPUT_ITEMS_MAX
+};
+
+enum input_more_fiels
+{
+ INPUT_MORE_JOB_TITLE,
+ INPUT_MORE_DEPARTMENT,
+ INPUT_MORE_MESSENGER,
+ INPUT_MORE_URL,
+ INPUT_MORE_RELATIONSHIP,
+ INPUT_MORE_EVENT,
+ INPUT_MORE_NOTE,
+ INPUT_MORE_NICKNAME,
+ INPUT_MORE_ORGANIZATION
+};
+
+#define CT_INPUT_ADDRESS_MAX_CHAR 1000
+#define CT_INPUT_MOREINFO_PORTRAIT_Y 1066
+#define CT_INPUT_MOREINFO_LANDSCAPE_Y 506
+
+static Elm_Genlist_Item_Class input_ringtone_itc;
+
+static void input_layout_mouse_up_cb(void *data, Evas *evas, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *layout = (Evas_Object *) data;
+ elm_object_signal_emit(layout, "elm,state,unselected", "elm");
+}
+
+static void input_layout_mouse_move_cb(void *data, Evas *evas, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Event_Mouse_Move *ev = (Evas_Event_Mouse_Move *) event_info;
+ Evas_Object *layout = (Evas_Object *) data;
+ if (ev && ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ elm_object_signal_emit(layout, "elm,state,unselected", "elm");
+}
+
+static void input_layout_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *layout = (Evas_Object *) data;
+ elm_object_signal_emit(layout, "elm,state,selected", "elm");
+}
+
+static void input_layout_selectable_set(Evas_Object *layout)
+{
+ PH_TRACE;
+ p_retm_if(NULL == layout, "parameter(layout) is NULL");
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_UP,
+ input_layout_mouse_up_cb, layout);
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_DOWN,
+ input_layout_mouse_down_cb, layout);
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_MOVE,
+ input_layout_mouse_move_cb, layout);
+}
+
+static void input_contacts_changed(const char *view_uri, void *user_data)
+{
+ PH_TRACE;
+ int contact_id;
+ int current_version;
+ int id_ab, type;
+ bool changed = false;
+
+ contacts_list_h list = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ ct_input_data *cinput_d = (ct_input_data *) user_data;
+ ct_detail_data *cdetail_d = cinput_d->cdetail_d;
+
+ p_retm_if(NULL == cdetail_d, "ct_detail_data is NULL");
+ p_retm_if(NULL == cinput_d->contact, "Contact is NULL");
+
+ if (cinput_d->saved)
+ return;
+
+ err = contacts_record_get_int(cinput_d->contact,
+ _contacts_contact.address_book_id, &id_ab);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_db_get_changes_by_version(
+ _contacts_contact_updated_info._uri, cinput_d->base_ab,
+ cinput_d->view_create_ver, &list, &current_version);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_changes_by_version() Failed(%d)", err);
+
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ err = phone_cts_get_int_from_list(list,
+ _contacts_contact_updated_info.contact_id, &contact_id);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_int_from_list() Failed(%d)", err);
+ err = contacts_list_next(list);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_next() Failed(%d)", err);
+ continue;
+ }
+
+ if (contact_id == cinput_d->contact_id)
+ {
+ changed = true;
+ err = phone_cts_get_int_from_list(list,
+ _contacts_contact_updated_info.type, &type);
+ break;
+ }
+ err = contacts_list_next(list);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_next() Failed(%d)",
+ err);
+ }
+ err = contacts_list_destroy(list, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_destrot() Failed(%d)",
+ err);
+
+ p_ret_if(!changed);
+
+ if (CONTACTS_CHANGE_UPDATED == type
+ || (CONTACTS_CHANGE_DELETED == type && !cdetail_d->has_detail))
+ elm_naviframe_item_pop(cdetail_d->navi);
+}
+
+static void input_view_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ ct_detail_data *cdetail_d = cinput_d->cdetail_d;
+
+ p_retm_if(NULL == cinput_d, "cinput_d is NULL");
+ p_retm_if(NULL == cdetail_d, "cdetail_d is NULL");
+
+ if (cinput_d->contact_id)
+ {
+ err = contacts_db_remove_changed_cb(_contacts_contact._uri,
+ input_contacts_changed, cinput_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_remove_changed_cb() Failed(%d)", err);
+ }
+ if (cinput_d->win_prop_change)
+ ecore_event_handler_del(cinput_d->win_prop_change);
+ err = contacts_record_destroy(cinput_d->contact, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ evas_object_data_del(cdetail_d->navi, KEY_INPUT_DATA);
+
+ if (cdetail_d->has_detail)
+ {
+ cdetail_d->has_input = false;
+ }
+ else
+ {
+ if (cdetail_d->child_ug)
+ ug_destroy(cdetail_d->child_ug);
+
+ if (cdetail_d->popup)
+ evas_object_del(cdetail_d->popup);
+
+ free(cdetail_d->base_ab_name);
+ free(cdetail_d);
+ }
+
+ if (cinput_d->crop_ug)
+ ug_destroy(cinput_d->crop_ug);
+
+ if (cinput_d->child_ug)
+ ug_destroy(cinput_d->child_ug);
+
+ free(cinput_d->name_old);
+ free(cinput_d->base_ab_name);
+ free(cinput_d);
+}
+
+static void input_nick_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char *input;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ record = ct_input_get_record_nickname(cinput_d->contact);
+ p_retm_if(NULL == record, "ct_input_get_record_nickname() return NULL");
+
+ input = ctui_entry_markup_to_utf8(elm_entry_entry_get(obj));
+
+ err = contacts_record_set_str(record, _contacts_nickname.name, input);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ free(input);
+}
+
+static void input_nickname_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+
+ assert(obj && data);
+ if(obj && data)
+ {
+ ct_input_data * cinput_d = (ct_input_data *) evas_object_data_get(obj, KEY_INPUT_DATA);
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ Evas_Object * entry = obj;
+ char * input = ctui_entry_markup_to_utf8(elm_entry_entry_get(entry));
+ p_retm_if(NULL == input, "ctui_entry_markup_to_utf8() return NULL");
+
+ contacts_record_h record = static_cast<contacts_record_h>(data);
+ int errCode = contacts_record_set_str(record, _contacts_nickname.name, input);
+ p_warn_if(CONTACTS_ERROR_NONE != errCode,
+ "contacts_record_set_str() Failed(%d)", errCode);
+
+ if(input)
+ {
+ free(input);
+ }
+ }
+
+
+}
+
+
+static void input_website_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char *input;
+ ct_input_data *cinput_d;
+ Evas_Object *entry = obj;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = (contacts_record_h) data;
+
+ p_retm_if(NULL == record, "parameter(record) is NULL");
+
+ cinput_d = (ct_input_data *) evas_object_data_get(obj, KEY_INPUT_DATA);
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ input = ctui_entry_markup_to_utf8(elm_entry_entry_get(entry));
+ p_retm_if(NULL == input, "ctui_entry_markup_to_utf8() return NULL");
+
+ err = contacts_record_set_str(record, _contacts_url.url, input);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ free(input);
+}
+
+static void input_note_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char *input;
+ ct_input_data *cinput_d;
+ Evas_Object *entry = obj;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = (contacts_record_h) data;
+
+ p_retm_if(NULL == record, "parameter(record) is NULL");
+
+ cinput_d = (ct_input_data *) evas_object_data_get(obj, KEY_INPUT_DATA);
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ input = ctui_entry_markup_to_utf8(elm_entry_entry_get(entry));
+ p_retm_if(NULL == input, "ctui_entry_markup_to_utf8() return NULL");
+
+ err = contacts_record_set_str(record, _contacts_note.note, input);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ free(input);
+}
+
+static inline char* input_get_contact_image_path(contacts_record_h record)
+{
+ PH_TRACE;
+ contacts_record_h record_image;
+ char *img_path = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ record_image = ctui_get_record_image(record);
+ err = contacts_record_get_str_p(record_image, _contacts_image.path,
+ &img_path);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_record_get_str_p() failed(%d)", err);
+
+ return img_path;
+}
+
+static void input_set_name_value(Evas_Object *entry, int field,
+ ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ char *name;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ record = ct_input_get_record_name(cinput_d->contact);
+ p_retm_if(NULL == record, "ct_input_get_record_name() return NULL");
+
+ name = ctui_entry_markup_to_utf8(elm_entry_entry_get(entry));
+ p_retm_if(NULL == name, "ctui_entry_markup_to_utf8() return NULL");
+
+ err = contacts_record_set_str(record, field, name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ free(name);
+}
+
+static void __input_firstname_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ input_set_name_value(obj, _contacts_name.first, (ct_input_data *) data);
+}
+
+static void input_lastname_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ input_set_name_value(obj, _contacts_name.last, (ct_input_data *) data);
+}
+
+static void input_middle_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ input_set_name_value(obj, _contacts_name.addition, (ct_input_data *) data);
+}
+
+static void input_suffix_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ input_set_name_value(obj, _contacts_name.suffix, (ct_input_data *) data);
+}
+
+static void input_set_company_value(Evas_Object *entry, int field,
+ ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ char *str;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ record = ct_input_get_record_company(cinput_d->contact);
+ p_retm_if(NULL == record, "ct_input_get_record_company() return NULL");
+
+ str = ctui_entry_markup_to_utf8(elm_entry_entry_get(entry));
+ p_retm_if(NULL == str, "ctui_entry_markup_to_utf8() return NULL");
+
+ err = contacts_record_set_str(record, field, str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() failed(%d)", err);
+
+ free(str);
+}
+
+static void input_job_title_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ input_set_company_value(obj, _contacts_company.job_title, (ct_input_data *) data);
+}
+
+static void input_department_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ input_set_company_value(obj, _contacts_company.department, (ct_input_data *) data);
+}
+
+static void input_company_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ input_set_company_value(obj, _contacts_company.name, (ct_input_data *) data);
+}
+
+static inline Evas_Object* __input_editfield_entry_set(Evas_Object *ef,
+ const char *text)
+{
+ PH_TRACE;
+ Evas_Object *en = elm_object_part_content_get(ef, "elm.swallow.content");
+ p_retvm_if(NULL == en, NULL, "elm_object_part_content_get() return NULL");
+
+ if (text && *text)
+ {
+ char *text_markup = elm_entry_utf8_to_markup(text);
+ elm_entry_entry_set(en, text_markup);
+ free(text_markup);
+ }
+ return en;
+}
+
+static Evas_Object* __input_fill_layout_basic_info_expand(
+ ct_input_data *cinput_d, const char* guide_text,
+ Evas_Smart_Cb unfocused_cb, const char* view_uri, int property_id)
+{
+ PH_TRACE;
+ char *display = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ Evas_Object *ly_content = NULL;
+ Evas_Object *editfield = NULL;
+ Evas_Object *box = cinput_d->box;
+
+ ly_content = ct_input_create_dg_layout(box, "1icon");
+ p_retvm_if(NULL == ly_content, NULL,
+ "ct_input_create_dg_layout() return NULL");
+ evas_object_size_hint_align_set(ly_content, EVAS_HINT_FILL, 0.0);
+ elm_object_signal_emit(ly_content, "elm,state,edit,enabled", "");
+
+ editfield = ct_input_add_editfield(ly_content, NULL, guide_text, unfocused_cb,
+ cinput_d);
+ ct_input_add_name_field(editfield, cinput_d);
+ p_retvm_if(NULL == editfield, NULL, "ct_input_add_editfield() return NULL");
+ elm_object_part_content_set(ly_content, "elm.icon", editfield);
+
+ if (0 == strcmp(_contacts_nickname._uri, view_uri))
+ record = ct_input_get_record_nickname(cinput_d->contact);
+ else if (0 == strcmp(_contacts_name._uri, view_uri))
+ record = ct_input_get_record_name(cinput_d->contact);
+ else if (0 == strcmp(_contacts_company._uri, view_uri))
+ record = ct_input_get_record_company(cinput_d->contact);
+
+ p_retvm_if(NULL == record, NULL, "record is NULL");
+
+ err = contacts_record_get_str_p(record, property_id, &display);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ __input_editfield_entry_set(editfield, display);
+
+ return ly_content;
+}
+
+static void input_event_del(ct_input_data *cinput_d,
+ ct_input_typed_data *typed_data)
+{
+ PH_TRACE;
+ int idx;
+ int err = CONTACTS_ERROR_NONE;
+ Eina_List *list = NULL;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+ p_retm_if(NULL == typed_data, "parameter(typed_data) is NULL");
+
+ err = contacts_record_remove_child_record(cinput_d->contact,
+ _contacts_contact.event, typed_data->record);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_remove_child_record() failed(%d)", err);
+
+ if (typed_data->ly_content == cinput_d->ly_event_first)
+ {
+ idx = ct_input_box_idx_get(cinput_d->box, typed_data->ly_content);
+ list = elm_box_children_get(cinput_d->box);
+ cinput_d->ly_event_first = (Evas_Object *) eina_list_nth(list, idx + 1);
+ eina_list_free(list);
+ }
+
+ err = contacts_record_destroy(typed_data->record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ elm_box_unpack(cinput_d->box, typed_data->ly_content);
+ evas_object_del(typed_data->ly_content);
+}
+
+static void input_event_del_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ ct_input_typed_data *typed_data;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ input_event_del(cinput_d, typed_data);
+}
+
+static void input_event_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int year;
+ int month;
+ int day;
+ struct tm currtime;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ Evas_Object *btn_minus;
+ int err = CONTACTS_ERROR_NONE;
+ ct_input_typed_data *typed_data;
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ elm_datetime_value_get(obj, &currtime);
+ year = currtime.tm_year + 1900;
+ month = currtime.tm_mon + 1;
+ day = currtime.tm_mday;
+
+ err = contacts_record_set_int(typed_data->record, _contacts_event.date,
+ year * 10000 + month * 100 + day);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ if (typed_data->ly_content == cinput_d->ly_event_last)
+ {
+ btn_minus = elm_button_add(typed_data->ly_content);
+ p_retm_if(NULL == btn_minus, "elm_button_add() return NULL");
+
+ elm_object_style_set(btn_minus, "minus");
+ evas_object_data_set(btn_minus, "typed_data", typed_data);
+ elm_object_part_content_set(typed_data->ly_content, "elm.icon.edit",
+ btn_minus);
+ evas_object_smart_callback_add(btn_minus, "clicked",
+ input_event_del_clicked_cb, cinput_d);
+
+ p_retm_if(NULL == input_new_layout_event(*cinput_d),
+ "input_new_layout_event() return NULL");
+ }
+}
+
+static void input_ringtone_cancel_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ if (cinput_d->popup)
+ {
+ evas_object_del(cinput_d->popup);
+ cinput_d->popup = NULL;
+ }
+
+ err = contacts_record_set_str(cinput_d->contact,
+ _contacts_contact.ringtone_path, NULL);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ ct_input_update_ringtone(cinput_d->contact, cinput_d->ly_ringtone);
+}
+
+static void input_addr_editfield_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int ret;
+ char *display;
+ Evas_Object *entry = obj;
+ contacts_record_h record = (contacts_record_h) data;
+
+ p_retm_if(NULL == record, "parameter(record) is NULL");
+
+ display = ctui_entry_markup_to_utf8(elm_entry_entry_get(entry));
+ p_retm_if(NULL == display, "ctui_entry_markup_to_utf8() return NULL");
+
+ ret = contacts_record_set_str(record, _contacts_address.street, display);
+ p_warn_if(CONTACTS_ERROR_NONE != ret,
+ "contacts_record_set_str() Failed(%d)", ret);
+
+ free(display);
+}
+
+static void input_addr_type_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int type = (int) data;
+ Evas_Object *btn_type;
+ int err = CONTACTS_ERROR_NONE;
+ ct_input_data *cinput_d;
+ ct_input_typed_data *typed_data;
+
+ cinput_d = (ct_input_data *) evas_object_data_get(obj, "cinput_d");
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ if (CONTACTS_ADDRESS_TYPE_CUSTOM == type)
+ {
+ ct_input_change_name_view(cinput_d->cdetail_d->navi,
+ ct_input_custom_type_rename_cb, typed_data);
+ evas_object_del(obj);
+ return;
+ }
+
+ err = contacts_record_set_int(typed_data->record, _contacts_address.type,
+ type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ btn_type = elm_object_part_content_get(typed_data->ly_content,
+ "elm.icon.type");
+ p_retm_if(NULL == btn_type, "elm_object_part_content_get() return NULL");
+
+ elm_object_text_set(btn_type,
+ T_(CT_GET_TEXT_POSTAL_TYPE, phone_get_address_type_index(type)));
+ evas_object_del(obj);
+}
+
+static void input_address_type_mouse_up_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int type;
+ int rotate;
+ Evas_Object *popup;
+ int err = CONTACTS_ERROR_NONE;
+ ct_input_data *cinput_d;
+ ct_input_typed_data *typed_data = (ct_input_typed_data *) data;
+
+ p_retm_if(NULL == typed_data, "parameter(typed_data) is NULL");
+
+ cinput_d = (ct_input_data *) evas_object_data_get(obj, KEY_INPUT_DATA);
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ popup = elm_ctxpopup_add(cinput_d->cdetail_d->win);
+ p_retm_if(NULL == popup, "elm_ctxpopup_add() return NULL");
+ cinput_d->popup = popup;
+
+ rotate = (int) evas_object_data_get(cinput_d->cdetail_d->navi,
+ "phone_rotate");
+ if (0 == rotate || 180 == rotate)
+ elm_ctxpopup_direction_priority_set(popup, ELM_CTXPOPUP_DIRECTION_DOWN,
+ ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_LEFT,
+ ELM_CTXPOPUP_DIRECTION_RIGHT);
+
+ evas_object_smart_callback_add(popup, "dismissed", ct_detail_popup_hide_cb,
+ cinput_d);
+
+ err = contacts_record_get_int(typed_data->record, _contacts_address.type,
+ &type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ evas_object_data_set(popup, "typed_data", typed_data);
+ evas_object_data_set(popup, "cinput_d", cinput_d);
+
+ int temp_type = CONTACTS_ADDRESS_TYPE_HOME;
+ while (temp_type <= CONTACTS_ADDRESS_TYPE_WORK)
+ {
+ if (type == temp_type)
+ {
+ temp_type = temp_type << 1;
+ continue;
+ }
+ elm_ctxpopup_item_append(popup,
+ T_(CT_GET_TEXT_POSTAL_TYPE, phone_get_address_type_index(temp_type)),
+ NULL, input_addr_type_changed_cb, (void *) temp_type);
+ temp_type = temp_type << 1;
+ }
+ if (CONTACTS_ADDRESS_TYPE_OTHER != type)
+ {
+ elm_ctxpopup_item_append(popup,
+ T_(CT_GET_TEXT_POSTAL_TYPE, phone_get_address_type_index(CONTACTS_ADDRESS_TYPE_OTHER)),
+ NULL, input_addr_type_changed_cb,
+ (void *) CONTACTS_ADDRESS_TYPE_OTHER);
+ }
+ if (CONTACTS_ADDRESS_TYPE_CUSTOM != type)
+ {
+ elm_ctxpopup_item_append(popup,
+ T_(CT_GET_TEXT_POSTAL_TYPE, phone_get_address_type_index(CONTACTS_ADDRESS_TYPE_CUSTOM)),
+ NULL, input_addr_type_changed_cb,
+ (void *) CONTACTS_ADDRESS_TYPE_CUSTOM);
+ }
+
+ phone_move_ctxpopup(popup, obj);
+ evas_object_show(popup);
+}
+
+static void input_addr_del_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int idx;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *layout;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ ct_input_typed_data *typed_data;
+
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ err = contacts_record_remove_child_record(cinput_d->contact,
+ _contacts_contact.address, typed_data->record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_remove_child_record() Failed(%d)", err);
+
+ if (typed_data->ly_content == cinput_d->ly_addr_first)
+ {
+ Eina_List *list;
+ idx = ct_input_box_idx_get(cinput_d->box, cinput_d->ly_addr_first);
+ list = elm_box_children_get(cinput_d->box);
+ layout = (Evas_Object *) eina_list_nth(list, idx + 1);
+ eina_list_free(list);
+ cinput_d->ly_addr_first = layout;
+ }
+
+ err = contacts_record_destroy(typed_data->record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ elm_box_unpack(cinput_d->box, typed_data->ly_content);
+ evas_object_del(typed_data->ly_content);
+
+}
+
+static void input_addr_add_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *layout;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ layout = input_new_layout_address((ct_input_data *) data);
+ p_retm_if(NULL == layout, "input_new_layout_address() return");
+
+ input_update_address((ct_input_data *) data);
+}
+
+static void input_update_address(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ int idx;
+ Eina_List *list, *cursor;
+ Evas_Object *btn;
+ ct_input_typed_data *typed_data;
+ void *v_ly_content;
+
+ idx = ct_input_box_idx_get(cinput_d->box, cinput_d->ly_addr_first);
+ list = elm_box_children_get(cinput_d->box);
+ EINA_LIST_FOREACH(eina_list_nth_list(list, idx), cursor, v_ly_content)
+ {
+ Evas_Object *ly_content = (Evas_Object *) v_ly_content;
+ if (NULL == ly_content)
+ continue;
+ btn = elm_object_part_content_get(ly_content, "elm.icon.edit");
+ if (NULL == btn)
+ {
+ ERR("elm_object_part_content_get() return NULL");
+ break;
+ }
+
+ evas_object_smart_callback_del(btn, "clicked",
+ input_addr_add_clicked_cb);
+
+ if (ly_content == cinput_d->ly_addr_last)
+ {
+ elm_object_style_set(btn, "icon_plus");
+ evas_object_smart_callback_add(btn, "clicked",
+ input_addr_add_clicked_cb, cinput_d);
+ break;
+ }
+ else
+ {
+ typed_data = (ct_input_typed_data *) evas_object_data_get(ly_content, "typed_data");
+ if (NULL == typed_data)
+ {
+ ERR("evas_object_data_get() return NULL");
+ break;
+ }
+ elm_object_style_set(btn, "icon_minus");
+ if (EINA_TRUE == elm_object_disabled_get(btn))
+ elm_object_disabled_set(btn, EINA_FALSE);
+ evas_object_smart_callback_add(btn, "clicked",
+ input_addr_del_clicked_cb, cinput_d);
+ }
+ }
+ eina_list_free(list);
+}
+
+static void __input_image_delete_button_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ contacts_record_h record;
+ int err = CONTACTS_ERROR_NONE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ record = ctui_get_record_image(cinput_d->contact);
+ p_retm_if(NULL == record, "ctui_get_record_image() return NULL");
+
+ err = contacts_record_remove_child_record(cinput_d->contact,
+ _contacts_contact.image, record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_remove_child_record() Failed(%d)", err);
+
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ ct_input_update_image(cinput_d);
+
+ evas_object_del(cinput_d->cdetail_d->popup);
+ cinput_d->cdetail_d->popup = NULL;
+}
+
+static void __input_gallery_mouse_up(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ const char *img_path = NULL;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
+ int x, y, w, h;
+
+ if (ev == NULL)
+ return;
+
+ img_path = input_get_contact_image_path(cinput_d->contact);
+ if (NULL != img_path)
+ {
+ elm_image_file_set(obj, img_path, NULL);
+ }
+ else
+ elm_image_file_set(obj, CTUI_IMG_INPUT_GALLERY, NULL);
+
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+ if (ev->output.y < y || y + h < ev->output.y)
+ return;
+
+ ct_input_gallery(cinput_d);
+}
+
+static void __input_gallery_mouse_down(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ const char *img_path = NULL;
+
+ img_path = input_get_contact_image_path(cinput_d->contact);
+ if (NULL != img_path)
+ {
+ elm_image_file_set(obj, img_path, NULL);
+ }
+ else
+ elm_image_file_set(obj, CTUI_IMG_INPUT_GALLERY_PRESSED, NULL);
+}
+
+static void __input_camera_mouse_up(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
+ int x, y, w, h;
+ if (ev == NULL)
+ return;
+
+ elm_image_file_set(obj, CTUI_IMG_INPUT_CAMERA, NULL);
+
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+ if (ev->output.y < y || y + h < ev->output.y)
+ return;
+
+ ct_input_camera(cinput_d);
+
+}
+static void __input_camera_mouse_down(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ elm_image_file_set(obj, CTUI_IMG_INPUT_CAMERA_PRESSED, NULL);
+}
+
+void ct_input_update_image(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ const char *img_path = NULL;
+ Evas_Object *icon = NULL;
+ Evas_Object *btn_minus = NULL;
+ Evas_Object *ly_content = NULL;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+ ly_content = cinput_d->ly_image;
+ p_retm_if(NULL == ly_content, "parameter(ly_content) is NULL");
+
+ icon = elm_object_part_content_unset(ly_content, "elm.icon");
+ if (NULL != icon)
+ evas_object_del(icon);
+
+ icon = elm_icon_add(ly_content);
+ p_retm_if(NULL == icon, "elm_icon_add() return NULL");
+ elm_object_part_content_set(ly_content, "elm.icon", icon);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_NONE, 1, 1);
+
+ evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_DOWN,
+ __input_gallery_mouse_down, cinput_d);
+ evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_UP,
+ __input_gallery_mouse_up, cinput_d);
+
+ img_path = input_get_contact_image_path(cinput_d->contact);
+ if (NULL != img_path)
+ {
+ elm_image_file_set(icon, img_path, NULL);
+
+ btn_minus = elm_object_part_content_get(ly_content, "elm.icon4");
+ if (NULL == btn_minus)
+ {
+ btn_minus = elm_button_add(ly_content);
+ elm_object_part_content_set(ly_content, "elm.icon4", btn_minus);
+ elm_object_style_set(btn_minus, "minus");
+ evas_object_size_hint_aspect_set(btn_minus,
+ EVAS_ASPECT_CONTROL_NONE, 1, 1);
+ evas_object_size_hint_align_set(btn_minus, 0.5, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(btn_minus, "clicked",
+ __input_image_delete_button_clicked_cb, cinput_d);
+ }
+ }
+ else
+ {
+ elm_image_file_set(icon, CTUI_IMG_INPUT_GALLERY, NULL);
+ elm_image_resizable_set(icon, EINA_FALSE, EINA_FALSE);
+
+ btn_minus = elm_object_part_content_unset(ly_content, "elm.icon4");
+ if (NULL != btn_minus)
+ evas_object_del(btn_minus);
+ }
+}
+
+static Evas_Object* __input_fill_layout_image(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ Evas_Object *ly_content = NULL;
+ Evas_Object *box = cinput_d->box;
+ Evas_Object *btn_camera = NULL;
+
+ ly_content = elm_layout_add(box);
+ p_retvm_if(NULL == ly_content, NULL,
+ "ct_input_create_dg_layout() return NULL");
+ elm_layout_file_set(ly_content, IMAGE_LAYOUT_EDJ, "dialogue/image_layout");
+ evas_object_size_hint_align_set(ly_content, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(ly_content);
+
+ btn_camera = elm_icon_add(ly_content);
+ p_retvm_if(NULL == btn_camera, NULL, "elm_button_add() return NULL");
+ elm_image_file_set(btn_camera, CTUI_IMG_INPUT_CAMERA, NULL);
+ evas_object_size_hint_aspect_set(btn_camera, EVAS_ASPECT_CONTROL_NONE, 1,
+ 1);
+ evas_object_size_hint_align_set(btn_camera, 0.5, EVAS_HINT_FILL);
+ evas_object_propagate_events_set(btn_camera, EINA_FALSE);
+ evas_object_color_set(btn_camera, 255, 255, 255, 255);
+ elm_object_part_content_set(ly_content, "elm.icon3", btn_camera);
+
+ evas_object_event_callback_add(btn_camera, EVAS_CALLBACK_MOUSE_DOWN,
+ __input_camera_mouse_down, cinput_d);
+ evas_object_event_callback_add(btn_camera, EVAS_CALLBACK_MOUSE_UP,
+ __input_camera_mouse_up, cinput_d);
+
+ cinput_d->ly_image = ly_content;
+ ct_input_update_image(cinput_d);
+
+ return ly_content;
+}
+
+static void __input_basic_info_name_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char *last_name = NULL;
+ char *first_name = NULL;
+ char *name = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ name = ctui_entry_markup_to_utf8(elm_entry_entry_get(obj));
+ p_retm_if(NULL == name, "ctui_entry_markup_to_utf8() return NULL");
+
+ if (name && cinput_d->name_old && 0 == strcmp(name, cinput_d->name_old))
+ return;
+
+ record = ct_input_get_record_name(cinput_d->contact);
+ p_retm_if(NULL == record, "ct_input_get_record_name() return NULL");
+
+ first_name = strtok_r(name, " ", &last_name);
+
+ err = contacts_record_set_str(record, _contacts_name.first, first_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_str(record, _contacts_name.last, last_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ free(name);
+}
+
+static void __input_basic_info_name_focused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char *name = NULL;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ name = ctui_entry_markup_to_utf8(elm_entry_entry_get(obj));
+ p_retm_if(NULL == name, "ctui_entry_markup_to_utf8() return NULL");
+
+ FREEandSTRDUP(cinput_d->name_old, name);
+
+ free(name);
+}
+
+static void __input_basic_info_get_name_str(contacts_record_h record_name,
+ char *buf, int buf_size)
+{
+ PH_TRACE;
+ char *first_name = NULL;
+ char *last_name = NULL;
+
+ p_retm_if(NULL == record_name, "parameter(record_name) is NULL");
+ contacts_record_get_str_p(record_name, _contacts_name.first, &first_name);
+ contacts_record_get_str_p(record_name, _contacts_name.last, &last_name);
+
+ if (first_name && last_name)
+ snprintf(buf, buf_size, "%s %s", first_name, last_name);
+ else if (first_name)
+ snprintf(buf, buf_size, "%s", first_name);
+ else if (last_name)
+ snprintf(buf, buf_size, "%s", last_name);
+}
+
+static void __input_basic_info_update(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ char *name = NULL;
+ char buf[PH_TEXT_MAX_LEN + 1] = { 0 };
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record_name = NULL;
+ Evas_Object *editfield = NULL;
+ Evas_Object *entry = NULL;
+ Evas_Object *ly_content = NULL;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ ly_content = cinput_d->ly_basic_info;
+ record_name = ct_input_get_record_name(cinput_d->contact);
+
+ if (!cinput_d->ly_basic_info_middle_name)
+ { // contracted
+ editfield = ct_input_add_editfield(ly_content, NULL, S_(CT_SYS_BODY_NAME),
+ __input_basic_info_name_unfocused_cb, cinput_d);
+ p_retm_if(NULL == editfield, "ct_input_add_editfield() return NULL");
+
+ entry = elm_object_part_content_get(editfield, "elm.swallow.content");
+ evas_object_smart_callback_add(entry, "focused",
+ __input_basic_info_name_focused_cb, cinput_d);
+ elm_entry_input_panel_imdata_set(entry, (void*) "type=name", 9);
+ elm_object_part_content_set(ly_content, "elm.icon", editfield);
+
+ __input_basic_info_get_name_str(record_name, buf, sizeof(buf));
+ if (*buf)
+ __input_editfield_entry_set(editfield, buf);
+ }
+ else
+ { // expanded
+ /* first name */
+ editfield = ct_input_add_editfield(ly_content, NULL,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_FIRSTNAME),
+ __input_firstname_unfocused_cb, cinput_d);
+ p_retm_if(NULL == editfield, "ct_input_add_editfield() return NULL");
+
+ elm_object_part_content_set(ly_content, "elm.icon", editfield);
+
+ err = contacts_record_get_str_p(record_name, _contacts_name.first,
+ &name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ __input_editfield_entry_set(editfield, name);
+ }
+}
+
+static void __input_basic_info_expand(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ Evas_Object *layout;
+
+ layout = __input_fill_layout_basic_info_expand(cinput_d,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_MIDDLE),
+ input_middle_unfocused_cb, _contacts_name._uri,
+ _contacts_name.addition);
+ p_retm_if(NULL == layout,
+ "__input_fill_layout_basic_info_expand() return NULL");
+ elm_box_pack_after(cinput_d->box, layout, cinput_d->ly_basic_info);
+ cinput_d->ly_basic_info_middle_name = layout;
+
+ layout = __input_fill_layout_basic_info_expand(cinput_d,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_LASTNAME),
+ input_lastname_unfocused_cb, _contacts_name._uri,
+ _contacts_name.last);
+ p_retm_if(NULL == layout,
+ "__input_fill_layout_basic_info_expand() return NULL");
+ elm_box_pack_after(cinput_d->box, layout,
+ cinput_d->ly_basic_info_middle_name);
+ cinput_d->ly_basic_info_last_name = layout;
+
+ layout = __input_fill_layout_basic_info_expand(cinput_d,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_SUFFIX),
+ input_suffix_unfocused_cb, _contacts_name._uri,
+ _contacts_name.suffix);
+ p_retm_if(NULL == layout,
+ "__input_fill_layout_basic_info_expand() return NULL");
+ elm_box_pack_after(cinput_d->box, layout,
+ cinput_d->ly_basic_info_last_name);
+ cinput_d->ly_basic_info_suffix = layout;
+
+ layout = __input_fill_layout_basic_info_expand(cinput_d,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_NICKNAME),
+ input_nick_unfocused_cb, _contacts_nickname._uri,
+ _contacts_nickname.name);
+ p_retm_if(NULL == layout,
+ "__input_fill_layout_basic_info_expand() return NULL");
+ elm_box_pack_after(cinput_d->box, layout, cinput_d->ly_basic_info_suffix);
+ cinput_d->ly_basic_info_nickname = layout;
+
+ // Add job title field
+ layout = __input_fill_layout_basic_info_expand(cinput_d,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_JOB_TITLE),
+ input_job_title_unfocused_cb, _contacts_company._uri,
+ _contacts_company.job_title);
+ p_retm_if(NULL == layout,
+ "__input_fill_layout_basic_info_expand() return NULL");
+ elm_box_pack_after(cinput_d->box, layout,
+ cinput_d->ly_basic_info_nickname);
+ cinput_d->ly_basic_info_job_title = layout;
+
+ // Add department field
+ if (cinput_d->add_department)
+ {
+ layout = __input_fill_layout_basic_info_expand(cinput_d,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_DEPARTMENT),
+ input_department_unfocused_cb, _contacts_company._uri,
+ _contacts_company.department);
+ p_retm_if(NULL == layout,
+ "__input_fill_layout_basic_info_expand() return NULL");
+ if (cinput_d->ly_basic_info_job_title)
+ elm_box_pack_after(cinput_d->box, layout,
+ cinput_d->ly_basic_info_job_title);
+ else
+ elm_box_pack_after(cinput_d->box, layout,
+ cinput_d->ly_basic_info_nickname);
+ cinput_d->ly_basic_info_department = layout;
+ }
+ layout = __input_fill_layout_basic_info_expand(cinput_d,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_COMPANY),
+ input_company_unfocused_cb, _contacts_company._uri,
+ _contacts_company.name);
+ p_retm_if(NULL == layout,
+ "__input_fill_layout_basic_info_expand() return NULL");
+
+ if (cinput_d->ly_basic_info_department)
+ elm_box_pack_after(cinput_d->box, layout,
+ cinput_d->ly_basic_info_department);
+ else if (cinput_d->ly_basic_info_job_title)
+ elm_box_pack_after(cinput_d->box, layout,
+ cinput_d->ly_basic_info_job_title);
+ else
+ elm_box_pack_after(cinput_d->box, layout,
+ cinput_d->ly_basic_info_nickname);
+ cinput_d->ly_basic_info_company = layout;
+}
+
+static inline void __input_basic_info_contract(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ elm_box_unpack(cinput_d->box, cinput_d->ly_basic_info_middle_name);
+ elm_box_unpack(cinput_d->box, cinput_d->ly_basic_info_last_name);
+ elm_box_unpack(cinput_d->box, cinput_d->ly_basic_info_suffix);
+ elm_box_unpack(cinput_d->box, cinput_d->ly_basic_info_nickname);
+ elm_box_unpack(cinput_d->box, cinput_d->ly_basic_info_company);
+
+ evas_object_del(cinput_d->ly_basic_info_middle_name);
+ evas_object_del(cinput_d->ly_basic_info_last_name);
+ evas_object_del(cinput_d->ly_basic_info_suffix);
+ evas_object_del(cinput_d->ly_basic_info_nickname);
+ evas_object_del(cinput_d->ly_basic_info_company);
+
+ cinput_d->ly_basic_info_middle_name = NULL;
+ cinput_d->ly_basic_info_last_name = NULL;
+ cinput_d->ly_basic_info_suffix = NULL;
+ cinput_d->ly_basic_info_nickname = NULL;
+ cinput_d->ly_basic_info_company = NULL;
+
+ if (cinput_d->ly_basic_info_job_title)
+ {
+ elm_box_unpack(cinput_d->box, cinput_d->ly_basic_info_job_title);
+ evas_object_del(cinput_d->ly_basic_info_job_title);
+ cinput_d->ly_basic_info_job_title = NULL;
+ }
+
+ if (cinput_d->ly_basic_info_department)
+ {
+ elm_box_unpack(cinput_d->box, cinput_d->ly_basic_info_department);
+ evas_object_del(cinput_d->ly_basic_info_department);
+ cinput_d->ly_basic_info_department = NULL;
+ }
+}
+
+static void __input_basic_info_expand_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ Evas_Object *btn_expand = NULL;
+ Evas_Object *ly_content = NULL;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+ ly_content = cinput_d->ly_basic_info;
+ p_retm_if(NULL == ly_content, "parameter(ly_content) is NULL");
+
+ btn_expand = elm_object_part_content_get(ly_content, "elm.icon.edit");
+ p_retm_if(NULL == btn_expand, "elm_object_part_content_get() return NULL");
+
+ if (cinput_d->ly_basic_info_last_name)
+ {
+ __input_basic_info_contract(cinput_d);
+ elm_object_style_set(btn_expand, "icon_expand_closed");
+ }
+ else
+ {
+ __input_basic_info_expand(cinput_d);
+ elm_object_style_set(btn_expand, "icon_expand_opened");
+ }
+ __input_basic_info_update(cinput_d);
+}
+
+static Evas_Object* __input_fill_layout_basic_info(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_MAX_LEN + 1] = { 0, };
+ Evas_Object *ly_content = NULL;
+ Evas_Object *entry = NULL;
+ Evas_Object *editfield_name = NULL;
+ Evas_Object *btn_expand = NULL;
+ Evas_Object *box = cinput_d->box;
+ contacts_record_h record_name = NULL;
+
+ ly_content = ct_input_create_dg_layout(box, "1icon");
+ p_retvm_if(NULL == ly_content, NULL,
+ "ct_input_create_dg_layout() return NULL");
+ evas_object_size_hint_align_set(ly_content, EVAS_HINT_FILL, 0.0);
+ elm_object_signal_emit(ly_content, "elm,state,edit,enabled", "");
+
+ editfield_name = ct_input_add_editfield(ly_content, NULL, S_(CT_SYS_BODY_NAME),
+ __input_basic_info_name_unfocused_cb, cinput_d);
+ ct_input_add_name_field(editfield_name, cinput_d);
+ entry = elm_object_part_content_get(editfield_name, "elm.swallow.content");
+ evas_object_smart_callback_add(entry, "focused",
+ __input_basic_info_name_focused_cb, cinput_d);
+ elm_object_part_content_set(ly_content, "elm.icon", editfield_name);
+ record_name = ct_input_get_record_name(cinput_d->contact);
+ elm_entry_input_panel_imdata_set(entry, (void*) "type=name", 9);
+ __input_basic_info_get_name_str(record_name, buf, sizeof(buf));
+ if (*buf)
+ __input_editfield_entry_set(editfield_name, buf);
+
+ btn_expand = elm_button_add(ly_content);
+ p_retvm_if(NULL == btn_expand, NULL, "elm_button_add() return NULL");
+ elm_object_part_content_set(ly_content, "elm.icon.edit", btn_expand);
+ elm_object_style_set(btn_expand, "icon_expand_closed");
+ evas_object_smart_callback_add(btn_expand, "clicked",
+ __input_basic_info_expand_clicked_cb, cinput_d);
+
+ cinput_d->ly_basic_info = ly_content;
+ return ly_content;
+}
+
+Evas_Object* ct_input_fill_layout_separator(ct_input_data *cinput_d,
+ const char *theme)
+{
+ PH_TRACE;
+ Evas_Object *box = cinput_d->box;
+ Evas_Object *layout;
+
+ layout = elm_layout_add(box);
+ elm_layout_theme_set(layout, "layout", "dialogue", theme);
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, 0.0);
+ evas_object_show(layout);
+
+ return layout;
+}
+
+static void input_messenger_del(ct_input_data *cinput_d,
+ ct_input_typed_data *typed_data)
+{
+ PH_TRACE;
+ int idx;
+ int err = CONTACTS_ERROR_NONE;
+ Eina_List *list = NULL;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+ p_retm_if(NULL == typed_data, "parameter(typed_data) is NULL");
+
+ err = contacts_record_remove_child_record(cinput_d->contact,
+ _contacts_contact.messenger, typed_data->record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_remove_child_record() Failed(%d)", err);
+
+ if (typed_data->ly_content == cinput_d->ly_messenger_first)
+ {
+ idx = ct_input_box_idx_get(cinput_d->box, typed_data->ly_content);
+ list = elm_box_children_get(cinput_d->box);
+ cinput_d->ly_messenger_first = (Evas_Object *) eina_list_nth(list, idx + 1);
+ eina_list_free(list);
+ }
+
+ err = contacts_record_destroy(typed_data->record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ elm_box_unpack(cinput_d->box, typed_data->ly_content);
+ evas_object_del(typed_data->ly_content);
+}
+
+static void input_messenger_del_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ ct_input_typed_data *typed_data;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ input_messenger_del((ct_input_data *) data, typed_data);
+
+}
+
+static void input_messenger_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ Evas_Object *btn_minus;
+ ct_input_typed_data *typed_data;
+ const char *tmp;
+
+ tmp = elm_entry_entry_get(obj);
+ p_retm_if(NULL == tmp || '\0' == tmp[0],
+ "elm_entry_entry_get() return NULL");
+
+ evas_object_smart_callback_del(obj, "changed", input_messenger_changed_cb);
+ evas_object_smart_callback_del(obj, "preedit,changed",
+ input_messenger_changed_cb);
+ p_retm_if(NULL == cinput_d, "parameter(ct_input_data) is NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ if (typed_data->ly_content == cinput_d->ly_messenger_last)
+ {
+ btn_minus = elm_button_add(typed_data->ly_content);
+ p_retm_if(NULL == btn_minus, "elm_button_add() return NULL");
+
+ elm_object_style_set(btn_minus, "minus");
+ evas_object_data_set(btn_minus, "typed_data", typed_data);
+ elm_object_part_content_set(typed_data->ly_content, "elm.icon.edit",
+ btn_minus);
+ evas_object_smart_callback_add(btn_minus, "clicked",
+ input_messenger_del_clicked_cb, cinput_d);
+
+ p_retm_if(NULL == input_new_layout_messenger(cinput_d),
+ "input_new_layout_messenger() return NULL");
+ }
+}
+
+static void input_messenger_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char *input;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *entry = obj;
+ ct_input_typed_data *typed_data;
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(entry, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ input = ctui_entry_markup_to_utf8(elm_entry_entry_get(entry));
+ p_retm_if(NULL == input, "ctui_entry_markup_to_utf8() return NULL");
+
+ err = contacts_record_set_str(typed_data->record, _contacts_messenger.im_id,
+ input);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() failed(%d)", err);
+
+ free(input);
+}
+
+static Evas_Object* input_messenger_get_edit_rename(ct_input_data *cinput_d,
+ ct_input_typed_data *typed_data)
+{
+ PH_TRACE;
+ char *val_str;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *entry;
+ Evas_Object *editfield;
+ Evas_Object *ly_content = typed_data->ly_content;
+
+ editfield = ct_input_add_editfield(ly_content, T_(CT_GET_TEXT_BASIC, CTTEXT_INSTANT_MESSENGER),
+ T_(CT_GET_TEXT_BASIC, CTTEXT_INSTANT_MESSENGER),
+ input_messenger_unfocused_cb, cinput_d);
+ p_retvm_if(NULL == editfield, NULL, "ct_input_add_editfield() return NULL");
+
+ entry = elm_object_part_content_get(editfield, "elm.swallow.content");
+ typed_data->data = entry;
+
+ evas_object_data_set(entry, "typed_data", typed_data);
+ elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+
+ err = contacts_record_get_str(typed_data->record, _contacts_messenger.im_id,
+ &val_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() failed(%d)", err);
+
+ if (val_str && *val_str)
+ ctui_entry_entry_set(entry, val_str);
+ else
+ {
+ evas_object_smart_callback_add(entry, "changed",
+ input_messenger_changed_cb, cinput_d);
+ evas_object_smart_callback_add(entry, "preedit,changed",
+ input_messenger_changed_cb, cinput_d);
+ }
+ return editfield;
+}
+
+static Evas_Object* input_fill_layout_messenger(ct_input_data *cinput_d,
+ contacts_record_h record)
+{
+ PH_TRACE;
+ int type_int;
+ char *val_str;
+ char* messenger_type_str;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *ly_content;
+ Evas_Object *ef;
+ Evas_Object *btn_minus;
+ Evas_Object *btn_type;
+ Evas_Object *box = cinput_d->box;
+ ct_input_typed_data *typed_data;
+
+ if (!cinput_d->ly_seperator_more)
+ {
+ cinput_d->ly_seperator_more = ct_input_fill_layout_separator(cinput_d,
+ "separator/hd33/with_line");
+ p_retvm_if(NULL == cinput_d->ly_seperator_more, EINA_FALSE,
+ "ct_input_fill_layout_separator() return NULL");
+ elm_box_pack_after(cinput_d->box, cinput_d->ly_seperator_more,
+ cinput_d->ly_addr_last);
+ }
+ ly_content = elm_layout_add(box);
+ p_retvm_if(NULL == ly_content, NULL, "elm_layout_add() return NULL");
+ elm_layout_file_set(ly_content, CONTACTS_EDJ, "dialogue/1icon.1type.1edit");
+ evas_object_size_hint_align_set(ly_content, EVAS_HINT_FILL, 0.0);
+ evas_object_show(ly_content);
+
+ err = contacts_record_get_int(record, _contacts_messenger.type, &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() failed(%d)", err);
+
+ btn_type = elm_button_add(ly_content);
+ if (NULL == btn_type)
+ {
+ ERR("elm_button_add() return NULL");
+ evas_object_del(ly_content);
+ return NULL;
+ }
+ if (CONTACTS_MESSENGER_TYPE_CUSTOM == type_int)
+ {
+ err = contacts_record_get_str_p(record, _contacts_messenger.label,
+ &messenger_type_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() failed(%d)", err);
+
+ if (NULL == messenger_type_str || '\0' == messenger_type_str[0])
+ messenger_type_str =
+ (char *) T_(CT_GET_TEXT_IM_TYPE, CONTACTS_MESSENGER_TYPE_CUSTOM);
+ }
+ else
+ messenger_type_str = (char *) T_(CT_GET_TEXT_IM_TYPE, type_int);
+ elm_object_text_set(btn_type, messenger_type_str);
+ evas_object_data_set(btn_type, KEY_INPUT_DATA, cinput_d);
+ elm_object_part_content_set(ly_content, "elm.icon.type", btn_type);
+
+ typed_data = (ct_input_typed_data *) calloc(1, sizeof(ct_input_typed_data));
+ p_retvm_if(NULL == typed_data, NULL, "calloc() return NULL");
+ typed_data->record = record;
+ typed_data->ly_content = ly_content;
+ typed_data->view_uri = _contacts_messenger._uri;
+ evas_object_data_set(ly_content, "typed_data", typed_data);
+
+ err = contacts_record_get_str_p(record, _contacts_messenger.im_id,
+ &val_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() failed(%d)", err);
+
+ if (val_str && *val_str)
+ {
+ btn_minus = elm_button_add(ly_content);
+ if (NULL == btn_minus)
+ {
+ ERR("elm_button_add() return NULL");
+ evas_object_del(ly_content);
+ return NULL;
+ }
+ elm_object_style_set(btn_minus, "minus");
+ evas_object_data_set(btn_minus, "typed_data", typed_data);
+ elm_object_part_content_set(ly_content, "elm.icon.edit", btn_minus);
+ evas_object_smart_callback_add(btn_minus, "clicked",
+ input_messenger_del_clicked_cb, cinput_d);
+ }
+
+ ef = input_messenger_get_edit_rename(cinput_d, typed_data);
+ if (NULL == ef)
+ {
+ ERR("input_messenger_get_edit_rename() return NULL");
+ evas_object_del(ly_content);
+ return NULL;
+ }
+ ct_input_add_name_field(ef, cinput_d);
+ elm_object_part_content_set(ly_content, "elm.icon", ef);
+ evas_object_event_callback_add(ly_content, EVAS_CALLBACK_DEL,
+ ct_input_typed_layout_del_cb, typed_data);
+
+ evas_object_smart_callback_add(btn_type, "clicked",
+ ct_input_data_type_clicked_cb, typed_data);
+
+ if (cinput_d->ly_messenger_last)
+ elm_box_pack_after(box, ly_content, cinput_d->ly_messenger_last);
+ else
+ elm_box_pack_after(box, ly_content, cinput_d->ly_seperator_more);
+
+ return ly_content;
+}
+
+static int input_fill_layout_messengers(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ int i;
+ unsigned int count = 0;
+ Evas_Object *layout = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = contacts_record_get_child_record_count(cinput_d->contact,
+ _contacts_contact.messenger, &count);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, 0,
+ "contacts_record_get_child_record_count() Failed(%d)", err);
+
+ for (i = count - 1; i >= 0; i--)
+ {
+ err = contacts_record_get_child_record_at_p(cinput_d->contact,
+ _contacts_contact.messenger, i, &record);
+ if (err != CONTACTS_ERROR_NONE)
+ {
+ ERR("contacts_record_get_child_record_at_p() Failed(%d)", err);
+ continue;
+ }
+
+ layout = input_fill_layout_messenger(cinput_d, record);
+ p_retvm_if(NULL == layout, count,
+ "input_fill_layout_messenger() return NULL");
+
+ if (NULL == cinput_d->ly_messenger_first)
+ cinput_d->ly_messenger_first = layout;
+ cinput_d->ly_messenger_last = layout;
+ }
+
+ return count;
+}
+
+static Evas_Object* input_new_layout_messenger(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ Evas_Object *layout;
+
+ record = ct_input_new_record_messenger(cinput_d->contact);
+ p_retvm_if(NULL == record, NULL, "ct_input_new_record() return NULL");
+
+ layout = input_fill_layout_messenger(cinput_d, record);
+ p_retvm_if(NULL == layout, NULL,
+ "input_fill_layout_messenger() return NULL");
+
+ if (NULL == cinput_d->ly_messenger_first)
+ cinput_d->ly_messenger_first = layout;
+ cinput_d->ly_messenger_last = layout;
+
+ return layout;
+}
+
+static void input_address_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ Evas_Object *btn_minus;
+ ct_input_typed_data *typed_data;
+ const char *tmp;
+
+ tmp = elm_entry_entry_get(obj);
+ p_retm_if(NULL == tmp || '\0' == tmp[0],
+ "elm_entry_entry_get() return NULL");
+
+ evas_object_smart_callback_del(obj, "changed", input_address_changed_cb);
+ evas_object_smart_callback_del(obj, "preedit,changed",
+ input_address_changed_cb);
+ p_retm_if(NULL == cinput_d, "parameter(ct_input_data) is NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ if (typed_data->ly_content == cinput_d->ly_addr_last)
+ {
+ btn_minus = elm_button_add(typed_data->ly_content);
+ p_retm_if(NULL == btn_minus, "elm_button_add() return NULL");
+
+ elm_object_style_set(btn_minus, "minus");
+ evas_object_data_set(btn_minus, "typed_data", typed_data);
+ elm_object_part_content_set(typed_data->ly_content, "elm.icon.edit",
+ btn_minus);
+ evas_object_smart_callback_add(btn_minus, "clicked",
+ input_addr_del_clicked_cb, cinput_d);
+ p_retm_if(NULL == input_new_layout_address(cinput_d),
+ "input_new_layout_address() return NULL");
+ }
+}
+
+static Evas_Object* input_fill_layout_address(ct_input_data *cinput_d,
+ contacts_record_h record)
+{
+ PH_TRACE;
+ int type_int;
+ Evas_Object *ly_content;
+ Evas_Object *ef, *en;
+ Evas_Object *btn_type;
+ Evas_Object *box = cinput_d->box;
+ Elm_Entry_Filter_Limit_Size filter;
+ int err = CONTACTS_ERROR_NONE;
+ ct_input_typed_data *typed_data;
+
+ ly_content = elm_layout_add(box);
+ p_retvm_if(NULL == ly_content, NULL, "elm_layout_add() return NULL");
+
+ elm_layout_file_set(ly_content, CONTACTS_EDJ, "dialogue/1icon.1type.1edit");
+ evas_object_size_hint_align_set(ly_content, EVAS_HINT_FILL, 0.0);
+ evas_object_show(ly_content);
+
+ typed_data = (ct_input_typed_data *) calloc(1, sizeof(ct_input_typed_data));
+ p_retvm_if(NULL == typed_data, NULL, "calloc() return NULL");
+ typed_data->ly_content = ly_content;
+ typed_data->record = record;
+ typed_data->view_uri = _contacts_address._uri;
+ evas_object_data_set(ly_content, "typed_data", typed_data);
+
+ char address[PH_TEXT_MAX_LEN] = { 0, };
+
+ ef = ctui_create_editfield(ly_content, NULL, S_(CT_SYS_POP_ADDRESS), false);
+ p_retvm_if(NULL == ef, NULL, "ctui_create_editfield() return NULL");
+ ct_input_add_name_field(ef, cinput_d);
+
+ en = elm_object_part_content_get(ef, "elm.swallow.content");
+ filter.max_char_count = CT_INPUT_ADDRESS_MAX_CHAR;
+ elm_entry_input_panel_imdata_set(en, (void*) "type=post", 9);
+ elm_entry_markup_filter_append(en, elm_entry_filter_limit_size, &filter);
+ evas_object_smart_callback_add(en, "changed", ct_input_entry_changed_cb,
+ ef);
+ evas_object_smart_callback_add(en, "unfocused",
+ input_addr_editfield_unfocused_cb, record);
+
+ elm_object_part_content_set(ly_content, "elm.icon", ef);
+ evas_object_data_set(en, "typed_data", typed_data);
+
+ address[0] = '\0';
+ ct_input_get_full_address(record, address, sizeof(address));
+ en = __input_editfield_entry_set(ef, address);
+ if (*address)
+ {
+ Evas_Object *btn_minus;
+ btn_minus = elm_button_add(ly_content);
+ if (NULL == btn_minus)
+ {
+ ERR("elm_button_add() return NULL");
+ evas_object_del(ly_content);
+ return NULL;
+ }
+ elm_object_style_set(btn_minus, "minus");
+ evas_object_data_set(btn_minus, "typed_data", typed_data);
+ elm_object_part_content_set(ly_content, "elm.icon.edit", btn_minus);
+ evas_object_smart_callback_add(btn_minus, "clicked",
+ input_addr_del_clicked_cb, cinput_d);
+ }
+ else
+ {
+ evas_object_smart_callback_add(en, "changed", input_address_changed_cb,
+ cinput_d);
+ evas_object_smart_callback_add(en, "preedit,changed",
+ input_address_changed_cb, cinput_d);
+ }
+
+ /* type */
+ err = contacts_record_get_int(record, _contacts_address.type, &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() failed(%d)", err);
+
+ btn_type = elm_button_add(ly_content);
+ if (NULL == btn_type)
+ {
+ ERR("elm_button_add() return NULL");
+ evas_object_del(ly_content);
+ return NULL;
+ }
+ elm_object_text_set(btn_type,
+ T_(CT_GET_TEXT_POSTAL_TYPE, phone_get_address_type_index(type_int)));
+
+ evas_object_data_set(btn_type, KEY_INPUT_DATA, cinput_d);
+ elm_object_part_content_set(ly_content, "elm.icon.type", btn_type);
+
+ evas_object_smart_callback_add(btn_type, "clicked",
+ input_address_type_mouse_up_cb, typed_data);
+ evas_object_event_callback_add(ly_content, EVAS_CALLBACK_DEL,
+ ct_input_typed_layout_del_cb, typed_data);
+
+ if (cinput_d->ly_addr_last)
+ elm_box_pack_after(box, ly_content, cinput_d->ly_addr_last);
+ else
+ elm_box_pack_end(box, ly_content);
+
+ return ly_content;
+}
+
+static Evas_Object* input_new_layout_address(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ Evas_Object *layout;
+
+ record = ct_input_new_record_address(cinput_d->contact);
+ p_retvm_if(NULL == record, NULL,
+ "ct_input_new_record_address() return NULL");
+
+ layout = input_fill_layout_address(cinput_d, record);
+ p_retvm_if(NULL == layout, NULL, "input_fill_layout_address() return NULL");
+
+ if (NULL == cinput_d->ly_addr_first)
+ cinput_d->ly_addr_first = layout;
+ cinput_d->ly_addr_last = layout;
+
+ return layout;
+}
+
+static void input_group_add_cb(int grp_id, void *data, bool changed)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ if (grp_id < CONTACTS_ERROR_NONE)
+ return;
+
+ err = contacts_record_create(_contacts_group_relation._uri, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_create() failed(%d)",
+ err);
+
+ err = contacts_record_set_int(record, _contacts_group_relation.group_id,
+ grp_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() failed(%d)", err);
+
+ err = contacts_record_add_child_record(cinput_d->contact,
+ _contacts_contact.group_relation, record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_add_child_record() failed(%d)", err);
+
+ //err = contacts_group_add_contact(grp_id,info->contact_id);
+ //p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_group_add_contact() Failed(%d)", err);
+
+ ct_input_update_group(cinput_d);
+}
+
+static void input_group_mouse_up_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ unsigned int count = 0;
+ int x, y, w, h;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_list_h list = NULL;
+ Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ p_retm_if(NULL == ev, "ev is NULL");
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+ if (ev->output.y < y || y + h < ev->output.y)
+ return;
+ elm_object_focus_set(cinput_d->cdetail_d->navi, EINA_FALSE);
+
+ err = phone_cts_get_list(_contacts_group._uri,
+ _contacts_group.address_book_id, cinput_d->base_ab, &list);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "phone_cts_get_list() Failed(%d)",
+ err);
+
+ err = contacts_list_get_count(list, &count);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_get_count() Failed(%d)", err);
+
+ err = contacts_list_destroy(list, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_destroy() Failed(%d)",
+ err);
+
+ if (count)
+ ct_group_assign_popup_create(cinput_d->cdetail_d->win, cinput_d->cdetail_d->navi,
+ cinput_d->contact, ct_input_update_group, cinput_d);
+ else
+ ctui_create_group_input_view(cinput_d->cdetail_d->win,
+ cinput_d->cdetail_d->navi, NULL, input_group_add_cb, cinput_d);
+}
+
+static char *input_popup_text_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ if (0 == strcmp(part, "elm.text"))
+ return strdup((const char *) data);
+ return NULL;
+}
+
+static void input_ringtone_mouse_up_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *popup;
+ Evas_Object *genlist;
+ Evas_Object *btn;
+ Evas_Object *box;
+ char *temp;
+ int x, y, w, h;
+ Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ p_retm_if(NULL == ev, "ev is NULL");
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+ if (ev->output.y < y || y + h < ev->output.y)
+ return;
+ elm_object_focus_set(cinput_d->cdetail_d->navi, EINA_FALSE);
+
+ popup = elm_popup_add(cinput_d->cdetail_d->navi);
+ cinput_d->popup = popup;
+ elm_object_style_set(popup, "min_menustyle");
+ elm_object_part_text_set(popup, "title,text",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_RINGTONE));
+ evas_object_smart_callback_add(popup, "block,clicked", ctui_input_data_popup_hide_cb,
+ NULL);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ btn = elm_button_add(popup);
+ elm_object_text_set(btn, S_(PH_SYS_SK_CANCEL));
+ elm_object_part_content_set(popup, "button1", btn);
+ evas_object_smart_callback_add(btn, "clicked", ctui_input_data_popup_hide_cb,cinput_d );
+
+ input_ringtone_itc.item_style = "1text";
+ input_ringtone_itc.func.text_get = input_popup_text_get;
+ input_ringtone_itc.func.content_get = NULL;
+ input_ringtone_itc.func.state_get = NULL;
+ input_ringtone_itc.func.del = NULL;
+
+ box = elm_box_add(popup);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ genlist = elm_genlist_add(popup);
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_genlist_item_append(genlist, &input_ringtone_itc, S_(CT_SYS_SK_SET),
+ NULL, ELM_GENLIST_ITEM_NONE, ct_input_myfile_ringtone, data);
+
+ err = contacts_record_get_str_p(cinput_d->contact,
+ _contacts_contact.ringtone_path, &temp);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_contact_record_get_str_p() Failed(%d)", err);
+
+ if (temp && *temp)
+ elm_genlist_item_append(genlist, &input_ringtone_itc,
+ S_(CT_SYS_SK_RESET), NULL, ELM_GENLIST_ITEM_NONE,
+ input_ringtone_cancel_cb, data);
+ elm_box_pack_end(box, genlist);
+ evas_object_show(genlist);
+ evas_object_size_hint_min_set(box, 600, 200);
+ elm_object_content_set(popup, box);
+ evas_object_show(popup);
+}
+
+
+static void input_vibration_set_result_cb(void *data, const char *path)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ int err = contacts_record_set_str(cinput_d->contact,
+ _contacts_contact.vibration, path);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ ct_input_update_vibration(cinput_d->contact, cinput_d->ly_vibration);
+}
+
+static void input_vibration_mouse_up_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ char *vibration = NULL;
+ int err = contacts_record_get_str_p(cinput_d->contact,
+ _contacts_contact.vibration, &vibration);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ cinput_d->popup = ct_detail_vibration_popup_create(cinput_d->cdetail_d->navi, vibration,
+ input_vibration_set_result_cb, cinput_d);
+}
+
+static void input_del_group_info(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ int i;
+ unsigned int count;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = contacts_record_get_child_record_count(cinput_d->contact,
+ _contacts_contact.group_relation, &count);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_child_record_count() Failed(%d)", err);
+
+ for (i = count - 1; i >= 0; i--)
+ {
+ err = contacts_record_get_child_record_at_p(cinput_d->contact,
+ _contacts_contact.group_relation, i, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_child_record_at_p() Failed(%d)", err);
+
+ err = contacts_record_remove_child_record(cinput_d->contact,
+ _contacts_contact.group_relation, record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_remove_child_record() Failed(%d)", err);
+
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_remove_child_record() Failed(%d)", err);
+ }
+
+ if (cinput_d->ly_group)
+ ct_input_update_group(cinput_d);
+}
+
+static Evas_Object* input_fill_layout_group(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ char display[PH_TEXT_SHORT_LEN];
+ Evas_Object *box = cinput_d->box;
+ Evas_Object *ly_content;
+
+ ly_content = ct_input_create_dg_layout(box, "2text.3");
+ p_retvm_if(NULL == ly_content, NULL, "ct_input_create_dg_layout() return NULL");
+
+ cinput_d->ly_group = ly_content;
+ input_layout_selectable_set(ly_content);
+ evas_object_event_callback_add(ly_content, EVAS_CALLBACK_MOUSE_UP, input_group_mouse_up_cb, cinput_d);
+
+ elm_object_part_text_set(ly_content, "elm.text.1", T_(CT_GET_TEXT_BASIC, CTTEXT_GROUP));
+ ct_detail_get_group_names(cinput_d->contact, display, sizeof(display));
+ elm_object_part_text_set(ly_content, "elm.text.2", display);
+
+ return ly_content;
+}
+
+static Evas_Object* input_fill_layout_ringtone(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ char *temp;
+ const char *display;
+
+ Evas_Object *box = cinput_d->box;
+ Evas_Object *ly_content;
+ int err = CONTACTS_ERROR_NONE;
+
+ ly_content = ct_input_create_dg_layout(box, "2text.3");
+ p_retvm_if(NULL == ly_content, NULL,
+ "ct_input_create_dg_layout() return NULL");
+
+ cinput_d->ly_ringtone = ly_content;
+ input_layout_selectable_set(ly_content);
+ evas_object_event_callback_add(ly_content, EVAS_CALLBACK_MOUSE_UP,
+ input_ringtone_mouse_up_cb, cinput_d);
+
+ /* title */
+ elm_object_part_text_set(ly_content, "elm.text.1",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_RINGTONE));
+
+ /* file name */
+ err = contacts_record_get_str_p(cinput_d->contact,
+ _contacts_contact.ringtone_path, &temp);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_contact_record_get_str_p() Failed(%d)", err);
+
+ display = ct_detail_get_ringtone_display_name(temp);
+ elm_object_part_text_set(ly_content, "elm.text.2", display);
+
+ return ly_content;
+}
+
+static Evas_Object* input_fill_layout_vibration(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ char *vibration = NULL;
+ Evas_Object *box = cinput_d->box;
+ Evas_Object *ly_content;
+ int err = CONTACTS_ERROR_NONE;
+
+ ly_content = ct_input_create_dg_layout(box, "2text.3");
+ p_retvm_if(NULL == ly_content, NULL,
+ "ct_input_create_dg_layout() return NULL");
+
+ cinput_d->ly_vibration = ly_content;
+ input_layout_selectable_set(ly_content);
+ evas_object_event_callback_add(ly_content, EVAS_CALLBACK_MOUSE_UP,
+ input_vibration_mouse_up_cb, cinput_d);
+
+ /* title */
+ elm_object_part_text_set(ly_content, "elm.text.1",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_VIBRATION_PATTERN));
+
+ /* file name */
+ err = contacts_record_get_str_p(cinput_d->contact,
+ _contacts_contact.vibration, &vibration);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_contact_record_get_str_p() Failed(%d)", err);
+
+ elm_object_part_text_set(ly_content, "elm.text.2",
+ T_(CT_GET_TEXT_VIBRATION, ct_detail_vibration_get_msgid(vibration)));
+
+ return ly_content;
+}
+
+static inline void input_refresh_layout(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ cinput_d->idx_append = 0;
+ elm_box_clear(cinput_d->box);
+
+ cinput_d->ly_basic_info = NULL;
+ cinput_d->ly_basic_info_last_name = NULL;
+ cinput_d->ly_basic_info_suffix = NULL;
+ cinput_d->ly_basic_info_nickname = NULL;
+ cinput_d->ly_basic_info_job_title = NULL;
+ cinput_d->ly_basic_info_department = NULL;
+ cinput_d->ly_basic_info_company = NULL;
+ cinput_d->ly_number_first = NULL;
+ cinput_d->ly_number_last = NULL;
+ cinput_d->ly_number_default = NULL;
+ cinput_d->ly_number_set_default_separator_before = NULL;
+ cinput_d->ly_number_set_default = NULL;
+ cinput_d->ly_number_set_default_separator_after = NULL;
+ cinput_d->ly_email_first = NULL;
+ cinput_d->ly_email_last = NULL;
+ cinput_d->ly_addr_first = NULL;
+ cinput_d->ly_addr_last = NULL;
+ cinput_d->ly_seperator_more = NULL;
+ cinput_d->ly_messenger_first = NULL;
+ cinput_d->ly_messenger_last = NULL;
+ cinput_d->ly_url_first = NULL;
+ cinput_d->ly_url_last = NULL;
+ cinput_d->ly_relationship_first = NULL;
+ cinput_d->ly_relationship_last = NULL;
+ cinput_d->ly_event_first = NULL;
+ cinput_d->ly_event_last = NULL;
+ cinput_d->ly_note = NULL;
+ cinput_d->ly_group = NULL;
+ cinput_d->ly_ringtone = NULL;
+ cinput_d->ly_address_book = NULL;
+ cinput_d->ly_moreinfo = NULL;
+
+ input_fill_layout(cinput_d);
+}
+
+static void input_addrbook_item_sel_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char temp[PH_TEXT_SHORT_LEN];
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ ct_ab_popup_data *ab_popup_data;
+
+ elm_genlist_item_selected_set((Elm_Object_Item *) event_info, EINA_FALSE);
+
+ ab_popup_data = (ct_ab_popup_data *) elm_object_item_data_get((Elm_Object_Item *) event_info);
+ p_retm_if(NULL == ab_popup_data, "evas_object_data_get() return NULL");
+
+ if (cinput_d->base_ab != ab_popup_data->id)
+ input_del_group_info(cinput_d);
+
+ cinput_d->base_ab = ab_popup_data->id;
+ cinput_d->base_ab_mode = ab_popup_data->mode;
+
+ free(cinput_d->base_ab_name);
+ cinput_d->base_ab_name = NULL;
+
+ temp[0] = '\0';
+ ctui_get_addressbook_name(ab_popup_data->id, temp, sizeof(temp));
+ if (*temp)
+ cinput_d->base_ab_name = strdup(temp);
+
+ ct_input_remove_empty_fields(cinput_d->contact);
+ input_refresh_layout(cinput_d);
+ if (cinput_d->ly_address_book)
+ {
+ elm_object_part_text_set(cinput_d->ly_address_book, "elm.text.2",
+ cinput_d->base_ab_name);
+ }
+ ct_detail_popup_hide_cb(cinput_d->cdetail_d, NULL, NULL);
+}
+
+static void input_addrbook_mouse_up_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int x, y, w, h;
+ Evas_Object *popup;
+ Evas_Object *btn;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
+
+ p_retm_if(NULL == ev, "ev is NULL");
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+ if (ev->output.y < y || y + h < ev->output.y)
+ return;
+ elm_object_focus_set(cinput_d->cdetail_d->navi, EINA_FALSE);
+
+ popup = ctui_addrbook_popup(cinput_d->cdetail_d->win,
+ input_addrbook_item_sel_cb, cinput_d, CT_AB_POPUP_TYPE_INPUT_VIEW);
+ p_retm_if(NULL == popup, "ctui_addrbook_popup() return NULL");
+ elm_object_part_text_set(popup, "title,text",
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_SAVE_CONTACT_TO));
+
+ btn = elm_button_add(popup);
+ elm_object_text_set(btn, S_(PH_SYS_POP_CLOSE));
+ elm_object_part_content_set(popup, "button1", btn);
+ elm_object_style_set(btn, "popup_button/default");
+ evas_object_smart_callback_add(btn, "clicked", ct_detail_popup_hide_cb,
+ cinput_d->cdetail_d);
+
+ cinput_d->cdetail_d->popup = popup;
+ cinput_d->popup = popup;
+}
+
+static Evas_Object* input_fill_layout_addrbook(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ const char *display;
+ Evas_Object *box = cinput_d->box;
+ Evas_Object *ly_content;
+
+ ly_content = ct_input_create_dg_layout(box, "2text.3");
+ p_retvm_if(NULL == ly_content, NULL,
+ "ct_input_create_dg_layout() return NULL");
+
+ cinput_d->ly_address_book = ly_content;
+ input_layout_selectable_set(ly_content);
+ evas_object_event_callback_add(ly_content, EVAS_CALLBACK_MOUSE_UP,
+ input_addrbook_mouse_up_cb, cinput_d);
+
+ elm_object_part_text_set(ly_content, "elm.text.1",
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_SAVE_CONTACT_TO));
+
+ if (0 == cinput_d->base_ab)
+ display = S_(CT_SYS_BODY_PHONE);
+ else if (cinput_d->base_ab_name)
+ display = cinput_d->base_ab_name;
+ else
+ display = S_(PH_SYS_BODY_UNKNOWN);
+
+ elm_object_part_text_set(ly_content, "elm.text.2", display);
+ return ly_content;
+}
+
+static void input_relationship_unfocused_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char *input;
+ int err = CONTACTS_ERROR_NONE;
+ ct_input_data *cinput_d;
+ ct_input_typed_data *typed_data = (ct_input_typed_data *) data;
+
+ cinput_d = (ct_input_data *) evas_object_data_get(obj, KEY_INPUT_DATA);
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ input = ctui_entry_markup_to_utf8(elm_entry_entry_get(obj));
+ if (input)
+ {
+ err = contacts_record_set_str(typed_data->record,
+ _contacts_relationship.name, input);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+ }
+ free(input);
+}
+
+static void input_relationship_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ const char *tmp;
+
+ tmp = elm_entry_entry_get(obj);
+ p_retm_if(NULL == tmp || '\0' == tmp[0],
+ "elm_entry_entry_get() return NULL");
+
+ evas_object_smart_callback_del(obj, "changed",
+ input_relationship_changed_cb);
+ evas_object_smart_callback_del(obj, "preedit,changed",
+ input_relationship_changed_cb);
+ p_retm_if(NULL == cinput_d, "parameter(ct_input_data) is NULL");
+
+ p_retm_if(NULL == input_new_layout_relationship(*cinput_d),
+ "input_new_layout_relationship() return NULL");
+}
+
+static Evas_Object* input_relationship_get_edit_rename(ct_input_data *cinput_d,
+ ct_input_typed_data *typed_data)
+{
+ PH_TRACE;
+ char *val_str;
+ Evas_Object *entry;
+ Evas_Object *editfield;
+ int err __attribute__ ((unused)) = CONTACTS_ERROR_NONE;
+ Evas_Object *ly_content = typed_data->ly_content;
+
+ editfield = ct_input_add_editfield(ly_content, T_(CT_GET_TEXT_BASIC, CTTEXT_RELATIONSHIP),
+ T_(CT_GET_TEXT_BASIC, CTTEXT_RELATIONSHIP),
+ input_relationship_unfocused_cb, typed_data);
+
+ p_retvm_if(NULL == editfield, NULL, "ct_input_add_editfield() return NULL");
+
+ entry = elm_object_part_content_get(editfield, "elm.swallow.content");
+ typed_data->data = entry;
+
+ evas_object_data_set(entry, KEY_INPUT_DATA, cinput_d);
+ elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+
+ err = contacts_record_get_str_p(typed_data->record,
+ _contacts_relationship.name, &val_str);
+ if (val_str && *val_str)
+ ctui_entry_entry_set(entry, val_str);
+ else
+ {
+ evas_object_smart_callback_add(entry, "changed",
+ input_relationship_changed_cb, cinput_d);
+ evas_object_smart_callback_add(entry, "preedit,changed",
+ input_relationship_changed_cb, cinput_d);
+ }
+ return editfield;
+}
+
+static void input_relationship_select_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d;
+ ct_input_typed_data *typed_data = (ct_input_typed_data *) data;
+ ct_person_list *person_info;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+
+ Evas_Object *editfield;
+ Evas_Object *entry;
+ Evas_Object *btn;
+
+ p_retm_if(!typed_data, "parameter(cinput_d) is NULL");
+
+ person_info = (ct_person_list *) elm_object_item_data_get(item);
+ p_retm_if(NULL == person_info, "elm_object_item_data_get() returns NULL");
+
+ editfield = elm_object_part_content_get(typed_data->ly_content, "elm.icon");
+ entry = elm_object_part_content_get(editfield, "elm.swallow.content");
+
+ if (entry && person_info->display && *person_info->display)
+ ctui_entry_entry_set(entry, person_info->display);
+
+ btn = elm_object_part_content_get(typed_data->ly_content, "elm.icon.edit");
+ cinput_d = (ct_input_data *) evas_object_data_get(btn, KEY_INPUT_DATA);
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+ elm_naviframe_item_pop(cinput_d->cdetail_d->navi);
+}
+
+static void input_relationship_select_contact(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_typed_data *typed_data = (ct_input_typed_data *) data;
+ ct_input_data *cinput_d = (ct_input_data *) evas_object_data_get(obj, KEY_INPUT_DATA);
+ ctui_create_list_single_select_view(cinput_d->win, cinput_d->navi,
+ input_relationship_select_cb, typed_data, 0);
+}
+
+static Evas_Object* input_fill_layout_relationship(ct_input_data *cinput_d,
+ contacts_record_h record)
+{
+ PH_TRACE;
+ int type_int = 0;
+ char *type_str = NULL;
+ Evas_Object *ly_content;
+ Evas_Object *btn_type;
+ Evas_Object *box = cinput_d->box;
+ Evas_Object *ef;
+ Evas_Object *btn;
+ int err = CONTACTS_ERROR_NONE;
+ ct_input_typed_data *typed_data;
+
+ if (!cinput_d->ly_seperator_more)
+ {
+ cinput_d->ly_seperator_more = ct_input_fill_layout_separator(cinput_d,
+ "separator/hd33/with_line");
+ p_retvm_if(NULL == cinput_d->ly_seperator_more, EINA_FALSE,
+ "ct_input_fill_layout_separator() return NULL");
+ elm_box_pack_after(cinput_d->box, cinput_d->ly_seperator_more,
+ cinput_d->ly_addr_last);
+ }
+
+ ly_content = elm_layout_add(box);
+ p_retvm_if(NULL == ly_content, NULL, "elm_layout_add() return NULL");
+ elm_layout_file_set(ly_content, CONTACTS_EDJ, "dialogue/1icon.1type.1edit");
+ evas_object_size_hint_align_set(ly_content, EVAS_HINT_FILL, 0.0);
+ evas_object_show(ly_content);
+
+ err = contacts_record_get_int(record, _contacts_relationship.type,
+ &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ btn_type = elm_button_add(ly_content);
+ if (NULL == btn_type)
+ {
+ ERR("elm_button_add() return NULL");
+ evas_object_del(ly_content);
+ return NULL;
+ }
+
+ if (CONTACTS_RELATIONSHIP_TYPE_CUSTOM == type_int)
+ {
+ err = contacts_record_get_str_p(record, _contacts_relationship.label,
+ &type_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ }
+
+ if (NULL == type_str)
+ type_str = (char *) T_(CT_GET_TEXT_RELATIONSHIP_TYPE, type_int);
+
+ elm_object_text_set(btn_type, type_str);
+ evas_object_data_set(btn_type, KEY_INPUT_DATA, cinput_d);
+ elm_object_part_content_set(ly_content, "elm.icon.type", btn_type);
+
+ typed_data = (ct_input_typed_data *) calloc(1, sizeof(ct_input_typed_data));
+ p_retvm_if(NULL == typed_data, NULL, "calloc() return NULL");
+ typed_data->record = record;
+ typed_data->ly_content = ly_content;
+ typed_data->view_uri = _contacts_relationship._uri;
+
+ evas_object_data_set(ly_content, "typed_data", typed_data);
+ ef = input_relationship_get_edit_rename(cinput_d, typed_data);
+ if (NULL == ef)
+ {
+ ERR("input_website_get_edit_rename() return NULL");
+ evas_object_del(ly_content);
+ free(typed_data);
+ return NULL;
+ }
+ ct_input_add_name_field(ef, cinput_d);
+
+ elm_object_part_content_set(ly_content, "elm.icon", ef);
+ evas_object_event_callback_add(ly_content, EVAS_CALLBACK_DEL,
+ ct_input_typed_layout_del_cb, typed_data);
+ evas_object_smart_callback_add(btn_type, "clicked",
+ ct_input_data_type_clicked_cb, typed_data);
+
+ btn = elm_button_add(ly_content);
+ if (NULL == btn)
+ {
+ ERR("elm_button_add() return NULL");
+ evas_object_del(ly_content);
+ return NULL;
+ }
+ elm_object_part_content_set(ly_content, "elm.icon.edit", btn);
+ evas_object_data_set(btn, KEY_INPUT_DATA, cinput_d);
+ elm_object_style_set(btn, "icon_plus");
+ evas_object_smart_callback_add(btn, "clicked",
+ input_relationship_select_contact, typed_data);
+
+ if (cinput_d->ly_relationship_last)
+ elm_box_pack_after(box, ly_content, cinput_d->ly_relationship_last);
+ else if (cinput_d->ly_url_last)
+ elm_box_pack_after(box, ly_content, cinput_d->ly_url_last);
+ else if (cinput_d->ly_messenger_last)
+ elm_box_pack_after(box, ly_content, cinput_d->ly_messenger_last);
+ else
+ elm_box_pack_after(box, ly_content, cinput_d->ly_seperator_more);
+
+ if (NULL == cinput_d->ly_relationship_first)
+ cinput_d->ly_relationship_first = ly_content;
+ cinput_d->ly_relationship_last = ly_content;
+
+ return ly_content;
+}
+
+static int input_fill_layout_relationship_list(ct_input_data &cinput_d)
+{
+ PH_TRACE;
+ int count = 0;
+ Evas_Object *ly = NULL;
+ contacts_record_h record = NULL;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(cinput_d.contact,
+ _contacts_contact.relationship, count++, &record))
+ {
+ ly = input_fill_layout_relationship(&cinput_d, record);
+ p_retvm_if(NULL == ly, count-1,
+ "input_fill_layout_relationship() return NULL");
+
+ if (NULL == cinput_d.ly_relationship_first)
+ cinput_d.ly_relationship_first = ly;
+ cinput_d.ly_relationship_last = ly;
+ }
+ return count - 1;
+}
+
+static Evas_Object* input_new_layout_relationship(ct_input_data &cinput_d)
+{
+ PH_TRACE;
+
+ contacts_record_h record = ct_input_new_record_relationship(cinput_d.contact);
+ p_retvm_if(NULL == record, NULL, "ct_input_new_record() return NULL");
+
+ Evas_Object * layout = input_fill_layout_relationship(&cinput_d, record);
+ p_retvm_if(NULL == layout, NULL,
+ "input_fill_layout_relationship() return NULL");
+
+ if (NULL == cinput_d.ly_relationship_first)
+ cinput_d.ly_relationship_first = layout;
+ cinput_d.ly_relationship_last = layout;
+
+ return layout;
+}
+
+static Evas_Object* input_fill_layout_event(ct_input_data *cinput_d,
+ contacts_record_h record)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == cinput_d, NULL, "contact input data is NULL");
+ p_retvm_if(NULL == record, NULL, "record is NULL");
+
+ int event_date = 0;
+ int type_int = 0;
+ char *label = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *ly_content = NULL;
+ Evas_Object *btn_minus = NULL;
+ Evas_Object *btn_type = NULL;
+ Evas_Object *box = cinput_d->box;
+ Evas_Object *datetime = NULL;
+ ct_input_typed_data *typed_data = NULL;
+
+ if (!cinput_d->ly_seperator_more)
+ {
+ cinput_d->ly_seperator_more = ct_input_fill_layout_separator(cinput_d,
+ "separator/hd33/with_line");
+ p_retvm_if(NULL == cinput_d->ly_seperator_more, EINA_FALSE,
+ "ct_input_fill_layout_separator() return NULL");
+ elm_box_pack_after(cinput_d->box, cinput_d->ly_seperator_more,
+ cinput_d->ly_addr_last);
+ }
+
+ ly_content = elm_layout_add(box);
+ p_retvm_if(NULL == ly_content, NULL, "elm_layout_add() return NULL");
+ elm_layout_file_set(ly_content, CONTACTS_EDJ, "dialogue/1icon.1type.1edit");
+ evas_object_size_hint_align_set(ly_content, EVAS_HINT_FILL, 0.0);
+ evas_object_show(ly_content);
+
+ /* datetime */
+ datetime = elm_datetime_add(ly_content);
+ p_retvm_if(NULL == datetime, NULL, "elm_datetime_add() return NULL");
+
+ elm_datetime_field_visible_set(datetime, ELM_DATETIME_HOUR, EINA_FALSE);
+ elm_datetime_field_visible_set(datetime, ELM_DATETIME_MINUTE, EINA_FALSE);
+ elm_datetime_field_visible_set(datetime, ELM_DATETIME_AMPM, EINA_FALSE);
+
+ //elm_object_part_content_set(ly_content, "elm.flip.content", datetime);
+ elm_object_part_content_set(ly_content, "elm.icon", datetime);
+ evas_object_data_set(datetime, KEY_INPUT_DATA, cinput_d);
+
+ err = contacts_record_get_int(record, _contacts_event.type, &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ btn_type = elm_button_add(ly_content);
+ if (NULL == btn_type)
+ {
+ ERR("elm_button_add() return NULL");
+ evas_object_del(ly_content);
+ return NULL;
+ }
+ if (type_int == CONTACTS_EVENT_TYPE_CUSTOM)
+ {
+ err = contacts_record_get_str_p(record, _contacts_event.label, &label);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ elm_object_text_set(btn_type, label);
+ }
+ else
+ {
+ elm_object_text_set(btn_type, T_(CT_GET_TEXT_EVENT_TYPE, type_int));
+ }
+ evas_object_data_set(btn_type, "cinput_d", cinput_d);
+ elm_object_part_content_set(ly_content, "elm.icon.type", btn_type);
+
+ typed_data = (ct_input_typed_data *) calloc(1, sizeof(ct_input_typed_data));
+ p_retvm_if(NULL == typed_data, NULL, "calloc() return NULL");
+ typed_data->record = record;
+ typed_data->ly_content = ly_content;
+ typed_data->view_uri = _contacts_event._uri;
+ evas_object_data_set(ly_content, "typed_data", typed_data);
+ evas_object_data_set(datetime, "typed_data", typed_data);
+
+ err = contacts_record_get_int(record, _contacts_event.date, &event_date);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if (0 == event_date)
+ { // new record
+ time_t timer;
+ struct tm *stime = NULL;
+ timer = time(NULL);
+ stime = localtime(&timer);
+ p_retvm_if(NULL == stime, NULL, "localtime() Failed(%d)", errno);
+ elm_datetime_value_set(datetime, stime);
+ }
+ else
+ {
+ struct tm stime = { 0 };
+ stime.tm_year = event_date / 10000 - 1900;
+ stime.tm_mon = (event_date % 10000) / 100 - 1;
+ stime.tm_mday = event_date % 100;
+ elm_datetime_value_set(datetime, &stime);
+
+ btn_minus = elm_button_add(ly_content);
+ if (NULL == btn_minus)
+ {
+ ERR("elm_button_add() return NULL");
+ evas_object_del(ly_content);
+ free(typed_data);
+ return NULL;
+ }
+ elm_object_style_set(btn_minus, "minus");
+ evas_object_data_set(btn_minus, "typed_data", typed_data);
+ elm_object_part_content_set(ly_content, "elm.icon.edit", btn_minus);
+ evas_object_smart_callback_add(btn_minus, "clicked",
+ input_event_del_clicked_cb, cinput_d);
+ }
+
+ evas_object_smart_callback_add(datetime, "changed", input_event_changed_cb,
+ cinput_d);
+ evas_object_event_callback_add(ly_content, EVAS_CALLBACK_DEL,
+ ct_input_typed_layout_del_cb, typed_data);
+ evas_object_smart_callback_add(btn_type, "clicked",
+ ct_input_data_type_clicked_cb, typed_data);
+
+ if (cinput_d->ly_event_last)
+ elm_box_pack_after(cinput_d->box, ly_content, cinput_d->ly_event_last);
+ else if (cinput_d->ly_relationship_last)
+ elm_box_pack_after(cinput_d->box, ly_content,
+ cinput_d->ly_relationship_last);
+ else if (cinput_d->ly_url_last)
+ elm_box_pack_after(cinput_d->box, ly_content, cinput_d->ly_url_last);
+ else if (cinput_d->ly_messenger_last)
+ elm_box_pack_after(cinput_d->box, ly_content,
+ cinput_d->ly_messenger_last);
+ else
+ elm_box_pack_after(cinput_d->box, ly_content,
+ cinput_d->ly_seperator_more);
+
+ return ly_content;
+}
+
+static int input_fill_layout_event_list(ct_input_data &cinput_d)
+{
+ PH_TRACE;
+ int count = 0;
+ contacts_record_h record = NULL;
+ Evas_Object *ly;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(cinput_d.contact,
+ _contacts_contact.event, count++, &record))
+ {
+ ly = input_fill_layout_event(&cinput_d, record);
+ p_retvm_if(NULL == ly, count, "input_fill_layout_event() return NULL");
+
+ if (NULL == cinput_d.ly_event_first)
+ cinput_d.ly_event_first = ly;
+
+ cinput_d.ly_event_last = ly;
+ }
+ return count - 1;
+}
+
+static Evas_Object* input_new_layout_event(ct_input_data &cinput_d)
+{
+ PH_TRACE;
+
+ contacts_record_h record = ct_input_new_record_event(cinput_d.contact);
+ p_retvm_if(NULL == record, NULL, "ct_input_new_record_event() return NULL");
+
+ Evas_Object * layout = input_fill_layout_event(&cinput_d, record);
+ p_retvm_if(NULL == layout, NULL, "input_fill_layout_event() return NULL");
+
+ if (NULL == cinput_d.ly_event_first)
+ cinput_d.ly_event_first = layout;
+ cinput_d.ly_event_last = layout;
+
+ return layout;
+}
+
+static void input_website_del(ct_input_data *cinput_d,
+ ct_input_typed_data *typed_data)
+{
+ PH_TRACE;
+ int idx;
+ int err = CONTACTS_ERROR_NONE;
+ Eina_List *list = NULL;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+ p_retm_if(NULL == typed_data, "parameter(typed_data) is NULL");
+
+ err = contacts_record_remove_child_record(cinput_d->contact,
+ _contacts_contact.url, typed_data->record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_remove_child_record() Failed(%d)", err);
+
+ if (typed_data->ly_content == cinput_d->ly_url_first)
+ {
+ idx = ct_input_box_idx_get(cinput_d->box, typed_data->ly_content);
+ list = elm_box_children_get(cinput_d->box);
+ cinput_d->ly_url_first = (Evas_Object *) eina_list_nth(list, idx + 1);
+ eina_list_free(list);
+ }
+
+ err = contacts_record_destroy(typed_data->record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ elm_box_unpack(cinput_d->box, typed_data->ly_content);
+ evas_object_del(typed_data->ly_content);
+}
+
+static void input_website_del_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ ct_input_typed_data *typed_data;
+
+ p_retm_if(NULL == cinput_d, "parameter(cinput_d) is NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ input_website_del(cinput_d, typed_data);
+
+}
+
+static void input_website_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ Evas_Object *btn_minus;
+ ct_input_typed_data *typed_data;
+ const char *tmp;
+
+ tmp = elm_entry_entry_get(obj);
+ p_retm_if(NULL == tmp || '\0' == tmp[0],
+ "elm_entry_entry_get() return NULL");
+
+ evas_object_smart_callback_del(obj, "changed", input_website_changed_cb);
+ p_retm_if(NULL == cinput_d, "parameter(ct_input_data) is NULL");
+
+ typed_data = (ct_input_typed_data *) evas_object_data_get(obj, "typed_data");
+ p_retm_if(NULL == typed_data, "evas_object_data_get() return NULL");
+
+ if (typed_data->ly_content == cinput_d->ly_url_last)
+ {
+ btn_minus = elm_button_add(typed_data->ly_content);
+ p_retm_if(NULL == btn_minus, "elm_button_add() return NULL");
+
+ elm_object_style_set(btn_minus, "minus");
+ evas_object_data_set(btn_minus, "typed_data", typed_data);
+ elm_object_part_content_set(typed_data->ly_content, "elm.icon.edit",
+ btn_minus);
+ evas_object_smart_callback_add(btn_minus, "clicked",
+ input_website_del_clicked_cb, cinput_d);
+
+ p_retm_if(NULL == input_new_layout_website(cinput_d),
+ "input_new_layout_website() return NULL");
+ }
+
+}
+
+static Evas_Object *input_website_get_edit_rename(ct_input_data *cinput_d,
+ ct_input_typed_data *typed_data)
+{
+ PH_TRACE;
+ char *val_str;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *entry;
+ Evas_Object *editfield;
+ Evas_Object *ly_content = typed_data->ly_content;
+
+ editfield = ct_input_add_editfield(ly_content, T_(CT_GET_TEXT_BASIC, CTTEXT_URL),
+ T_(CT_GET_TEXT_BASIC, CTTEXT_URL), input_website_unfocused_cb,
+ typed_data->record);
+ p_retvm_if(NULL == editfield, NULL, "ct_input_add_editfield() return NULL");
+
+ entry = elm_object_part_content_get(editfield, "elm.swallow.content");
+ typed_data->data = entry;
+
+ evas_object_data_set(entry, "typed_data", typed_data);
+ evas_object_data_set(entry, KEY_INPUT_DATA, cinput_d);
+ elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_URL);
+
+ err = contacts_record_get_str_p(typed_data->record, _contacts_url.url,
+ &val_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (val_str && *val_str)
+ ctui_entry_entry_set(entry, val_str);
+ else
+ evas_object_smart_callback_add(entry, "changed",
+ input_website_changed_cb, cinput_d);
+ return editfield;
+
+}
+
+static Evas_Object* input_fill_layout_url(ct_input_data *cinput_d,
+ contacts_record_h record)
+{
+ PH_TRACE;
+ char *custom_type;
+ char *val_str;
+ int type_int;
+ Evas_Object *ly_content;
+ Evas_Object *box = cinput_d->box;
+ Evas_Object *ef;
+ Evas_Object *btn_type;
+ Evas_Object *btn_minus;
+ int err = CONTACTS_ERROR_NONE;
+ ct_input_typed_data *typed_data;
+
+ if (!cinput_d->ly_seperator_more)
+ {
+ cinput_d->ly_seperator_more = ct_input_fill_layout_separator(cinput_d,
+ "separator/hd33/with_line");
+ p_retvm_if(NULL == cinput_d->ly_seperator_more, EINA_FALSE,
+ "ct_input_fill_layout_separator() return NULL");
+ elm_box_pack_after(cinput_d->box, cinput_d->ly_seperator_more,
+ cinput_d->ly_addr_last);
+ }
+
+ ly_content = elm_layout_add(box);
+ p_retvm_if(NULL == ly_content, NULL, "elm_layout_add() return NULL");
+ elm_layout_file_set(ly_content, CONTACTS_EDJ, "dialogue/1icon.1type.1edit");
+ evas_object_size_hint_align_set(ly_content, EVAS_HINT_FILL, 0.0);
+ evas_object_show(ly_content);
+
+ err = contacts_record_get_int(record, _contacts_url.type, &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ btn_type = elm_button_add(ly_content);
+ if (NULL == btn_type)
+ {
+ ERR("elm_button_add() return NULL");
+ evas_object_del(ly_content);
+ return NULL;
+ }
+
+ custom_type =
+ (char *) T_(CT_GET_TEXT_WEBSITE_TYPE, phone_get_website_type_index(type_int));
+ if (CONTACTS_URL_TYPE_CUSTOM == type_int)
+ {
+ err = contacts_record_get_str_p(record, _contacts_url.label,
+ &custom_type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (NULL == custom_type || '\0' == custom_type[0])
+ custom_type =
+ (char *) T_(CT_GET_TEXT_WEBSITE_TYPE, phone_get_website_type_index(CONTACTS_URL_TYPE_OTHER));
+ }
+ elm_object_text_set(btn_type, custom_type);
+
+ evas_object_data_set(btn_type, KEY_INPUT_DATA, cinput_d);
+ elm_object_part_content_set(ly_content, "elm.icon.type", btn_type);
+
+ typed_data = (ct_input_typed_data *) calloc(1, sizeof(ct_input_typed_data));
+ p_retvm_if(NULL == typed_data, NULL, "calloc() return NULL");
+
+ typed_data->record = record;
+ typed_data->ly_content = ly_content;
+ typed_data->view_uri = _contacts_url._uri;
+ evas_object_data_set(ly_content, "typed_data", typed_data);
+
+ err = contacts_record_get_str_p(record, _contacts_url.url, &val_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ if (val_str && *val_str)
+ {
+ btn_minus = elm_button_add(ly_content);
+ if (NULL == btn_minus)
+ {
+ ERR("elm_button_add() return NULL");
+ evas_object_del(ly_content);
+ free(typed_data);
+ return NULL;
+ }
+ elm_object_style_set(btn_minus, "minus");
+ evas_object_data_set(btn_minus, "typed_data", typed_data);
+ elm_object_part_content_set(ly_content, "elm.icon.edit", btn_minus);
+ evas_object_smart_callback_add(btn_minus, "clicked",
+ input_website_del_clicked_cb, cinput_d);
+ }
+
+ ef = input_website_get_edit_rename(cinput_d, typed_data);
+ if (NULL == ef)
+ {
+ ERR("input_website_get_edit_rename() return NULL");
+ evas_object_del(ly_content);
+ free(typed_data);
+ return NULL;
+ }
+ ct_input_add_name_field(ef, cinput_d);
+
+ elm_object_part_content_set(ly_content, "elm.icon", ef);
+ evas_object_event_callback_add(ly_content, EVAS_CALLBACK_DEL,
+ ct_input_typed_layout_del_cb, typed_data);
+ evas_object_smart_callback_add(btn_type, "clicked",
+ ct_input_data_type_clicked_cb, typed_data);
+
+ if (cinput_d->ly_url_last)
+ elm_box_pack_after(box, ly_content, cinput_d->ly_url_last);
+ else
+ {
+ if (cinput_d->ly_messenger_last)
+ elm_box_pack_after(box, ly_content, cinput_d->ly_messenger_last);
+ else
+ elm_box_pack_after(box, ly_content, cinput_d->ly_seperator_more);
+ }
+
+ return ly_content;
+}
+
+static Evas_Object* input_new_layout_website(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ Evas_Object *layout;
+
+ record = ct_input_new_record_web(cinput_d->contact);
+ p_retvm_if(NULL == record, NULL, "ct_input_new_record_web() return NULL");
+
+ layout = input_fill_layout_url(cinput_d, record);
+ p_retvm_if(NULL == layout, NULL, "input_fill_layout_url() return NULL");
+
+ if (NULL == cinput_d->ly_url_first)
+ cinput_d->ly_url_first = layout;
+ cinput_d->ly_url_last = layout;
+
+ return layout;
+}
+
+static int input_fill_layout_websites(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ int count = 0;
+ Evas_Object *ly;
+ contacts_record_h record = NULL;
+
+ ly = NULL;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(cinput_d->contact,
+ _contacts_contact.url, count++, &record))
+ {
+ ly = input_fill_layout_url(cinput_d, record);
+ p_retvm_if(NULL == ly, count-1, "input_fill_layout_url() return NULL");
+
+ if (NULL == cinput_d->ly_url_first)
+ cinput_d->ly_url_first = ly;
+ cinput_d->ly_url_last = ly;
+ }
+ return count - 1;
+}
+
+inline static Evas_Object* input_fill_layout_nickname(ct_input_data & cinput_d)
+{
+ PH_TRACE;
+
+ if (!cinput_d.ly_seperator_more)
+ {
+ cinput_d.ly_seperator_more = ct_input_fill_layout_separator(&cinput_d,
+ "separator/hd33/with_line");
+ p_retvm_if(NULL == cinput_d.ly_seperator_more, EINA_FALSE,
+ "ct_input_fill_layout_separator() return NULL");
+ elm_box_pack_after(cinput_d.box, cinput_d.ly_seperator_more,
+ cinput_d.ly_addr_last);
+ }
+
+ Evas_Object *box = cinput_d.box;
+ Evas_Object * ly_content = ct_input_create_dg_layout(box, "1icon");
+ p_retvm_if(NULL == ly_content, NULL,
+ "ct_input_create_dg_layout() return NULL");
+ evas_object_size_hint_align_set(ly_content, EVAS_HINT_FILL, 0.0);
+ evas_object_show(ly_content);
+
+ contacts_record_h record = ct_input_get_record_nickname(cinput_d.contact);
+ p_retvm_if(NULL == record, NULL, "ct_input_get_record_nickname() return NULL");
+
+ Evas_Object * ef = ctui_create_editfield(ly_content, T_(CT_GET_TEXT_BASIC, CTTEXT_NICKNAME),
+ T_(CT_GET_TEXT_BASIC, CTTEXT_NICKNAME), true);
+ p_retvm_if(NULL == ef, NULL, "ctui_create_editfield() return NULL");
+ ct_input_add_name_field(ef, &cinput_d);
+
+ Evas_Object * en = elm_object_part_content_get(ef, "elm.swallow.content");
+ evas_object_smart_callback_add(en, "unfocused", input_nickname_unfocused_cb,
+ record);
+ evas_object_smart_callback_add(en, "changed", ct_input_entry_changed_cb,
+ ef);
+ elm_object_part_content_set(ly_content, "elm.icon", ef);
+ evas_object_data_set(en, KEY_INPUT_DATA, &cinput_d);
+
+ char *nicknameStr = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ err = contacts_record_get_str_p(record, _contacts_nickname.name, &nicknameStr);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ char * nickNameMarkup = elm_entry_utf8_to_markup(nicknameStr);
+ __input_editfield_entry_set(ef, nickNameMarkup);
+ if(nickNameMarkup)
+ {
+ free(nickNameMarkup);
+ }
+
+ if(cinput_d.ly_addr_last)
+ {
+ elm_box_pack_after(cinput_d.box, ly_content, cinput_d.ly_addr_last);
+ }
+ else if (cinput_d.ly_addr_first)
+ {
+ elm_box_pack_after(cinput_d.box, ly_content, cinput_d.ly_addr_first);
+ }
+ else
+ {
+ elm_box_pack_after(cinput_d.box, ly_content, cinput_d.ly_seperator_more);
+ }
+
+ cinput_d.ly_basic_info_nickname = ly_content;
+
+ return ly_content;
+}
+
+static Evas_Object* input_fill_layout_note(ct_input_data & cinput_d)
+{
+ PH_TRACE;
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ if (!cinput_d.ly_seperator_more)
+ {
+ cinput_d.ly_seperator_more = ct_input_fill_layout_separator(&cinput_d,
+ "separator/hd33/with_line");
+ p_retvm_if(NULL == cinput_d.ly_seperator_more, EINA_FALSE,
+ "ct_input_fill_layout_separator() return NULL");
+ elm_box_pack_after(cinput_d.box, cinput_d.ly_seperator_more,
+ cinput_d.ly_addr_last);
+ }
+
+ Evas_Object *box = cinput_d.box;
+ Evas_Object * ly_content = ct_input_create_dg_layout(box, "1icon");
+ p_retvm_if(NULL == ly_content, NULL,
+ "ct_input_create_dg_layout() return NULL");
+ evas_object_size_hint_align_set(ly_content, EVAS_HINT_FILL, 0.0);
+ evas_object_show(ly_content);
+
+ record = ct_input_get_record_note(cinput_d.contact);
+ p_retvm_if(NULL == record, NULL, "ct_input_get_record_note() return NULL");
+
+ Evas_Object * ef = ctui_create_editfield(ly_content, T_(CT_GET_TEXT_BASIC, CTTEXT_NOTE),
+ T_(CT_GET_TEXT_BASIC, CTTEXT_NOTE), true);
+ p_retvm_if(NULL == ef, NULL, "ctui_create_editfield() return NULL");
+ ct_input_add_name_field(ef, &cinput_d);
+
+ Evas_Object * en = elm_object_part_content_get(ef, "elm.swallow.content");
+ evas_object_smart_callback_add(en, "unfocused", input_note_unfocused_cb,
+ record);
+ evas_object_smart_callback_add(en, "changed", ct_input_entry_changed_cb,
+ ef);
+ elm_object_part_content_set(ly_content, "elm.icon", ef);
+ evas_object_data_set(en, KEY_INPUT_DATA, &cinput_d);
+
+ char *note_str = NULL;
+ err = contacts_record_get_str_p(record, _contacts_note.note, &note_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ __input_editfield_entry_set(ef, note_str);
+
+ if (cinput_d.ly_event_last)
+ elm_box_pack_after(cinput_d.box, ly_content, cinput_d.ly_event_last);
+ else if (cinput_d.ly_relationship_last)
+ elm_box_pack_after(cinput_d.box, ly_content,
+ cinput_d.ly_relationship_last);
+ else if (cinput_d.ly_url_last)
+ elm_box_pack_after(cinput_d.box, ly_content, cinput_d.ly_url_last);
+ else if (cinput_d.ly_messenger_last)
+ elm_box_pack_after(cinput_d.box, ly_content,
+ cinput_d.ly_messenger_last);
+ else
+ elm_box_pack_after(cinput_d.box, ly_content,
+ cinput_d.ly_seperator_more);
+
+ cinput_d.ly_note = ly_content;
+
+ return ly_content;
+}
+
+static Evas_Object* input_fill_layout_addresses(ct_input_data & cinput_d)
+{
+ PH_TRACE;
+ int count = 0;
+ Evas_Object *layout = NULL;
+ contacts_record_h record = NULL;
+
+ while (CONTACTS_ERROR_NONE
+ == contacts_record_get_child_record_at_p(cinput_d.contact,
+ _contacts_contact.address, count++, &record))
+ {
+ layout = input_fill_layout_address(&cinput_d, record);
+ p_retvm_if(NULL == layout, NULL,
+ "input_fill_layout_address() return NULL");
+
+ if (NULL == cinput_d.ly_addr_first)
+ cinput_d.ly_addr_first = layout;
+ cinput_d.ly_addr_last = layout;
+ }
+
+ p_retvm_if(NULL == input_new_layout_address(&cinput_d), NULL,
+ "input_new_layout_address() return NULL");
+
+ return layout;
+}
+
+static void input_update_moreinfo(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ p_ret_if(!cinput_d);
+ p_ret_if(!cinput_d->ly_moreinfo);
+
+ if (cinput_d->ly_event_last && cinput_d->add_department
+ && cinput_d->add_job_title && cinput_d->ly_messenger_last
+ && cinput_d->ly_note && cinput_d->ly_url_last && cinput_d->ly_basic_info_nickname)
+ {
+
+ evas_object_del(cinput_d->ly_moreinfo);
+ }
+}
+
+static void input_moreinfo_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+
+ assert(obj);
+ if(obj)
+ {
+ int field = (int) data;
+ ct_input_data *cinput_d = (ct_input_data *) evas_object_data_get(obj, KEY_INPUT_DATA);;
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ Evas_Object *btn_expand = NULL;
+
+ ct_detail_popup_hide_cb(cinput_d, NULL, NULL);
+
+ switch (field)
+ {
+ case INPUT_MORE_ORGANIZATION:
+ // Expand basic info
+ btn_expand = elm_object_part_content_get(cinput_d->ly_basic_info, "elm.edit.icon");
+ __input_basic_info_expand_clicked_cb(cinput_d, btn_expand, NULL);
+ break;
+ case INPUT_MORE_NICKNAME:
+ // Expand basic info
+ btn_expand = elm_object_part_content_get(cinput_d->ly_basic_info, "elm.edit.icon");
+ __input_basic_info_expand_clicked_cb(cinput_d, btn_expand, NULL);
+ break;
+ case INPUT_MORE_MESSENGER:
+ input_new_layout_messenger(cinput_d);
+ break;
+ case INPUT_MORE_URL:
+ input_new_layout_website(cinput_d);
+ break;
+ case INPUT_MORE_RELATIONSHIP:
+ input_new_layout_relationship(*cinput_d);
+ break;
+ case INPUT_MORE_EVENT:
+ input_new_layout_event(*cinput_d);
+ break;
+ case INPUT_MORE_NOTE:
+ input_fill_layout_note(*cinput_d);
+ break;
+ default:
+ // Do nothing
+ break;
+ }
+
+ input_update_moreinfo(cinput_d);
+ }
+}
+
+static void onAddAnotherFieldButtonClick(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+
+ assert(data && event_info && e && obj);
+ if(data && event_info && e && obj)
+ {
+ // Get data
+ ct_input_data *cinput_d = (ct_input_data *) data;
+ Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
+
+ int x, y, w, h;
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+ if (ev->output.y < y || y + h < ev->output.y)
+ return;
+
+ elm_object_tree_focus_allow_set(cinput_d->navi, EINA_FALSE);
+
+ if (cinput_d->popup)
+ {
+ ct_detail_popup_hide_cb(cinput_d, NULL, NULL);
+ }
+
+ cinput_d->popup = elm_ctxpopup_add(cinput_d->cdetail_d->navi);
+ p_retm_if(NULL == cinput_d->popup, "elm_ctxpopup_add() return NULL");
+
+ int rotate = (int) evas_object_data_get(cinput_d->cdetail_d->navi, "phone_rotate");
+ if (rotate == 0 || rotate == 180)
+ {
+ elm_ctxpopup_direction_priority_set(cinput_d->popup,
+ ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP,
+ ELM_CTXPOPUP_DIRECTION_LEFT, ELM_CTXPOPUP_DIRECTION_RIGHT);
+ }
+
+ if (cinput_d->keypad_on == true)
+ {
+ if (rotate == 0 || rotate == 180)
+ {
+ evas_object_move(cinput_d->popup, x + (w / 2),
+ CT_INPUT_MOREINFO_PORTRAIT_Y + (h / 2));
+ }
+ else
+ {
+ evas_object_move(cinput_d->popup, x + (w / 2),
+ CT_INPUT_MOREINFO_LANDSCAPE_Y + (h / 2));
+ }
+ }
+ else
+ {
+ evas_object_move(cinput_d->popup, x + (w / 2), y + (h / 2));
+ }
+
+ evas_object_smart_callback_add(cinput_d->popup, "dismissed",
+ ct_detail_popup_hide_cb, cinput_d);
+
+ evas_object_data_set(cinput_d->popup, KEY_INPUT_DATA, cinput_d);
+
+ // Fill popup with buttons
+ if (!cinput_d->ly_basic_info_nickname)
+ {
+ elm_ctxpopup_item_append(cinput_d->popup,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_NICKNAME), NULL,
+ input_moreinfo_cb, (void *) INPUT_MORE_NICKNAME);
+ }
+ if (!cinput_d->ly_basic_info_job_title && !cinput_d->ly_basic_info_company)
+ {
+ elm_ctxpopup_item_append(cinput_d->popup,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_ORGANIZATION), NULL,
+ input_moreinfo_cb, (void *) INPUT_MORE_ORGANIZATION);
+ }
+ if (!cinput_d->ly_messenger_last)
+ {
+ elm_ctxpopup_item_append(cinput_d->popup,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_INSTANT_MESSENGER), NULL,
+ input_moreinfo_cb, (void *) INPUT_MORE_MESSENGER);
+ }
+ if (!cinput_d->ly_url_last)
+ {
+ elm_ctxpopup_item_append(cinput_d->popup,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_URL), NULL, input_moreinfo_cb,
+ (void *) INPUT_MORE_URL);
+ }
+ if (!cinput_d->ly_note)
+ {
+ elm_ctxpopup_item_append(cinput_d->popup,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_NOTE), NULL,
+ input_moreinfo_cb, (void *) INPUT_MORE_NOTE);
+ }
+
+ if (!cinput_d->ly_event_last) // TODO: Fixme
+ {
+ elm_ctxpopup_item_append(cinput_d->popup,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_EVENT), NULL,
+ input_moreinfo_cb, (void *) INPUT_MORE_EVENT);
+ }
+
+ if (!cinput_d->ly_relationship_last)
+ {
+ elm_ctxpopup_item_append(cinput_d->popup,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_RELATIONSHIP), NULL,
+ input_moreinfo_cb, (void *) INPUT_MORE_RELATIONSHIP);
+ }
+
+ evas_object_show(cinput_d->popup);
+ }
+}
+
+static Evas_Object* input_fill_layout_moreinfo(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ // TODO: Fixme
+ /*
+ Evas_Object *button;
+ Evas_Object *box = cinput_d->box;
+ Evas_Object *ly_content;
+
+ ly_content = ct_input_create_dg_layout(box, "bg/1icon");
+ p_retvm_if(NULL == ly_content, NULL, "ct_input_create_dg_layout() return NULL");
+
+ button = elm_button_add(box);
+ p_retvm_if(NULL == button, NULL, "elm_button_add() return NULL");
+ elm_object_text_set(button, T_(CT_GET_TEXT_BASIC, CTTEXT_MORE_INFORMATION));
+ elm_object_part_content_set(ly_content, "elm.icon", button);
+ evas_object_smart_callback_add(button, "clicked", onAddAnotherFieldButtonClick, cinput_d);
+
+ cinput_d->ly_moreinfo = ly_content;
+ return ly_content;
+ */
+ Evas_Object *box = cinput_d->box;
+ Evas_Object *ly_content;
+
+ ly_content = ct_input_create_dg_layout(box, "1text");
+ p_retvm_if(NULL == ly_content, NULL,
+ "ct_input_create_dg_layout() return NULL");
+
+ input_layout_selectable_set(ly_content);
+ evas_object_event_callback_add(ly_content, EVAS_CALLBACK_MOUSE_UP,
+ onAddAnotherFieldButtonClick, cinput_d);
+ elm_object_part_text_set(ly_content, "elm.text",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_MORE_INFORMATION));
+
+ cinput_d->ly_moreinfo = ly_content;
+ return ly_content;
+}
+
+inline static std::string getNicknameFromDB(contacts_record_h record)
+{
+ PH_TRACE;
+
+ std::string result;
+
+ char * nicknameStr = NULL;
+ int errCode = contacts_record_get_str_p(record, _contacts_nickname.name, &nicknameStr);
+ p_warn_if(CONTACTS_ERROR_NONE != errCode, "contacts_record_get_str_p() Failed(%d)", errCode);
+
+ if(nicknameStr)
+ {
+ result = nicknameStr;
+ }
+
+ return result;
+}
+
+static void input_fill_layout(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ int i;
+ int cnt;
+ char *str;
+ Evas_Object *layout;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ for (i = cinput_d->idx_append; i < INPUT_ITEMS_MAX; i++)
+ {
+ switch (i)
+ {
+ case INPUT_IMAGE:
+ layout = __input_fill_layout_image(cinput_d);
+ p_retm_if(NULL == layout,
+ "__input_fill_layout_image() return NULL");
+ elm_box_pack_end(cinput_d->box, layout);
+ break;
+ case INPUT_BASIC_INFO:
+ record = ct_input_get_record_company(cinput_d->contact);
+ if (record)
+ {
+ if (!cinput_d->add_department)
+ {
+ err = contacts_record_get_str_p(record,
+ _contacts_company.department, &str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ if (str && *str)
+ cinput_d->add_department = true;
+ }
+ if (!cinput_d->add_job_title)
+ {
+ err = contacts_record_get_str_p(record,
+ _contacts_company.job_title, &str);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ if (str && *str)
+ cinput_d->add_job_title = true;
+ }
+ }
+ layout = __input_fill_layout_basic_info(cinput_d);
+ p_retm_if(NULL == layout,
+ "__input_fill_layout_basic_info() return NULL");
+ elm_box_pack_end(cinput_d->box, layout);
+
+ if (!cinput_d->ly_seperator_basic_info)
+ {
+ cinput_d->ly_seperator_basic_info =
+ ct_input_fill_layout_separator(cinput_d,
+ "separator/hd18/with_line");
+ p_retm_if(NULL == layout,
+ "ct_input_fill_layout_separator() return NULL");
+ elm_box_pack_end(cinput_d->box,
+ cinput_d->ly_seperator_basic_info);
+ }
+ break;
+
+ case INPUT_NUMBER:
+ ct_input_fill_layout_numbers(cinput_d);
+ break;
+
+ case INPUT_EMAIL:
+ ct_input_fill_layout_emails(cinput_d);
+ break;
+
+ case INPUT_ADDRESS:
+ input_fill_layout_addresses(*cinput_d);
+ break;
+
+ case INPUT_NICKNAME:
+ // Do nothing
+ break;
+ case INPUT_MESSENGER:
+ cnt = input_fill_layout_messengers(cinput_d);
+ if (cnt)
+ {
+ input_new_layout_messenger(cinput_d);
+ }
+ break;
+
+ case INPUT_URL:
+ cnt = input_fill_layout_websites(cinput_d);
+ if (cnt)
+ {
+ input_new_layout_website(cinput_d);
+ }
+ break;
+ case INPUT_RELATIONSHIP:
+ cnt = input_fill_layout_relationship_list(*cinput_d);
+ if (cnt)
+ input_new_layout_relationship(*cinput_d);
+ break;
+ case INPUT_EVENT:
+ cnt = input_fill_layout_event_list(*cinput_d);
+ if (cnt)
+ input_new_layout_event(*cinput_d);
+ break;
+ case INPUT_NOTE:
+ if (cinput_d->cdetail_d->list_note)
+ input_fill_layout_note(*cinput_d);
+ break;
+ case INPUT_GROUP:
+ layout = ct_input_fill_layout_separator(cinput_d,
+ "separator/hd33/with_line");
+ p_retm_if(NULL == layout,
+ "ct_input_fill_layout_separator() return NULL");
+ elm_box_pack_end(cinput_d->box, layout);
+
+ /* group */
+ layout = input_fill_layout_group(cinput_d);
+ p_retm_if(NULL == layout,
+ "input_fill_layout_group() return NULL");
+ elm_box_pack_end(cinput_d->box, layout);
+ break;
+
+ case INPUT_RINGTONE:
+ /* ringtone */
+ layout = input_fill_layout_ringtone(cinput_d);
+ p_retm_if(NULL == layout,
+ "input_fill_layout_ringtone() return NULL");
+ elm_box_pack_end(cinput_d->box, layout);
+ break;
+
+ case INPUT_VIBRATION:
+ /* vibration */
+ layout = input_fill_layout_vibration(cinput_d);
+ p_retm_if(NULL == layout,
+ "input_fill_layout_vibration() return NULL");
+ elm_box_pack_end(cinput_d->box, layout);
+ break;
+
+ case INPUT_ADDRBOOK:
+ /* address book */
+ if (0 == cinput_d->contact_id)
+ {
+ layout = input_fill_layout_addrbook(cinput_d);
+ p_retm_if(NULL == layout,
+ "input_fill_layout_addrbook() return NULL");
+ elm_box_pack_end(cinput_d->box, layout);
+
+ }
+ break;
+
+ case INPUT_MORE_INFO:
+ if (cinput_d->add_job_title && cinput_d->add_department
+ && cinput_d->ly_messenger_last && cinput_d->ly_url_last
+ && cinput_d->ly_relationship_last
+ && cinput_d->ly_event_last && cinput_d->ly_note)
+ break;
+
+ layout = ct_input_fill_layout_separator(cinput_d,
+ "separator/hd16");
+ p_retm_if(NULL == layout,
+ "ct_input_fill_layout_separator() return NULL");
+ elm_box_pack_end(cinput_d->box, layout);
+
+ layout = input_fill_layout_moreinfo(cinput_d);
+ p_retm_if(NULL == layout,
+ "input_fill_layout_moreinfo() return NULL");
+ elm_box_pack_end(cinput_d->box, layout);
+
+ layout = ct_input_fill_layout_separator(cinput_d,
+ "separator/hd16");
+ p_retm_if(NULL == layout,
+ "ct_input_fill_layout_separator() return NULL");
+ elm_box_pack_end(cinput_d->box, layout);
+
+ input_update_moreinfo(cinput_d);
+ break;
+
+ default:
+ ERR("Unknown item(%d)", i);
+ }
+ }
+}
+
+static Evas_Object* input_create_layout(ct_input_data *cinput_d)
+{
+ PH_TRACE;
+ char temp[PH_TEXT_MAX_LEN];
+ Evas_Object *box;
+ Evas_Object *scroller;
+ Evas_Object *layout;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record_addressbook = NULL;
+ ct_detail_data *cdetail_d = cinput_d->cdetail_d;
+
+ layout = phone_create_base_layout(cdetail_d->navi, false);
+ p_retvm_if(NULL == layout, NULL, "elm_layout_add() return NULL");
+ evas_object_data_set(layout, KEY_INPUT_DATA, cinput_d);
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(layout);
+
+ scroller = elm_scroller_add(layout);
+ p_retvm_if(NULL == scroller, NULL, "elm_scroller_add() return NULL");
+ elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
+ elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_AUTO);
+ evas_object_show(scroller);
+ elm_object_part_content_set(layout, "elm.swallow.content", scroller);
+ cinput_d->scroller = scroller;
+
+ box = elm_box_add(scroller);
+ p_retvm_if(NULL == box, NULL, "elm_box_add() return NULL");
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0.0);
+ elm_object_content_set(scroller, box);
+ evas_object_show(box);
+ cinput_d->box = box;
+
+ cdetail_d->has_input = true;
+ if (!cinput_d->contact)
+ {
+ err = contacts_record_create(_contacts_contact._uri,
+ &(cinput_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d))", err);
+
+ if (cdetail_d->base_grp)
+ {
+ contacts_record_h record_group_relation = NULL;
+ err = contacts_record_create(_contacts_group_relation._uri,
+ &(record_group_relation));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_int(record_group_relation,
+ _contacts_group_relation.group_id, cdetail_d->base_grp);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(cinput_d->contact,
+ _contacts_contact.group_relation, record_group_relation);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_add_child_record() Failed(%d)", err);
+
+ err = contacts_record_destroy(record_group_relation, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ }
+
+ if (cinput_d->base_ab < 0)
+ cinput_d->base_ab = ct_input_get_base_ab();
+
+ err = contacts_db_get_record(_contacts_address_book._uri,
+ cinput_d->base_ab, &record_addressbook);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ free(cinput_d->base_ab_name);
+ cinput_d->base_ab_name = NULL;
+
+ temp[0] = '\0';
+ ctui_get_addressbook_name(cinput_d->base_ab, temp, sizeof(temp));
+ if (*temp)
+ cinput_d->base_ab_name = strdup(temp);
+ err = contacts_record_get_int(record_addressbook,
+ _contacts_address_book.mode, &(cinput_d->base_ab_mode));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_destroy(record_addressbook, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ }
+ else
+ {
+ cinput_d->base_ab = 0;
+ cinput_d->base_ab_mode = CONTACTS_ADDRESS_BOOK_MODE_NONE;
+ cinput_d->base_ab_name = strdup(
+ T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE));
+ }
+
+ }
+ else if (cinput_d->contact_id)
+ {
+ err = contacts_record_get_int(cinput_d->contact,
+ _contacts_contact.address_book_id, &(cinput_d->base_ab));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ if (cinput_d->base_ab)
+ {
+ err = contacts_db_get_record(_contacts_address_book._uri,
+ cinput_d->base_ab, &record_addressbook);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ err = contacts_record_get_int(record_addressbook,
+ _contacts_address_book.mode, &(cinput_d->base_ab_mode));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ free(cinput_d->base_ab_name);
+
+ temp[0] = '\0';
+ ctui_get_addressbook_name(cinput_d->base_ab, temp, sizeof(temp));
+ if (*temp)
+ cinput_d->base_ab_name = strdup(temp);
+
+ err = contacts_record_destroy(record_addressbook, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ }
+ }
+ if (cinput_d->base_ab < 0)
+ {
+ cinput_d->base_ab = ct_input_get_base_ab();
+ temp[0] = '\0';
+ ctui_get_addressbook_name(cinput_d->base_ab, temp, sizeof(temp));
+ if (*temp)
+ cinput_d->base_ab_name = strdup(temp);
+ }
+ input_fill_layout(cinput_d);
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL,
+ input_view_delete_cb, cinput_d);
+
+ return layout;
+}
+
+void ct_input_language_changed(Evas_Object *navi)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d;
+
+ cinput_d = (ct_input_data *) evas_object_data_get(navi, KEY_INPUT_DATA);
+ p_retm_if(NULL == cinput_d, "evas_object_data_get() return NULL");
+
+ // update title
+ if (cinput_d->navi_item)
+ {
+ if (!cinput_d->contact_id)
+ elm_object_item_text_set(cinput_d->navi_item,
+ S_(CT_SYS_BODY_CREATE));
+ else
+ elm_object_item_text_set(cinput_d->navi_item, S_(PH_SYS_SK_EDIT));
+ }
+
+ // update content
+ ct_input_remove_empty_fields(cinput_d->contact);
+ input_refresh_layout(cinput_d);
+}
+
+static void __input_ug_destroy_me_cb(void *data)
+{
+ PH_TRACE;
+ ct_input_data *cinput_d = (ct_input_data *) data;
+
+ if (cinput_d->cdetail_d->service_operation)
+ phone_service_reply_simple(cinput_d->cdetail_d->service_operation,
+ SERVICE_RESULT_FAILED);
+
+ ug_destroy_me(cinput_d->cdetail_d->ug);
+}
+
+void ct_input_push_navi_content(ct_detail_data *cdetail_d,
+ contacts_record_h contact, int contact_id)
+{
+ PH_TRACE;
+ const char *navi_title;
+ Evas_Object *content;
+ Elm_Object_Item *navi_item;
+ ct_input_data *cinput_d = (ct_input_data *) calloc(1, sizeof(ct_input_data));
+ p_retm_if(NULL == cinput_d, "calloc() return NULL");
+ cinput_d->cdetail_d = cdetail_d;
+ cinput_d->contact = contact;
+ cinput_d->contact_id = contact_id;
+ if (cdetail_d->base_ab < 0)
+ cinput_d->base_ab = 0;
+ else
+ cinput_d->base_ab = cdetail_d->base_ab;
+ cinput_d->base_ab_mode = cdetail_d->base_ab_mode;
+ cinput_d->base_ab_name = SAFE_STRDUP(cdetail_d->base_ab_name);
+ cinput_d->pre_item = elm_naviframe_top_item_get(cdetail_d->navi);
+ cinput_d->save_disable = EINA_FALSE;
+ evas_object_data_set(cdetail_d->navi, KEY_INPUT_DATA, cinput_d);
+
+ if (cdetail_d->has_detail)
+ {
+ ct_detail_delete_namecards(cdetail_d);
+ }
+
+ content = input_create_layout(cinput_d);
+ p_retm_if(NULL == content, "input_create_layout() Failed");
+ cinput_d->layout = content;
+
+ navi_title = S_(CT_SYS_BODY_CREATE);
+
+ navi_item = elm_naviframe_item_push(cdetail_d->navi, navi_title, NULL, NULL,
+ content, NULL);
+ cinput_d->navi_item = navi_item;
+ phone_navi_item_reset(navi_item, cinput_d);
+
+ cinput_d->save_button = phone_create_toolbar_btn(cinput_d->cdetail_d->navi,
+ S_(CT_SYS_SK_DONE), ct_input_save_cb, cinput_d);
+ elm_object_item_part_content_set(navi_item, "toolbar",
+ cinput_d->save_button);
+
+ ct_input_save_button_update(cinput_d);
+
+ if (cinput_d->cdetail_d->ug && NULL == cinput_d->pre_item)
+ {
+ cinput_d->back_cb = __input_ug_destroy_me_cb;
+ }
+ else
+ {
+ elm_object_style_set(cinput_d->save_button, "naviframe/toolbar/left");
+ }
+
+ PH_DBG("##### [TSP_TEST] detail->edit end.#####");
+}
diff --git a/lib/details/ct-input-view.h b/lib/details/ct-input-view.h
new file mode 100755
index 0000000..a982641
--- /dev/null
+++ b/lib/details/ct-input-view.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Helper view-module responsible for filling contacts-list.
+ */
+
+#ifndef __CONTACTS_INPUT_VIEW_H__
+#define __CONTACTS_INPUT_VIEW_H__
+
+#define KEY_INPUT_DATA "cinput_d"
+
+void ct_input_push_navi_content(ct_detail_data *cdetail_d,
+ contacts_record_h contact, int contact_id);
+void ct_input_language_changed(Evas_Object *navi);
+void ct_input_update_image(ct_input_data *i_data);
+Evas_Object* ct_input_fill_layout_separator(ct_input_data *i_data,
+ const char *theme);
+
+#endif //__CONTACTS_INPUT_VIEW_H__
diff --git a/lib/details/ct-share-info-ug.cpp b/lib/details/ct-share-info-ug.cpp
new file mode 100755
index 0000000..dd9b585
--- /dev/null
+++ b/lib/details/ct-share-info-ug.cpp
@@ -0,0 +1,1129 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <unicode/udatpg.h>
+#include <unicode/ucal.h>
+#include <unicode/ustring.h>
+#include <ui-gadget-module.h>
+#include <bundle.h>
+
+#include "phone.h"
+#include "ct-detail.h"
+#include "ct-detail-utils.h"
+
+#define KEY_SHARE_INFO_UG_DATA "cshare_info_d"
+
+typedef struct
+{
+ int person_id;
+ ui_gadget_h ug;
+
+ Evas_Object *navi;
+ Evas_Object *genlist;
+ Evas_Object *select_all_layout;
+
+ UDateFormat* formatter;
+
+ Eina_List *list_contacts;
+} ct_share_info_ug_data;
+
+typedef struct
+{
+ contacts_record_h record;
+ const char *view_uri;
+ Eina_Bool checked;
+} ct_value_info;
+
+enum DETAIL_ITC_TYPE
+{
+ CT_SHARE_INFO_UG_ITC_GROUP_TITLE,
+ CT_SHARE_INFO_UG_ITC_NUMBER,
+ CT_SHARE_INFO_UG_ITC_EMAIL,
+ CT_SHARE_INFO_UG_ITC_ADDRESS,
+ CT_SHARE_INFO_UG_ITC_MESSENGER,
+ CT_SHARE_INFO_UG_ITC_WEBSITE,
+ CT_SHARE_INFO_UG_ITC_EVENT,
+ CT_SHARE_INFO_UG_ITC_NOTE,
+};
+
+static Elm_Genlist_Item_Class share_info_ug_itcs[] =
+{
+ {
+ 0, 0, 1, "grouptitle", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "2text.3", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "2text.3", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "2text.3", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "2text.3", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "2text.3", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "2text.3", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "2text.3", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+};
+
+static char* share_info_ug_gl_group_title_label_get(void *data,
+ Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ char *group_index = (char *) data;
+ if (0 == strcmp(part, "elm.text") && group_index && *group_index)
+ return strdup(group_index);
+ else
+ return NULL;
+}
+
+static char* share_info_ug_gl_number_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int type_int;
+ char *number = NULL;
+ char buf[PH_TEXT_MAX_LEN];
+ ct_value_info *value_info = (ct_value_info *) data;
+ int err = CONTACTS_ERROR_NONE;
+ p_retv_if(NULL == value_info, NULL);
+
+ if (0 == strcmp(part, "elm.text.2"))
+ {
+ err = contacts_record_get_int(value_info->record, _contacts_number.type,
+ &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ ctui_get_number_type_str(value_info->record, type_int, buf,
+ sizeof(buf));
+ return strdup(buf);
+ }
+ else if (0 == strcmp(part, "elm.text.1"))
+ {
+ err = contacts_record_get_str_p(value_info->record,
+ _contacts_number.number, &number);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ return SAFE_STRDUP(number);
+ }
+ return NULL;
+}
+
+static char* share_info_ug_gl_email_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int type_int;
+ char *email = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ ct_value_info *value_info = (ct_value_info *) data;
+ p_retv_if(NULL == value_info, NULL);
+
+ if (0 == strcmp(part, "elm.text.2"))
+ {
+ err = contacts_record_get_int(value_info->record, _contacts_email.type,
+ &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ return strdup(
+ T_(CT_GET_TEXT_EMAIL_TYPE, ctui_get_email_type_index(type_int)));
+ }
+ else if (0 == strcmp(part, "elm.text.1"))
+ {
+ err = contacts_record_get_str_p(value_info->record,
+ _contacts_email.email, &email);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ return SAFE_STRDUP(email);
+ }
+ return NULL;
+}
+
+static char* share_info_ug_gl_address_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int type_int;
+ char buf[PH_TEXT_MAX_LEN];
+ int err = CONTACTS_ERROR_NONE;
+ ct_value_info *value_info = (ct_value_info *) data;
+ p_retv_if(NULL == value_info, NULL);
+
+ if (0 == strcmp(part, "elm.text.2"))
+ {
+ err = contacts_record_get_int(value_info->record,
+ _contacts_address.type, &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ return strdup(
+ T_(CT_GET_TEXT_POSTAL_TYPE, phone_get_address_type_index(type_int)));
+ }
+ else if (0 == strcmp(part, "elm.text.1"))
+ {
+ buf[0] = '\0';
+ ct_detail_get_full_addr(value_info->record, buf, sizeof(buf));
+ return elm_entry_utf8_to_markup(buf);
+ }
+ return NULL;
+}
+
+static char* share_info_ug_gl_messenger_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int type_int;
+ char *im_id;
+ ct_value_info *value_info = (ct_value_info *) data;
+ int err = CONTACTS_ERROR_NONE;
+ p_retv_if(NULL == value_info, NULL);
+
+ if (0 == strcmp(part, "elm.text.2"))
+ {
+ err = contacts_record_get_int(value_info->record,
+ _contacts_messenger.type, &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ return strdup(T_(CT_GET_TEXT_IM_TYPE, type_int));
+ }
+ else if (0 == strcmp(part, "elm.text.1"))
+ {
+ err = contacts_record_get_str_p(value_info->record,
+ _contacts_messenger.im_id, &im_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ return SAFE_STRDUP(im_id);
+ }
+ return NULL;
+}
+
+static char* share_info_ug_gl_website_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int type_int;
+ char *url;
+ ct_value_info *value_info = (ct_value_info *) data;
+ int err = CONTACTS_ERROR_NONE;
+ p_retv_if(NULL == value_info, NULL);
+
+ if (0 == strcmp(part, "elm.text.2"))
+ {
+ err = contacts_record_get_int(value_info->record, _contacts_url.type,
+ &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ return strdup(
+ T_(CT_GET_TEXT_WEBSITE_TYPE, phone_get_website_type_index(type_int)));
+ }
+ else if (0 == strcmp(part, "elm.text.1"))
+ {
+ err = contacts_record_get_str_p(value_info->record, _contacts_url.url,
+ &url);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ return SAFE_STRDUP(url);
+ }
+ return NULL;
+}
+
+static char* share_info_ug_gl_event_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int type_int;
+ int err = CONTACTS_ERROR_NONE;
+ ct_value_info *value_info = (ct_value_info *) data;
+ ct_share_info_ug_data *cshare_info_d;
+ p_retv_if(NULL == value_info, NULL);
+
+ cshare_info_d = (ct_share_info_ug_data *) evas_object_data_get(obj, KEY_SHARE_INFO_UG_DATA);
+ p_retvm_if(NULL == cshare_info_d, NULL,
+ "evas_object_data_get() return NULL");
+
+ if (0 == strcmp(part, "elm.text.2"))
+ {
+ err = contacts_record_get_int(value_info->record, _contacts_url.type,
+ &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ return strdup(T_(CT_GET_TEXT_EVENT_TYPE, type_int));
+ }
+ else if (0 == strcmp(part, "elm.text.1"))
+ {
+ int date;
+ int day;
+ int mon;
+ int year;
+
+ err = contacts_record_get_int(value_info->record, _contacts_event.date,
+ &date);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ day = date % 100;
+ mon = (date % 10000) / 100;
+ year = date / 10000;
+
+ p_retvm_if(mon < 1 || 12 < mon || day < 1 || 31 < day, NULL,
+ "Invalid date(mon=%d,day=%d)", mon, day);
+ return phone_get_datetime_str(cshare_info_d->formatter, year, mon,
+ day);
+ }
+ return NULL;
+}
+
+static char* share_info_ug_gl_note_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ char *note;
+ ct_value_info *value_info = (ct_value_info *) data;
+ int err = CONTACTS_ERROR_NONE;
+ p_retv_if(NULL == value_info, NULL);
+
+ if (0 == strcmp(part, "elm.text.2"))
+ {
+ return strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_NOTE));
+ }
+ else if (0 == strcmp(part, "elm.text.1"))
+ {
+ err = contacts_record_get_str_p(value_info->record, _contacts_note.note,
+ &note);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ return SAFE_STRDUP(note);
+ }
+ return NULL;
+}
+static void share_info_ug_check_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ bool check_all;
+ Evas_Object *check;
+ Elm_Object_Item * item;
+ Elm_Genlist_Item_Type type;
+ ct_value_info *value_info;
+ ct_share_info_ug_data *cshare_info_d = (ct_share_info_ug_data *) data;
+ p_retm_if(NULL == cshare_info_d, "parameter(cshare_info_d) is NULL");
+
+ check = elm_object_part_content_get(cshare_info_d->select_all_layout,
+ "elm.icon");
+ p_retm_if(NULL == check, "elm_object_part_content_get() return NULL");
+
+ check_all = true;
+ item = elm_genlist_first_item_get(cshare_info_d->genlist);
+ while (item)
+ {
+ value_info = (ct_value_info *) elm_object_item_data_get(item);
+ type = elm_genlist_item_type_get(item);
+
+ item = elm_genlist_item_next_get(item);
+ if (ELM_GENLIST_ITEM_GROUP == type)
+ continue;
+
+ if (NULL == value_info)
+ {
+ ERR("elm_object_item_data_get() return NULL");
+ continue;
+ }
+ if (!value_info->checked)
+ {
+ check_all = false;
+ break;
+ }
+ }
+ elm_check_state_set(check, check_all);
+}
+
+static Evas_Object* share_info_ug_gl_content_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ Evas_Object *check;
+ ct_value_info *value_info = (ct_value_info *) data;
+ ct_share_info_ug_data *cshare_info_d;
+
+ cshare_info_d = (ct_share_info_ug_data *) evas_object_data_get(obj, KEY_SHARE_INFO_UG_DATA);
+ p_retvm_if(NULL == cshare_info_d, NULL,
+ "evas_object_data_get() return NULL");
+
+ if (0 == strcmp(part, "elm.edit.icon.1"))
+ {
+ check = elm_check_add(obj);
+ elm_check_state_pointer_set(check, &value_info->checked);
+ evas_object_propagate_events_set(check, EINA_FALSE);
+ evas_object_smart_callback_add(check, "changed",
+ share_info_ug_check_changed_cb, cshare_info_d);
+ return check;
+ }
+ return NULL;
+}
+
+static void share_info_ug_gl_del(void *data, Evas_Object *obj)
+{
+ PH_TRACE;
+ ct_value_info *value_info = (ct_value_info *) data;
+ free(value_info);
+}
+
+static void share_info_ug_create_itcs()
+{
+ PH_TRACE;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_GROUP_TITLE].func.text_get =
+ share_info_ug_gl_group_title_label_get;
+
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_NUMBER].func.text_get =
+ share_info_ug_gl_number_label_get;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_NUMBER].func.content_get =
+ share_info_ug_gl_content_get;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_NUMBER].func.del =
+ share_info_ug_gl_del;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_NUMBER].decorate_all_item_style =
+ "edit_default";
+
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_EMAIL].func.text_get =
+ share_info_ug_gl_email_label_get;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_EMAIL].func.content_get =
+ share_info_ug_gl_content_get;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_EMAIL].func.del =
+ share_info_ug_gl_del;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_EMAIL].decorate_all_item_style =
+ "edit_default";
+
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_ADDRESS].func.text_get =
+ share_info_ug_gl_address_label_get;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_ADDRESS].func.content_get =
+ share_info_ug_gl_content_get;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_ADDRESS].func.del =
+ share_info_ug_gl_del;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_ADDRESS].decorate_all_item_style =
+ "edit_default";
+
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_MESSENGER].func.text_get =
+ share_info_ug_gl_messenger_label_get;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_MESSENGER].func.content_get =
+ share_info_ug_gl_content_get;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_MESSENGER].func.del =
+ share_info_ug_gl_del;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_MESSENGER].decorate_all_item_style =
+ "edit_default";
+
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_WEBSITE].func.text_get =
+ share_info_ug_gl_website_label_get;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_WEBSITE].func.content_get =
+ share_info_ug_gl_content_get;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_WEBSITE].func.del =
+ share_info_ug_gl_del;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_WEBSITE].decorate_all_item_style =
+ "edit_default";
+
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_EVENT].func.text_get =
+ share_info_ug_gl_event_label_get;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_EVENT].func.content_get =
+ share_info_ug_gl_content_get;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_EVENT].func.del =
+ share_info_ug_gl_del;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_EVENT].decorate_all_item_style =
+ "edit_default";
+
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_NOTE].func.text_get =
+ share_info_ug_gl_note_label_get;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_NOTE].func.content_get =
+ share_info_ug_gl_content_get;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_NOTE].func.del =
+ share_info_ug_gl_del;
+ share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_NOTE].decorate_all_item_style =
+ "edit_default";
+
+}
+
+static void share_info_ug_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ ct_value_info *value_info = (ct_value_info *) data;
+ ct_share_info_ug_data *cshare_info_d;
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ value_info->checked = !value_info->checked;
+ elm_genlist_item_fields_update(item, "elm.edit.icon.1",
+ ELM_GENLIST_ITEM_FIELD_CONTENT);
+
+ cshare_info_d = (ct_share_info_ug_data *) evas_object_data_get(obj, KEY_SHARE_INFO_UG_DATA);
+ share_info_ug_check_changed_cb(cshare_info_d, obj, NULL);
+}
+
+static void share_info_ug_fill_number_list(Evas_Object *genlist,
+ Eina_List *list_contacts)
+{
+ PH_TRACE;
+ Eina_List *l;
+ Eina_List *list;
+ void *v_record;
+ ct_value_info *value_info;
+
+ list = ctui_person_get_number_list(list_contacts);
+ p_retm_if(NULL == list, "ctui_person_get_number_list() return NULL");
+
+ elm_genlist_item_append(genlist,
+ &share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_GROUP_TITLE],
+ T_(CT_GET_TEXT_BASIC, CTTEXT_NUMBER), NULL,
+ ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+
+ EINA_LIST_FOREACH(list, l, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ value_info = (ct_value_info *) calloc(1, sizeof(ct_value_info));
+ if (NULL == value_info)
+ {
+ ERR("calloc() return NULL");
+ continue;
+ }
+ value_info->view_uri = _contacts_number._uri;
+ value_info->record = record;
+
+ elm_genlist_item_append(genlist,
+ &share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_NUMBER], value_info,
+ NULL, ELM_GENLIST_ITEM_NONE, share_info_ug_sel, value_info);
+ }
+ eina_list_free(list);
+}
+
+static void share_info_ug_fill_email_list(Evas_Object *genlist,
+ Eina_List *list_contacts)
+{
+ PH_TRACE;
+ Eina_List *l;
+ Eina_List *list;
+ void *v_record = NULL;
+ ct_value_info *value_info;
+
+ list = ctui_person_get_email_list(list_contacts);
+ p_retm_if(NULL == list, "ctui_person_get_email_list() return NULL");
+
+ elm_genlist_item_append(genlist,
+ &share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_GROUP_TITLE],
+ T_(CT_GET_TEXT_BASIC, CTTEXT_EMAIL), NULL,
+ ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+
+ EINA_LIST_FOREACH(list, l, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ value_info = (ct_value_info *) calloc(1, sizeof(ct_value_info));
+ if (NULL == value_info)
+ {
+ ERR("calloc() return NULL");
+ continue;
+ }
+ value_info->view_uri = _contacts_email._uri;
+ value_info->record = record;
+
+ elm_genlist_item_append(genlist,
+ &share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_EMAIL], value_info,
+ NULL, ELM_GENLIST_ITEM_NONE, share_info_ug_sel, value_info);
+ }
+ eina_list_free(list);
+}
+
+static void share_info_ug_fill_address_list(Evas_Object *genlist,
+ Eina_List *list_contacts)
+{
+ PH_TRACE;
+ Eina_List *l;
+ Eina_List *list;
+ void *v_record = NULL;
+ ct_value_info *value_info;
+
+ list = ct_detail_person_get_postal_list(list_contacts);
+ p_retm_if(NULL == list, "ct_detail_person_get_postal_list() return NULL");
+
+ elm_genlist_item_append(genlist,
+ &share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_GROUP_TITLE],
+ T_(CT_GET_TEXT_BASIC, CTTEXT_POSTAL_ADDRESS), NULL,
+ ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+
+ EINA_LIST_FOREACH(list, l, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ value_info = (ct_value_info *) calloc(1, sizeof(ct_value_info));
+ if (NULL == value_info)
+ {
+ ERR("calloc() return NULL");
+ continue;
+ }
+ value_info->view_uri = _contacts_address._uri;
+ value_info->record = record;
+
+ elm_genlist_item_append(genlist,
+ &share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_ADDRESS], value_info,
+ NULL, ELM_GENLIST_ITEM_NONE, share_info_ug_sel, value_info);
+ }
+ eina_list_free(list);
+}
+
+static void share_info_ug_fill_messenger_list(Evas_Object *genlist,
+ Eina_List *list_contacts)
+{
+ PH_TRACE;
+ Eina_List *l;
+ Eina_List *list;
+ void *v_record = NULL;
+ ct_value_info *value_info;
+
+ list = ct_detail_person_get_messenger_list(list_contacts);
+ p_retm_if(NULL == list,
+ "ct_detail_person_get_messenger_list() return NULL");
+
+ elm_genlist_item_append(genlist,
+ &share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_GROUP_TITLE],
+ T_(CT_GET_TEXT_BASIC, CTTEXT_INSTANT_MESSENGER), NULL,
+ ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+
+ EINA_LIST_FOREACH(list, l, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ value_info = (ct_value_info *) calloc(1, sizeof(ct_value_info));
+ if (NULL == value_info)
+ {
+ ERR("calloc() return NULL");
+ continue;
+ }
+ value_info->view_uri = _contacts_messenger._uri;
+ value_info->record = record;
+
+ elm_genlist_item_append(genlist,
+ &share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_MESSENGER], value_info,
+ NULL, ELM_GENLIST_ITEM_NONE, share_info_ug_sel, value_info);
+ }
+ eina_list_free(list);
+}
+
+static void share_info_ug_fill_website_list(Evas_Object *genlist,
+ Eina_List *list_contacts)
+{
+ PH_TRACE;
+ Eina_List *l;
+ Eina_List *list;
+ void *v_record = NULL;
+ ct_value_info *value_info;
+
+ list = ct_detail_person_get_website_list(list_contacts);
+ p_retm_if(NULL == list, "ct_detail_person_get_website_list() return NULL");
+
+ elm_genlist_item_append(genlist,
+ &share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_GROUP_TITLE],
+ T_(CT_GET_TEXT_BASIC, CTTEXT_URL), NULL,
+ ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+
+ EINA_LIST_FOREACH(list, l, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ value_info = (ct_value_info *) calloc(1, sizeof(ct_value_info));
+ if (NULL == value_info)
+ {
+ ERR("calloc() return NULL");
+ continue;
+ }
+ value_info->view_uri = _contacts_url._uri;
+ value_info->record = record;
+
+ elm_genlist_item_append(genlist,
+ &share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_WEBSITE], value_info,
+ NULL, ELM_GENLIST_ITEM_NONE, share_info_ug_sel, value_info);
+ }
+ eina_list_free(list);
+}
+
+static void share_info_ug_fill_event_list(Evas_Object *genlist,
+ Eina_List *list_contacts)
+{
+ PH_TRACE;
+ Eina_List *l;
+ Eina_List *list;
+ void *v_record = NULL;
+ ct_value_info *value_info;
+
+ list = ct_detail_person_get_event_list(list_contacts);
+ p_retm_if(NULL == list, "ct_detail_person_get_event_list() return NULL");
+
+ elm_genlist_item_append(genlist,
+ &share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_GROUP_TITLE],
+ T_(CT_GET_TEXT_BASIC, CTTEXT_EVENT), NULL,
+ ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+
+ EINA_LIST_FOREACH(list, l, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ value_info = (ct_value_info *) calloc(1, sizeof(ct_value_info));
+ if (NULL == value_info)
+ {
+ ERR("calloc() return NULL");
+ continue;
+ }
+ value_info->view_uri = _contacts_event._uri;
+ value_info->record = record;
+
+ elm_genlist_item_append(genlist,
+ &share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_EVENT], value_info,
+ NULL, ELM_GENLIST_ITEM_NONE, share_info_ug_sel, value_info);
+ }
+ eina_list_free(list);
+}
+
+static void share_info_ug_fill_note_list(Evas_Object *genlist,
+ Eina_List *list_contacts)
+{
+ PH_TRACE;
+ bool group_title_added = false;
+ Eina_List *l;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ void *v_record_contact = NULL;
+ ct_value_info *value_info;
+
+ EINA_LIST_FOREACH(list_contacts, l, v_record_contact)
+ {
+ contacts_record_h record_contact = (contacts_record_h) v_record_contact;
+ if (NULL == record_contact)
+ continue;
+
+ err = contacts_record_get_child_record_at_p(record_contact,
+ _contacts_contact.note, 0, &record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_child_record_at_p() Failed(%d)", err);
+ continue;
+ }
+
+ value_info = (ct_value_info *) calloc(1, sizeof(ct_value_info));
+ if (NULL == value_info)
+ {
+ ERR("calloc() return NULL");
+ continue;
+ }
+ value_info->view_uri = _contacts_note._uri;
+ value_info->record = record;
+
+ if (!group_title_added)
+ {
+ elm_genlist_item_append(genlist,
+ &share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_GROUP_TITLE],
+ T_(CT_GET_TEXT_BASIC, CTTEXT_NOTE), NULL,
+ ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+ group_title_added = true;
+ }
+
+ elm_genlist_item_append(genlist,
+ &share_info_ug_itcs[CT_SHARE_INFO_UG_ITC_NOTE], value_info,
+ NULL, ELM_GENLIST_ITEM_NONE, share_info_ug_sel, value_info);
+ }
+}
+
+static void share_info_ug_fill_layout(ct_share_info_ug_data *cshare_info_d,
+ int person_id)
+{
+ PH_TRACE;
+ Eina_List *list_contacts;
+ Evas_Object *genlist;
+
+ p_retm_if(NULL == cshare_info_d, "parameter(cshare_info_d) is NULL");
+ genlist = cshare_info_d->genlist;
+
+ cshare_info_d->person_id = person_id;
+ cshare_info_d->formatter = phone_init_time_formatter();
+
+ list_contacts = ctui_person_get_contact_list(person_id);
+ p_retm_if(NULL == list_contacts,
+ "ctui_person_get_contact_list() return NULL");
+ cshare_info_d->list_contacts = list_contacts;
+
+ share_info_ug_create_itcs();
+ share_info_ug_fill_number_list(genlist, list_contacts);
+ share_info_ug_fill_email_list(genlist, list_contacts);
+ share_info_ug_fill_address_list(genlist, list_contacts);
+ share_info_ug_fill_messenger_list(genlist, list_contacts);
+ share_info_ug_fill_website_list(genlist, list_contacts);
+ share_info_ug_fill_event_list(genlist, list_contacts);
+ share_info_ug_fill_note_list(genlist, list_contacts);
+}
+
+static void share_info_ug_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_share_info_ug_data *cshare_info_d = (ct_share_info_ug_data *) data;
+ p_retm_if(NULL == cshare_info_d, "paramter(cshare_info_d) is NULL");
+
+ if (cshare_info_d->formatter)
+ udat_close(cshare_info_d->formatter);
+
+ ctui_free_record_list(cshare_info_d->list_contacts);
+
+ free(cshare_info_d);
+}
+
+static void share_info_ug_append_value_str(ct_value_info *value_info,
+ UDateFormat* formatter, char *buf, int buf_len)
+{
+ PH_TRACE;
+ int date;
+ int day;
+ int mon;
+ int year;
+ int type_int;
+ char *text;
+ char *date_str;
+ char temp[PH_TEXT_MAX_LEN];
+ char temp_str[PH_TEXT_MAX_LEN];
+ int err = CONTACTS_ERROR_NONE;
+
+ p_retm_if(NULL == value_info, "parameter(value_info) is NULL");
+
+ if (0 == strcmp(value_info->view_uri, _contacts_number._uri))
+ {
+ temp_str[0] = '\0';
+
+ err = contacts_record_get_int(value_info->record, _contacts_number.type,
+ &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ ctui_get_number_type_str(value_info->record, type_int, temp_str,
+ sizeof(temp_str));
+
+ err = contacts_record_get_str_p(value_info->record,
+ _contacts_number.number, &text);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ snprintf(temp, sizeof(temp), "%s%s\n%s\n", buf, temp_str,
+ SAFE_STR(text));
+ snprintf(buf, buf_len, "%s", temp);
+ }
+ else if (0 == strcmp(value_info->view_uri, _contacts_email._uri))
+ {
+ temp_str[0] = '\0';
+
+ err = contacts_record_get_int(value_info->record, _contacts_email.type,
+ &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(value_info->record,
+ _contacts_email.email, &text);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ snprintf(temp, sizeof(temp), "%s%s\n%s\n", buf,
+ T_(CT_GET_TEXT_EMAIL_TYPE, ctui_get_email_type_index(type_int)),
+ SAFE_STR(text));
+ snprintf(buf, buf_len, "%s", temp);
+ }
+ else if (0 == strcmp(value_info->view_uri, _contacts_address._uri))
+ {
+ temp_str[0] = '\0';
+
+ err = contacts_record_get_int(value_info->record,
+ _contacts_address.type, &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ ct_detail_get_full_addr(value_info->record, temp_str, sizeof(temp_str));
+
+ snprintf(temp, sizeof(temp), "%s%s\n%s\n", buf,
+ T_(CT_GET_TEXT_POSTAL_TYPE, phone_get_address_type_index(type_int)),
+ temp_str);
+ snprintf(buf, buf_len, "%s", temp);
+ }
+ else if (0 == strcmp(value_info->view_uri, _contacts_messenger._uri))
+ {
+ temp_str[0] = '\0';
+
+ err = contacts_record_get_int(value_info->record,
+ _contacts_messenger.type, &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(value_info->record,
+ _contacts_messenger.im_id, &text);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ snprintf(temp, sizeof(temp), "%s%s\n%s\n", buf,
+ T_(CT_GET_TEXT_IM_TYPE, type_int), SAFE_STR(text));
+ snprintf(buf, buf_len, "%s", temp);
+ }
+ else if (0 == strcmp(value_info->view_uri, _contacts_url._uri))
+ {
+ temp_str[0] = '\0';
+
+ err = contacts_record_get_int(value_info->record, _contacts_url.type,
+ &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(value_info->record, _contacts_url.url,
+ &text);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ snprintf(temp, sizeof(temp), "%s%s\n%s\n", buf,
+ T_(CT_GET_TEXT_WEBSITE_TYPE, phone_get_website_type_index(type_int)),
+ SAFE_STR(text));
+ snprintf(buf, buf_len, "%s", temp);
+ }
+ else if (0 == strcmp(value_info->view_uri, _contacts_event._uri))
+ {
+ temp_str[0] = '\0';
+
+ err = contacts_record_get_int(value_info->record, _contacts_event.type,
+ &type_int);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_get_int(value_info->record, _contacts_event.date,
+ &date);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ day = date % 100;
+ mon = (date % 10000) / 100;
+ year = date / 10000;
+
+ date_str = phone_get_datetime_str(formatter, year, mon, day);
+ snprintf(temp, sizeof(temp), "%s%s\n%s\n", buf,
+ T_(CT_GET_TEXT_EVENT_TYPE, type_int), SAFE_STR(date_str));
+ snprintf(buf, buf_len, "%s", temp);
+ free(date_str);
+ }
+ else if (0 == strcmp(value_info->view_uri, _contacts_note._uri))
+ {
+ temp_str[0] = '\0';
+
+ err = contacts_record_get_str_p(value_info->record, _contacts_note.note,
+ &text);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ snprintf(temp, sizeof(temp), "%s%s\n%s\n", buf,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_NOTE), SAFE_STR(text));
+ snprintf(buf, buf_len, "%s", temp);
+ }
+}
+
+static void share_info_ug_get_person_str(Evas_Object *genlist,
+ UDateFormat* formatter, char *buf, int buf_len)
+{
+ PH_TRACE;
+ Elm_Object_Item * item;
+ Elm_Genlist_Item_Type type;
+ ct_value_info *value_info;
+
+ p_retm_if(NULL == genlist, "parameter(genlist) is NULL");
+ p_retm_if(NULL == buf, "parameter(buf) is NULL");
+
+ item = elm_genlist_first_item_get(genlist);
+ while (item)
+ {
+ value_info = (ct_value_info *) elm_object_item_data_get(item);
+ type = elm_genlist_item_type_get(item);
+
+ item = elm_genlist_item_next_get(item);
+ if (ELM_GENLIST_ITEM_GROUP == type)
+ continue;
+
+ if (NULL == value_info)
+ {
+ ERR("elm_object_item_data_get() return NULL");
+ continue;
+ }
+
+ if (value_info->checked)
+ share_info_ug_append_value_str(value_info, formatter, buf, buf_len);
+ }
+ return;
+}
+
+static void share_info_ug_get_person_display_name(int person_id, char *buf,
+ int buf_len)
+{
+ PH_TRACE;
+ char *display_name;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ err = contacts_db_get_record(_contacts_person._uri, person_id, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() Failed(%d)",
+ err);
+
+ err = contacts_record_get_str_p(record, _contacts_person.display_name,
+ &display_name);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ snprintf(buf, buf_len, "%s\n", SAFE_STR(display_name));
+
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+}
+
+static void share_info_ug_save_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_MAX_LEN * 10];
+ service_h service;
+ ct_share_info_ug_data *cshare_info_d = (ct_share_info_ug_data *) data;
+ p_retm_if(NULL == cshare_info_d,
+ "parameter(ct_share_info_ug_data) is NULL");
+ service_create(&service);
+
+ buf[0] = '\0';
+ share_info_ug_get_person_display_name(cshare_info_d->person_id, buf,
+ sizeof(buf));
+ share_info_ug_get_person_str(cshare_info_d->genlist,
+ cshare_info_d->formatter, buf, sizeof(buf));
+ if (*buf)
+ service_add_extra_data(service, CT_UG_BUNDLE_RESULT_PERSON_INFO, buf);
+ ug_send_result(cshare_info_d->ug, service);
+ service_destroy(service);
+ ug_destroy_me(cshare_info_d->ug);
+}
+
+static void share_info_ug_cancel_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *navi = (Evas_Object *) data;
+ elm_naviframe_item_pop(navi);
+}
+
+static void share_info_ug_select_all_changed_cb(void *data, Eina_Bool checked)
+{
+ PH_TRACE;
+ Elm_Object_Item * item;
+ Elm_Genlist_Item_Type type;
+ ct_value_info *value_info;
+ ct_share_info_ug_data *cshare_info_d = (ct_share_info_ug_data *) data;
+
+ item = elm_genlist_first_item_get(cshare_info_d->genlist);
+ while (item)
+ {
+ value_info = (ct_value_info *) elm_object_item_data_get(item);
+ type = elm_genlist_item_type_get(item);
+
+ item = elm_genlist_item_next_get(item);
+ if (ELM_GENLIST_ITEM_GROUP == type)
+ continue;
+
+ if (NULL == value_info)
+ {
+ ERR("elm_object_item_data_get() return NULL");
+ continue;
+ }
+ value_info->checked = checked;
+ }
+ elm_genlist_realized_items_update(cshare_info_d->genlist);
+}
+
+API void ctui_create_share_info_ug_layout(Evas_Object *navi, int person_id,
+ ui_gadget_h ug)
+{
+ PH_TRACE;
+ Evas_Object *btn;
+ Evas_Object *base;
+ Evas_Object *box;
+ Evas_Object *genlist;
+ Evas_Object *toolbar;
+ Evas_Object *select_all_layout;
+ Evas_Object *done_button;
+ Elm_Object_Item *navi_item;
+ ct_share_info_ug_data *cshare_info_d;
+
+ base = phone_create_base_layout(navi, false);
+ evas_object_show(base);
+
+ box = elm_box_add(base);
+ p_retm_if(NULL == box, "elm_box_add() return NULL");
+ evas_object_show(box);
+
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+ evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_part_content_set(base, "elm.swallow.content", box);
+
+ genlist = elm_genlist_add(box);
+ p_retm_if(NULL == genlist, "elm_genlist_add() return NULL");
+ evas_object_show(genlist);
+ elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(box, genlist);
+ elm_genlist_decorate_mode_set(genlist, EINA_TRUE);
+
+ cshare_info_d = (ct_share_info_ug_data *) calloc(1, sizeof(ct_share_info_ug_data));
+ p_retm_if(NULL == cshare_info_d, "calloc() return NULL");
+ cshare_info_d->ug = ug;
+ cshare_info_d->navi = navi;
+ cshare_info_d->genlist = genlist;
+ evas_object_data_set(genlist, KEY_SHARE_INFO_UG_DATA, cshare_info_d);
+
+ share_info_ug_fill_layout(cshare_info_d, person_id);
+ evas_object_event_callback_add(base, EVAS_CALLBACK_DEL,
+ share_info_ug_delete_cb, cshare_info_d);
+
+ select_all_layout = phone_create_select_all(box, S_(PH_SYS_BODY_SELECT_ALL),
+ share_info_ug_select_all_changed_cb, cshare_info_d);
+ elm_box_pack_start(box, select_all_layout);
+ cshare_info_d->select_all_layout = select_all_layout;
+
+ navi_item = elm_naviframe_item_push(navi,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_SHARE_CONTACT_INFO), NULL, NULL,
+ base, NULL);
+ toolbar = elm_toolbar_add(navi);
+ elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
+ elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+ elm_object_item_part_content_set(navi_item, "controlbar", toolbar);
+
+ btn = elm_button_add(navi);
+ elm_object_style_set(btn, "naviframe/back_btn/default");
+ evas_object_smart_callback_add(btn, "clicked", share_info_ug_cancel_cb,
+ cshare_info_d->navi);
+ elm_object_item_part_content_set(navi_item, "prev_btn", btn);
+
+ done_button = phone_create_toolbar_btn(navi, S_(CT_SYS_SK_DONE),
+ share_info_ug_save_cb, cshare_info_d);
+ elm_object_item_part_content_set(navi_item, "toolbar", done_button);
+}
+
diff --git a/lib/details/include/ct-detail.h b/lib/details/include/ct-detail.h
new file mode 100755
index 0000000..7519d16
--- /dev/null
+++ b/lib/details/include/ct-detail.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CONTACTS_DETAIL_H__
+#define __CONTACTS_DETAIL_H__
+
+#include "phone-common.h"
+
+#define CT_DETAIL_DEFAULT_NUM_COLOR 213, 129, 31, 255
+#define CT_DETAIL_IMAGE_SIZE 128
+#define CT_DETAIL_RESET_BUTTON_SIZE 32
+#define CT_VCARD_FILE_MAX_SIZE 1024*1024
+
+int ctui_create_detail_view(ct_list_data *clist_d, ct_person_list *person_info);
+void ct_detail_view_language_changed(ct_detail_data *cdetail_d);
+int ctui_create_input_view(ct_detail_data *cdetail_d);
+int ctui_create_detail_view_from_phone(Evas_Object *win, Evas_Object *navi,
+ ui_gadget_h ug, int id);
+void ctui_create_share_info_ug_layout(Evas_Object *navi, int person_id,
+ ui_gadget_h ug);
+
+Evas_Object* ctui_contacts_viewer(Evas_Object *win, Evas_Object *navi,
+ int personid_vcardidx, const char *vcard_path);
+Evas_Object* ctui_detail_genlist_update(ct_detail_data *cdetail_d);
+
+#endif //__CONTACTS_DETAIL_H__
diff --git a/lib/dialer/CMakeLists.txt b/lib/dialer/CMakeLists.txt
new file mode 100755
index 0000000..31f072d
--- /dev/null
+++ b/lib/dialer/CMakeLists.txt
@@ -0,0 +1,24 @@
+LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
+
+SET(TARGET ${PH_DIALER})
+
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
+FILE(GLOB SRCS *.cpp Search/*.cpp)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(dialer_pkgs REQUIRED tapi feedback)
+
+FOREACH(flag ${dialer_pkgs_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+ADD_LIBRARY(${TARGET} SHARED ${SRCS})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES VERSION ${VERSION})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS})
+TARGET_LINK_LIBRARIES(${TARGET} ${COMMON_LIB} ${ug_pkgs_LDFLAGS} ${SPEEDDIAL} ${dialer_pkgs_LDFLAGS})
+
+ADD_DEPENDENCIES(${TARGET} dialer_edj_build dialer_theme_build)
+
+INSTALL(TARGETS ${TARGET} DESTINATION ${UGLIBDIR})
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/lib/dialer/dialer-efl.xml DESTINATION "/usr/share/packages")
diff --git a/lib/dialer/KeypadTouchManager.cpp b/lib/dialer/KeypadTouchManager.cpp
new file mode 100644
index 0000000..416946a
--- /dev/null
+++ b/lib/dialer/KeypadTouchManager.cpp
@@ -0,0 +1,339 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include "KeypadTouchManager.h"
+#include "phone.h"
+#include "phone-dialer.h"
+#include <assert.h>
+
+#define DIALER_PADDING_SIZE 3
+#define START_KEYPAD_RESET_TIMER 0.3
+#define MOUSE_UP_SIGNAL "mouse,up,1"
+#define MOUSE_DOWN_SIGNAL "mouse,down,1"
+
+namespace Dialer
+{
+ KeypadTouchManager::KeypadTouchManager()
+ : m_lastDown(false), m_lastMultiDown(false), m_keypadResetTimer(
+ NULL), m_pLayout(NULL)
+ {
+ PH_TRACE;
+ m_digitalButtonNames.reserve(MULTI_TOUCH_SUPPORT_KEY_COUNT);
+ m_digitalButtonNames.push_back("1");
+ m_digitalButtonNames.push_back("2");
+ m_digitalButtonNames.push_back("3");
+ m_digitalButtonNames.push_back("4");
+ m_digitalButtonNames.push_back("5");
+ m_digitalButtonNames.push_back("6");
+ m_digitalButtonNames.push_back("7");
+ m_digitalButtonNames.push_back("8");
+ m_digitalButtonNames.push_back("9");
+ m_digitalButtonNames.push_back("0");
+ m_digitalButtonNames.push_back("star");
+ m_digitalButtonNames.push_back("sharp");
+
+ m_lastDownPt.x = 0;
+ m_lastDownPt.y = 0;
+
+ memset(&m_background, 0, sizeof(Evas_Coord_Rectangle));
+ for (size_t i = 0; i < MULTI_TOUCH_SUPPORT_KEY_COUNT; ++i)
+ {
+ memset(&m_dialButtonRects[i], 0, sizeof(Evas_Coord_Rectangle));
+ }
+ }
+
+ KeypadTouchManager::~KeypadTouchManager()
+ {
+ PH_TRACE;
+ m_pLayout = NULL;
+ }
+
+ void KeypadTouchManager::initKeyPadArea(const Evas_Object* pLayout)
+ {
+ PH_TRACE;
+ assert(pLayout != NULL);
+ p_retm_if(pLayout == NULL, "pLayout is NULL");
+ m_pLayout = const_cast<Evas_Object*>(pLayout);
+ for (size_t i = 0; i < MULTI_TOUCH_SUPPORT_KEY_COUNT; ++i)
+ {
+ Evas_Coord_Rectangle* rect = &m_dialButtonRects[i];
+ const char* btnName = m_digitalButtonNames[i].c_str();
+ const Evas_Object* evasKeyArea = edje_object_part_object_get(_EDJ(pLayout), btnName);
+ if (evasKeyArea)
+ {
+ evas_object_geometry_get(evasKeyArea, &rect->x, &rect->y, &rect->w, &rect->h);
+ PH_DBG("edje_object_part_geometry_get : [%s]x %d y %d w %d h %d",
+ btnName, rect->x, rect->y, rect->w, rect->h);
+ }
+ }
+
+ const Evas_Object *evasKpdArea = edje_object_part_object_get(_EDJ(pLayout), "keypad/swallow");
+ if (evasKpdArea)
+ {
+ Evas_Coord_Rectangle* rect = &m_background;
+ evas_object_geometry_get(evasKpdArea, &rect->x, &rect->y, &rect->w, &rect->h);
+ PH_DBG("edje_object_part_geometry_get : x=%d y=%d w=%d h=%d", rect->x, rect->y, rect->w, rect->h);
+
+ // remove bottom line btn area from layout geometry value
+ rect->h -= m_dialButtonRects[0].h;
+
+ Evas* evas = evas_object_evas_get(pLayout);
+ if (evas)
+ {
+ // Temporary patch for UG slide effect problem
+ Evas_Coord h, w, x, y;
+ evas_output_viewport_get(evas, &x, &y, &w, &h);
+ if (m_background.x >= w - DIALER_PADDING_SIZE)
+ {
+ PH_DBG("evas_output_viewport_get : x %d y %d w %d h %d", x, y, w, h);
+ w -= DIALER_PADDING_SIZE;
+ m_background.x -= w;
+ for (size_t i = 0; i < MULTI_TOUCH_SUPPORT_KEY_COUNT; ++i)
+ {
+ rect = &m_dialButtonRects[i];
+ rect->x -= w;
+ }
+ }
+
+ Evas_Object *kpdArea = evas_object_rectangle_add(evas);
+ if (kpdArea)
+ {
+ evas_object_color_set(kpdArea, 0, 0, 0, 0);
+ elm_object_part_content_set(m_pLayout, "keypad/swallow", kpdArea);
+ evas_object_show(kpdArea);
+
+ evas_object_event_callback_add(kpdArea,
+ EVAS_CALLBACK_MOUSE_DOWN,
+ static_cast<Evas_Object_Event_Cb>(KeypadTouchManager::onKeyDown),
+ this);
+
+ evas_object_event_callback_add(kpdArea,
+ EVAS_CALLBACK_MOUSE_UP,
+ static_cast<Evas_Object_Event_Cb>(KeypadTouchManager::onKeyUp),
+ this);
+
+ evas_object_event_callback_add(kpdArea,
+ EVAS_CALLBACK_MULTI_DOWN,
+ static_cast<Evas_Object_Event_Cb>(KeypadTouchManager::onMultiKeyDown),
+ this);
+
+ evas_object_event_callback_add(kpdArea,
+ EVAS_CALLBACK_MULTI_UP,
+ static_cast<Evas_Object_Event_Cb>(KeypadTouchManager::onMultiKeyUp),
+ this);
+ }
+ }
+ }
+ }
+
+ void KeypadTouchManager::stopTimer()
+ {
+ PH_TRACE;
+ if (m_keypadResetTimer)
+ {
+ ecore_timer_del(m_keypadResetTimer);
+ m_keypadResetTimer = NULL;
+ }
+ }
+
+ void KeypadTouchManager::storeTouchedKey(int x, int y)
+ {
+ PH_TRACE;
+ const size_t keyIndex = getTouchedKeyRectIndex(x, y);
+ if (keyIndex != WRONG_KEY_INDEX)
+ {
+ DBG("%s was pressed", m_digitalButtonNames[keyIndex].c_str());
+ m_touchedBtns.insert(keyIndex);
+ }
+ }
+
+ size_t KeypadTouchManager::getTouchedKeyRectIndex(int x, int y) const
+ {
+ PH_TRACE;
+ size_t btnIndex = WRONG_KEY_INDEX;
+ if (isPtInRect(m_background, x, y))
+ {
+ for (size_t i = 0; i < MULTI_TOUCH_SUPPORT_KEY_COUNT; ++i)
+ {
+ if (isPtInRect(m_dialButtonRects[i], x, y))
+ {
+ btnIndex = i;
+ break;
+ }
+ }
+ }
+ else
+ {
+ DBG("point(%d,%d) is out of keypad", x, y);
+ }
+
+ return btnIndex;
+ }
+
+ bool KeypadTouchManager::isPtInRect(const Evas_Coord_Rectangle& rect, int x,
+ int y)
+ {
+ PH_TRACE;
+ return (x >= rect.x && y >= rect.y && x <= rect.x + rect.w && y <= rect.y + rect.h);
+ }
+
+ void KeypadTouchManager::sendEdjeSignal(int x, int y, const char* signal)
+ {
+ PH_TRACE;
+ assert(m_pLayout);
+ if (m_pLayout)
+ {
+ const size_t keyIndex = getTouchedKeyRectIndex(x, y);
+ if (keyIndex != WRONG_KEY_INDEX)
+ {
+ PH_DBG("%s, %s", signal, m_digitalButtonNames[keyIndex].c_str());
+ edje_object_signal_emit(_EDJ(m_pLayout), signal, m_digitalButtonNames[keyIndex].c_str());
+ }
+ }
+ }
+
+ void KeypadTouchManager::handleTouchedKeys()
+ {
+ PH_TRACE;
+ assert(m_pLayout);
+ if (m_pLayout)
+ {
+ for (TouchedButtonsIndexes::const_iterator it = m_touchedBtns.begin(); it != m_touchedBtns.end(); ++it)
+ {
+ const size_t keyIndex = *it;
+ edje_object_signal_emit(_EDJ(m_pLayout), MOUSE_UP_SIGNAL, m_digitalButtonNames[keyIndex].c_str());
+ }
+ }
+ m_touchedBtns.clear();
+ m_keypadResetTimer = NULL;
+ }
+
+ Eina_Bool KeypadTouchManager::onTimer(void* data)
+ {
+ PH_TRACE;
+ KeypadTouchManager* pTouchMgr = static_cast<KeypadTouchManager*>(data);
+ assert(pTouchMgr);
+ if (pTouchMgr)
+ {
+ pTouchMgr->handleTouchedKeys();
+ }
+ return EINA_FALSE;
+ }
+
+ void KeypadTouchManager::handleKeyUp(int x, int y)
+ {
+ PH_TRACE;
+ if (m_lastMultiDown)
+ {
+ // Multi-key pressed sceanario should reset all dial key
+ stopTimer();
+ m_keypadResetTimer = ecore_timer_add(START_KEYPAD_RESET_TIMER,
+ static_cast<Ecore_Task_Cb>(KeypadTouchManager::onTimer),
+ this);
+ }
+ else if (m_lastDown && (m_lastDownPt.x != x || m_lastDownPt.y != y))
+ {
+ // normal scenario for touch & drag + release
+ sendEdjeSignal(m_lastDownPt.x, m_lastDownPt.y, MOUSE_UP_SIGNAL);
+ }
+
+ m_lastDown = false;
+ m_lastMultiDown = false;
+ sendEdjeSignal(x, y, MOUSE_UP_SIGNAL);
+ }
+
+ void KeypadTouchManager::onKeyUp(void *data, Evas *e, Evas_Object *o, void *event_info)
+ {
+ PH_TRACE;
+ assert(data && event_info);
+ if (data && event_info)
+ {
+ KeypadTouchManager* pTouchMgr = static_cast<KeypadTouchManager*>(data);
+ Evas_Event_Mouse_Up *ev = static_cast<Evas_Event_Mouse_Up*>(event_info);
+ PH_DBG("KeypadTouchManager::onKeyUp : x=%d y=%d", ev->output.x, ev->output.y);
+ pTouchMgr->handleKeyUp(ev->output.x, ev->output.y);
+ }
+ }
+
+ void KeypadTouchManager::handleKeyDown(int x, int y)
+ {
+ PH_TRACE;
+ m_lastDownPt.x = x;
+ m_lastDownPt.y = y;
+ m_lastDown = true;
+ sendEdjeSignal(x, y, MOUSE_DOWN_SIGNAL);
+ }
+
+ void KeypadTouchManager::onKeyDown(void *data, Evas *e, Evas_Object *o, void *event_info)
+ {
+ PH_TRACE;
+ assert(data && event_info);
+ if (data && event_info)
+ {
+ KeypadTouchManager* pTouchMgr = static_cast<KeypadTouchManager*>(data);
+ Evas_Event_Mouse_Down *ev = static_cast<Evas_Event_Mouse_Down*>(event_info);
+ PH_DBG("KeypadTouchManager::onKeyDown : x=%d y=%d", ev->output.x, ev->output.y);
+ pTouchMgr->handleKeyDown(ev->output.x, ev->output.y);
+ }
+ }
+
+ void KeypadTouchManager::handleMultiKeyUp(int x, int y)
+ {
+ PH_TRACE;
+ sendEdjeSignal(x, y, MOUSE_UP_SIGNAL);
+ }
+
+ void KeypadTouchManager::onMultiKeyUp(void *data, Evas *e, Evas_Object *o, void *event_info)
+ {
+ PH_TRACE;
+ assert(data && event_info);
+ if (data && event_info)
+ {
+ KeypadTouchManager* pTouchMgr = static_cast<KeypadTouchManager*>(data);
+ Evas_Event_Multi_Up *ev = static_cast<Evas_Event_Multi_Up*>(event_info);
+ PH_DBG("KeypadTouchManager::onMultiKeyUp : x=%d y=%d", ev->output.x, ev->output.y);
+ pTouchMgr->handleMultiKeyUp(ev->output.x, ev->output.y);
+ }
+ }
+
+ void KeypadTouchManager::handleMultiKeyDown(int x, int y)
+ {
+ PH_TRACE;
+ m_lastMultiDown = true;
+ if (m_lastDown)
+ {
+ sendEdjeSignal(m_lastDownPt.x, m_lastDownPt.y, MOUSE_UP_SIGNAL);
+ m_lastDownPt.x = x;
+ m_lastDownPt.y = y;
+ m_lastDown = true;
+ }
+
+ storeTouchedKey(x, y);
+ sendEdjeSignal(x, y, MOUSE_DOWN_SIGNAL);
+ }
+
+ void KeypadTouchManager::onMultiKeyDown(void *data, Evas *e, Evas_Object *o, void *event_info)
+ {
+ PH_TRACE;
+ assert(data && event_info);
+ if (data && event_info)
+ {
+ KeypadTouchManager* pTouchMgr = static_cast<KeypadTouchManager*>(data);
+ Evas_Event_Multi_Down *ev = static_cast<Evas_Event_Multi_Down*>(event_info);
+ PH_DBG("KeypadTouchManager::onMultiKeyDown : x=%d y=%d", ev->output.x, ev->output.y);
+ pTouchMgr->handleMultiKeyDown(ev->output.x, ev->output.y);
+ }
+ }
+} /* namespace TizenRefApps */
diff --git a/lib/dialer/Search/ContactData.cpp b/lib/dialer/Search/ContactData.cpp
new file mode 100644
index 0000000..7ad0d7e
--- /dev/null
+++ b/lib/dialer/Search/ContactData.cpp
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Search/ContactData.h"
+
+#include "phone.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ ContactData::ContactData()
+ {
+ PH_TRACE;
+ }
+
+ ContactData::ContactData(const ContactData &other)
+ {
+ PH_TRACE;
+ *this = other;
+ }
+
+ const std::string & ContactData::getName() const
+ {
+ return m_Name;
+ }
+
+ const std::string & ContactData::getNumber() const
+ {
+ return m_Number;
+ }
+
+ const std::string & ContactData::getImagePath() const
+ {
+ return m_ImagePath;
+ }
+
+ ContactData & ContactData::operator=(const ContactData &other)
+ {
+ PH_TRACE;
+ m_Name = other.m_Name;
+ m_Number = other.m_Number;
+ m_ImagePath = other.m_ImagePath;
+ return *this;
+ }
+ }
+ }
+}
diff --git a/lib/dialer/Search/ContactData.h b/lib/dialer/Search/ContactData.h
new file mode 100644
index 0000000..57e41bf
--- /dev/null
+++ b/lib/dialer/Search/ContactData.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_DIALER_SEARCH_CONTACT_DATA_H__
+#define __PHONE_DIALER_SEARCH_CONTACT_DATA_H__
+
+#include "Contact.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ /*
+ * @brief Contact data storage class
+ */
+ class ContactData : public Common::Contact
+ {
+ public:
+ ContactData();
+ ContactData(const ContactData &other);
+
+ /*
+ * @see Contact::getName
+ */
+ virtual const std::string & getName() const;
+
+ /*
+ * @see Contact::getNumber
+ */
+ virtual const std::string & getNumber() const;
+
+ /*
+ * @see Contact::getImagePath
+ */
+ virtual const std::string & getImagePath() const;
+
+ ContactData & operator=(const ContactData &other);
+
+ protected:
+ std::string m_Name;
+ std::string m_Number;
+ std::string m_ImagePath;
+ };
+ }
+ }
+}
+
+#endif /* __PHONE_DIALER_SEARCH_CONTACT_DATA_H__ */
diff --git a/lib/dialer/Search/ContactItem.cpp b/lib/dialer/Search/ContactItem.cpp
new file mode 100644
index 0000000..d492df2
--- /dev/null
+++ b/lib/dialer/Search/ContactItem.cpp
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Search/ContactItem.h"
+#include "phone.h"
+#include "phone-common.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ ContactItem::ContactItem(const Result &result)
+ : ResultItem(result)
+ {
+ PH_TRACE;
+ }
+
+ char * ContactItem::getText(const char *part) const
+ {
+ PH_TRACE;
+ if(strcmp(part, "elm.text.1") == 0)
+ {
+ if(getResult().getMatchType() == Result::ByName)
+ {
+ return strdup(getMatch());
+ }
+ else
+ {
+ return strdup(getResult().getContact()->getName().c_str());
+ }
+ }
+ else
+ {
+ return ResultItem::getText(part);
+ }
+ }
+
+ Elm_Genlist_Item_Class * ContactItem::getClass() const
+ {
+ static Elm_Genlist_Item_Class *itemClass = createClass("2text.1icon.4.tb");
+ return itemClass;
+ }
+ }
+ }
+}
diff --git a/lib/dialer/Search/ContactItem.h b/lib/dialer/Search/ContactItem.h
new file mode 100644
index 0000000..a2fcad9
--- /dev/null
+++ b/lib/dialer/Search/ContactItem.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_DIALER_SEARCH_CONTACT_ITEM_H__
+#define __PHONE_DIALER_SEARCH_CONTACT_ITEM_H__
+
+#include "Search/ResultItem.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ /*
+ * @brief Search results list item with Contact name
+ * @displays Contact name and number and highlights the match.
+ */
+ namespace Search
+ {
+ class ContactItem : public ResultItem
+ {
+ public:
+ /*
+ * @param result Search result associated with the item
+ */
+ ContactItem(const Result &result);
+
+ /*
+ * @see Genlist::Item::getText
+ */
+ char * getText(const char *part) const;
+
+ /*
+ * @see Genlist::Item::getClass
+ */
+ Elm_Genlist_Item_Class * getClass() const;
+ };
+ }
+ }
+}
+
+#endif /* __PHONE_DIALER_SEARCH_CONTACT_ITEM_H__ */
diff --git a/lib/dialer/Search/ContactLogRecord.cpp b/lib/dialer/Search/ContactLogRecord.cpp
new file mode 100644
index 0000000..d2d70a1
--- /dev/null
+++ b/lib/dialer/Search/ContactLogRecord.cpp
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Search/ContactLogRecord.h"
+
+#include "phone.h"
+#include "phone-common.h"
+#include "Database/Database.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ using Database::Database;
+
+ ContactLogRecord::ContactLogRecord()
+ {
+ PH_TRACE;
+ }
+
+ ContactLogRecord::ContactLogRecord(const ContactLogRecord &other)
+ : ContactData(other)
+ {
+ PH_TRACE;
+ }
+
+ bool ContactLogRecord::initialize(int id)
+ {
+ PH_TRACE;
+ contacts_query_h query = NULL;
+ contacts_filter_h filter = NULL;
+ contacts_list_h list = NULL;
+ contacts_record_h record = NULL;
+ unsigned ids[] = {
+ _contacts_person_phone_log.person_id,
+ _contacts_person_phone_log.address,
+ };
+
+ bool success = Database::isSuccess(
+ contacts_filter_create(_contacts_person_phone_log._uri, &filter))
+ && Database::isSuccess(
+ contacts_filter_add_int(filter, _contacts_person_phone_log.log_id, CONTACTS_MATCH_EQUAL, id))
+ && Database::isSuccess(
+ contacts_query_create(_contacts_person_phone_log._uri, &query))
+ && Database::isSuccess(
+ contacts_query_set_filter(query, filter))
+ && Database::isSuccess(
+ contacts_query_set_projection(query, ids, sizeof(ids) / sizeof(*ids)))
+ && Database::isSuccess(
+ contacts_db_get_records_with_query(query, 0, 0, &list))
+ && Database::isSuccess(
+ contacts_list_get_current_record_p(list, &record))
+ && initialize(record);
+
+ if(filter)
+ {
+ contacts_filter_destroy(filter);
+ }
+
+ if(query)
+ {
+ contacts_query_destroy(query);
+ }
+
+ if(list)
+ {
+ contacts_list_destroy(list, true);
+ }
+
+ return success;
+ }
+
+ bool ContactLogRecord::initialize(contacts_record_h record)
+ {
+ PH_TRACE;
+ char *number = NULL;
+ int id = 0;
+
+ bool success = Database::isSuccess(
+ contacts_record_get_str_p(record, _contacts_person_phone_log.address, &number))
+ && Database::isSuccess(
+ contacts_record_get_int(record, _contacts_person_phone_log.person_id, &id));
+
+ if(success)
+ {
+ m_Number.clear();
+ if(number)
+ {
+ m_Number = number;
+ }
+ m_PersonId = id;
+ }
+
+ return success;
+ }
+
+ int ContactLogRecord::getPersonId() const
+ {
+ return m_PersonId;
+ }
+
+ ContactLogRecord & ContactLogRecord::operator=(const ContactLogRecord &other)
+ {
+ PH_TRACE;
+ ContactData::operator=(other);
+ return *this;
+ }
+ }
+ }
+}
diff --git a/lib/dialer/Search/ContactLogRecord.h b/lib/dialer/Search/ContactLogRecord.h
new file mode 100644
index 0000000..b64446c
--- /dev/null
+++ b/lib/dialer/Search/ContactLogRecord.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_DIALER_SEARCH_CONTACT_LOG_RECORD_H__
+#define __PHONE_DIALER_SEARCH_CONTACT_LOG_RECORD_H__
+
+#include <contacts.h>
+#include "ContactData.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ /*
+ * @brief Contact data access object based on database record
+ * from _contacts_person_phone_log view.
+ */
+ class ContactLogRecord : public ContactData
+ {
+ public:
+ ContactLogRecord();
+ ContactLogRecord(const ContactLogRecord &other);
+
+ /*
+ * @brief Initialize by fetching contact data from database by Log ID
+ * @param id Log ID from _contacts_phone_log view
+ * @return true on success, false otherwise
+ */
+ bool initialize(int id);
+
+ /*
+ * @brief Initialize with data from database log record
+ * @param record Record from _contacts_person_phone_log view
+ */
+ bool initialize(contacts_record_h record);
+
+ /*
+ * @brief Get person ID associated with log record
+ * @return Person ID or 0 for unsaved number
+ */
+ int getPersonId() const;
+
+ ContactLogRecord & operator=(const ContactLogRecord &other);
+
+ private:
+ int m_PersonId;
+ };
+ }
+ }
+}
+
+#endif /* __PHONE_DIALER_SEARCH_CONTACT_LOG_RECORD_H__ */
diff --git a/lib/dialer/Search/ContactNumberRecord.cpp b/lib/dialer/Search/ContactNumberRecord.cpp
new file mode 100644
index 0000000..0a399ad
--- /dev/null
+++ b/lib/dialer/Search/ContactNumberRecord.cpp
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Search/ContactNumberRecord.h"
+
+#include "phone.h"
+#include "phone-common.h"
+#include "Database/Database.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ using Database::Database;
+
+ ContactNumberRecord::ContactNumberRecord()
+ {
+ PH_TRACE;
+ }
+
+ ContactNumberRecord::ContactNumberRecord(const ContactNumberRecord &other)
+ : ContactData(other)
+ {
+ PH_TRACE;
+ }
+
+ bool ContactNumberRecord::initialize(int id)
+ {
+ PH_TRACE;
+ contacts_query_h query = NULL;
+ contacts_filter_h filter = NULL;
+ contacts_list_h list = NULL;
+ contacts_record_h record = NULL;
+ unsigned ids[] = {
+ _contacts_contact_number.display_name,
+ _contacts_contact_number.number,
+ _contacts_contact_number.image_thumbnail_path
+ };
+
+ bool success = Database::isSuccess(
+ contacts_filter_create(_contacts_contact_number._uri, &filter))
+ && Database::isSuccess(
+ contacts_filter_add_int(filter, _contacts_contact_number.number_id, CONTACTS_MATCH_EQUAL, id))
+ && Database::isSuccess(
+ contacts_query_create(_contacts_contact_number._uri, &query))
+ && Database::isSuccess(
+ contacts_query_set_filter(query, filter))
+ && Database::isSuccess(
+ contacts_query_set_projection(query, ids, sizeof(ids) / sizeof(*ids)))
+ && Database::isSuccess(
+ contacts_db_get_records_with_query(query, 0, 0, &list))
+ && Database::isSuccess(
+ contacts_list_get_current_record_p(list, &record))
+ && initialize(record);
+
+ if(filter)
+ {
+ contacts_filter_destroy(filter);
+ }
+
+ if(query)
+ {
+ contacts_query_destroy(query);
+ }
+
+ if(list)
+ {
+ contacts_list_destroy(list, true);
+ }
+
+ return success;
+ }
+
+ bool ContactNumberRecord::initialize(contacts_record_h record)
+ {
+ PH_TRACE;
+ char *name = NULL;
+ char *number = NULL;
+ char *image = NULL;
+
+ bool success = Database::isSuccess(
+ contacts_record_get_str_p(record, _contacts_contact_number.display_name, &name))
+ && Database::isSuccess(
+ contacts_record_get_str_p(record, _contacts_contact_number.number, &number))
+ && Database::isSuccess(
+ contacts_record_get_str_p(record, _contacts_contact_number.image_thumbnail_path, &image));
+
+ if(success)
+ {
+ m_Name.clear();
+ if(name)
+ {
+ m_Name = name;
+ }
+
+ m_Number.clear();
+ if(number)
+ {
+ m_Number = number;
+ }
+
+ m_ImagePath.clear();
+ if(image)
+ {
+ m_ImagePath = image;
+ }
+ }
+
+ return success;
+ }
+
+ ContactNumberRecord & ContactNumberRecord::operator=(const ContactNumberRecord &other)
+ {
+ PH_TRACE;
+ ContactData::operator=(other);
+ return *this;
+ }
+ }
+ }
+}
diff --git a/lib/dialer/Search/ContactNumberRecord.h b/lib/dialer/Search/ContactNumberRecord.h
new file mode 100644
index 0000000..bb4eb35
--- /dev/null
+++ b/lib/dialer/Search/ContactNumberRecord.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_DIALER_SEARCH_CONTACT_NUMBER_RECORD_H__
+#define __PHONE_DIALER_SEARCH_CONTACT_NUMBER_RECORD_H__
+
+#include <contacts.h>
+#include "Search/ContactData.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ /*
+ * @brief Contact data access object based on database record
+ * from _contacts_contact_number view.
+ */
+ class ContactNumberRecord : public ContactData
+ {
+ public:
+ ContactNumberRecord();
+ ContactNumberRecord(const ContactNumberRecord &other);
+
+ /*
+ * @brief Initialize by fetching contact data from database by number ID
+ * @param id Number ID from _contacts_number view
+ * @return true on success, false otherwise
+ */
+ bool initialize(int id);
+
+ /*
+ * @brief Initialize with data from database number record
+ * @param record Record from _contacts_contact_number view
+ */
+ bool initialize(contacts_record_h record);
+
+ ContactNumberRecord & operator=(const ContactNumberRecord &other);
+ };
+ }
+ }
+}
+
+#endif /* __PHONE_DIALER_SEARCH_CONTACT_NUMBER_RECORD_H__ */
diff --git a/lib/dialer/Search/Controller.cpp b/lib/dialer/Search/Controller.cpp
new file mode 100644
index 0000000..0d55fae
--- /dev/null
+++ b/lib/dialer/Search/Controller.cpp
@@ -0,0 +1,128 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Search/Controller.h"
+
+#include "phone.h"
+#include "phone-dialer.h"
+#include "ph-dialer-view.h"
+#include "ph-dialer-utils.h"
+#include "Search/ContactItem.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ Controller::Controller()
+ : m_DialerView(NULL)
+ {
+ PH_TRACE;
+ }
+
+ Controller::~Controller()
+ {
+ PH_TRACE;
+ }
+
+ bool Controller::initialize(DialerView *dialer)
+ {
+ PH_TRACE;
+ if(!dialer)
+ {
+ return false;
+ }
+
+ bool success = m_DataProvider.initialize()
+ && m_Engine.initialize(m_DataProvider)
+ && m_ResultWidget.initialize(dialer->layout)
+ && m_ResultPopup.initialize(dialer->navi);
+
+ if(success)
+ {
+ m_DialerView = dialer;
+ m_Engine.setListener(this);
+ m_ResultWidget.setListener(this);
+ m_ResultPopup.setListener(this);
+ evas_object_smart_callback_priority_add(m_DialerView->entry, "changed", EVAS_CALLBACK_PRIORITY_AFTER, onTextChange, this);
+ }
+
+ return success;
+ }
+
+ void Controller::onSearchResultsChange(const Results &results)
+ {
+ PH_TRACE;
+ if(!m_Engine.getQuery().empty())
+ {
+ const Results &results = m_Engine.getResults();
+ DBG("count: %d", results.size());
+
+ if(!results.empty())
+ {
+ m_ResultWidget.setResult(results.front());
+ }
+ m_ResultWidget.setResultCount(results.size());
+ }
+ else
+ {
+ m_ResultWidget.hide();
+ }
+ }
+
+ void Controller::onSearchResultSelect(const Result &result)
+ {
+ PH_TRACE;
+ ph_dialer_entry_set_number(*m_DialerView, result.getContact()->getNumber(), CURSOR_END);
+ }
+
+ void Controller::onAddToContacts()
+ {
+ PH_TRACE;
+ dialer_add_contact(m_DialerView);
+ }
+
+ void Controller::onTopResultSelect()
+ {
+ PH_TRACE;
+ onSearchResultSelect(m_Engine.getResults().front());
+ }
+
+ void Controller::onShowMoreResults()
+ {
+ PH_TRACE;
+ m_ResultPopup.setResults(m_Engine.getResults());
+ m_ResultPopup.show();
+ m_DialerView->popup = m_ResultPopup.getPopup();
+ }
+
+ void Controller::onTextChange(void *data, Evas_Object *obj, void *event_info)
+ {
+ PH_TRACE;
+ if(!data || !obj)
+ {
+ return;
+ }
+
+ Controller *pthis = static_cast<Controller*>(data);
+ char text[PH_TEXT_MAX_LEN];
+ ph_dialer_util_get_pure_numstr_with_plus(pthis->m_DialerView, text);
+ pthis->m_Engine.setQuery(text);
+ }
+ }
+ }
+}
diff --git a/lib/dialer/Search/Controller.h b/lib/dialer/Search/Controller.h
new file mode 100644
index 0000000..eac5f0f
--- /dev/null
+++ b/lib/dialer/Search/Controller.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_DIALER_SEARCH_CONTROLLER_H__
+#define __PHONE_DIALER_SEARCH_CONTROLLER_H__
+
+#include "Search/Engine.h"
+#include "Search/DbDataProvider.h"
+#include "Search/ResultWidget.h"
+#include "Search/ResultPopup.h"
+
+struct DialerView;
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ /*
+ * @brief Dialer search controller
+ * @details Controls search result widget and popup,
+ * initializes data provider and search engine.
+ * Handles widget events and initiates the search
+ * using search engine whenever dialer's text is changed.
+ */
+ class Controller :
+ public EngineListener,
+ public ResultWidgetListener,
+ public ResultPopupListener
+ {
+ public:
+ Controller();
+ ~Controller();
+
+ /*
+ * @brief Initialize dialer search controller
+ * @param dialer Dialer view
+ */
+ bool initialize(DialerView *dialer);
+
+ private:
+ void onSearchResultsChange(const Results &results);
+ void onSearchResultSelect(const Result &result);
+
+ void onAddToContacts();
+ void onTopResultSelect();
+ void onShowMoreResults();
+
+ static void onTextChange(void *data, Evas_Object *obj, void *event_info);
+
+ Engine m_Engine;
+ DbDataProvider m_DataProvider;
+
+ DialerView *m_DialerView;
+ ResultWidget m_ResultWidget;
+ ResultPopup m_ResultPopup;
+ };
+ }
+ }
+}
+
+#endif /* __PHONE_DIALER_SEARCH_CONTROLLER_H__ */
diff --git a/lib/dialer/Search/DataProvider.h b/lib/dialer/Search/DataProvider.h
new file mode 100644
index 0000000..576a3f6
--- /dev/null
+++ b/lib/dialer/Search/DataProvider.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_DIALER_SEARCH_DATA_PROVIDER_H__
+#define __PHONE_DIALER_SEARCH_DATA_PROVIDER_H__
+
+#include "Contact.h"
+#include "NonCopyable.h"
+#include "SharedPtr.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ typedef Utils::SharedPtr<Common::Contact> ContactPtr;
+
+ /*
+ * @brief Data provider interface for dialer search engine
+ */
+ class DataProvider : public Utils::NonCopyable
+ {
+ public:
+ virtual ~DataProvider() { }
+
+ /*
+ * @return The current count of data items that can be provided
+ */
+ virtual size_t getCount() const = 0;
+
+ /*
+ * @brief Get contact data item by index
+ * @param index Index of data item
+ * @return Shared pointer to contact data or NULL if out of range
+ */
+ virtual ContactPtr getData(size_t index) const = 0;
+ };
+ }
+ }
+}
+
+#endif /* __PHONE_DIALER_SEARCH_DATA_PROVIDER_H__ */
diff --git a/lib/dialer/Search/DbDataProvider.cpp b/lib/dialer/Search/DbDataProvider.cpp
new file mode 100644
index 0000000..91906f3
--- /dev/null
+++ b/lib/dialer/Search/DbDataProvider.cpp
@@ -0,0 +1,327 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Search/DbDataProvider.h"
+
+#include "phone.h"
+#include "phone-common.h"
+#include "Search/ContactLogRecord.h"
+#include "Search/ContactNumberRecord.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ using Database::Database;
+
+ DbDataProvider::DbDataProvider()
+ : m_Initialized(false)
+ {
+ PH_TRACE;
+ }
+
+ DbDataProvider::~DbDataProvider()
+ {
+ PH_TRACE;
+ contacts_db_remove_changed_cb(_contacts_number._uri, onContactNumberChange, this);
+ Database::getInstance().removeListener(_contacts_phone_log._uri, this);
+ }
+
+ bool DbDataProvider::initialize()
+ {
+ PH_TRACE;
+ if(!m_Initialized)
+ {
+ bool success = fetchNumbers() && fetchLogs();
+
+ if(success)
+ {
+ success = Database::isSuccess(
+ contacts_db_add_changed_cb(_contacts_number._uri, onContactNumberChange, this));
+ }
+
+ if(success)
+ {
+ success = Database::getInstance().addListener(_contacts_phone_log._uri, this);
+ }
+ else
+ {
+ contacts_db_remove_changed_cb(_contacts_number._uri, onContactNumberChange, this);
+ }
+
+ if(!success)
+ {
+ m_Numbers.clear();
+ m_Logs.clear();
+ }
+ else
+ {
+ m_Initialized = true;
+ }
+ }
+
+ return m_Initialized;
+ }
+
+ size_t DbDataProvider::getCount() const
+ {
+ return m_Numbers.size() + m_Logs.size();
+ }
+
+ ContactPtr DbDataProvider::getData(size_t index) const
+ {
+ if(index < m_Numbers.size())
+ {
+ return m_Numbers[index];
+ }
+ else
+ {
+ index -= m_Numbers.size();
+ if (index < m_Logs.size())
+ {
+ return m_Logs[index];
+ }
+ else
+ {
+ return ContactPtr();
+ }
+ }
+ }
+
+ bool DbDataProvider::fetchNumbers()
+ {
+ PH_TRACE;
+ contacts_query_h query = NULL;
+ contacts_list_h numbers = NULL;
+ unsigned count = 0;
+ unsigned ids[] = {
+ _contacts_contact_number.display_name,
+ _contacts_contact_number.number,
+ _contacts_contact_number.image_thumbnail_path
+ };
+
+ bool success = Database::isSuccess(
+ contacts_query_create(_contacts_contact_number._uri, &query))
+ && Database::isSuccess(
+ contacts_query_set_projection(query, ids, sizeof(ids) / sizeof(*ids)))
+ && Database::isSuccess(
+ contacts_db_get_records_with_query(query, 0, 0, &numbers))
+ && Database::isSuccess(
+ contacts_list_get_count(numbers, &count));
+
+ if(query)
+ {
+ contacts_query_destroy(query);
+ }
+
+ m_Numbers.clear();
+ DBG("count: %d", count);
+ while(success && count--)
+ {
+ contacts_record_h record = NULL;
+ success = Database::isSuccess(contacts_list_get_current_record_p(numbers, &record));
+
+ if(success)
+ {
+ ContactNumberRecord *contactNumber = new ContactNumberRecord();
+ success = contactNumber->initialize(record);
+ if(success)
+ {
+ m_Numbers.push_back(contactNumber);
+ }
+ else
+ {
+ delete contactNumber;
+ }
+
+ if(count)
+ {
+ success = Database::isSuccess(contacts_list_next(numbers));
+ }
+ }
+ }
+
+ if(numbers)
+ {
+ contacts_list_destroy(numbers, true);
+ }
+
+ return success;
+ }
+
+ bool DbDataProvider::fetchLogs()
+ {
+ PH_TRACE;
+ bool success = true;
+ unsigned ids[] = {
+ _contacts_person_phone_log.person_id,
+ _contacts_person_phone_log.address,
+ };
+ contacts_query_h query = NULL;
+ contacts_list_h logs = NULL;
+ unsigned count = 0;
+
+ success = Database::isSuccess(
+ contacts_query_create(_contacts_person_phone_log._uri, &query))
+ && Database::isSuccess(
+ contacts_query_set_projection(query, ids, sizeof(ids) / sizeof(*ids)))
+ && Database::isSuccess(
+ contacts_query_set_distinct(query, true))
+ && Database::isSuccess(
+ contacts_db_get_records_with_query(query, 0, 0, &logs))
+ && Database::isSuccess(
+ contacts_list_get_count(logs, &count));
+
+ if(query)
+ {
+ contacts_query_destroy(query);
+ }
+
+ DBG("count: %d", count);
+ while(success && count--)
+ {
+ int id = 0;
+ contacts_record_h record = NULL;
+
+ success = Database::isSuccess(
+ contacts_list_get_current_record_p(logs, &record))
+ && Database::isSuccess(
+ contacts_record_get_int(record, _contacts_person_phone_log.person_id, &id));
+
+ if(success)
+ {
+ if(id == 0)
+ {
+ ContactLogRecord *contactLog = new ContactLogRecord();
+ success = contactLog->initialize(record);
+ if(success)
+ {
+ m_Logs.push_back(contactLog);
+ }
+ else
+ {
+ delete contactLog;
+ }
+ }
+
+ if(count)
+ {
+ success = Database::isSuccess(contacts_list_next(logs));
+ }
+ }
+ }
+
+ if(logs)
+ {
+ contacts_list_destroy(logs, true);
+ }
+
+ return success;
+ }
+
+ void DbDataProvider::onRecordInsert(const char *uri, int id)
+ {
+ PH_TRACE;
+ if(!uri)
+ {
+ return;
+ }
+
+ if(strcmp(uri, _contacts_phone_log._uri) == 0)
+ {
+ onLogInsert(id);
+ }
+ }
+
+ void DbDataProvider::onNumberInsert(int id)
+ {
+ PH_TRACE;
+ ContactNumberRecord *contactNumber = new ContactNumberRecord();
+ if(contactNumber->initialize(id))
+ {
+ m_Numbers.push_back(contactNumber);
+ }
+ else
+ {
+ delete contactNumber;
+ }
+ }
+
+ void DbDataProvider::onLogInsert(int id)
+ {
+ PH_TRACE;
+ ContactLogRecord *contactLog = new ContactLogRecord();
+
+ if(contactLog->initialize(id))
+ {
+ bool exists = false;
+
+ //check if it's an unsaved number
+ if(contactLog->getPersonId() == 0)
+ {
+ //check if number wasn't already added
+ for(Contacts::iterator
+ it = m_Logs.begin();
+ it != m_Logs.end(); ++it)
+ {
+ if(contactLog->getNumber().compare((*it)->getNumber()) == 0)
+ {
+ exists = true;
+ break;
+ }
+ }
+ }
+ else
+ {
+ exists = true;
+ }
+
+ if(!exists)
+ {
+ m_Logs.push_back(contactLog);
+ }
+ else
+ {
+ delete contactLog;
+ }
+ }
+ else
+ {
+ delete contactLog;
+ }
+ }
+
+
+ void DbDataProvider::onContactNumberChange(const char *uri, void *data)
+ {
+ PH_TRACE;
+ DbDataProvider *dbDataProvider = static_cast<DbDataProvider*>(data);
+ if (!uri || !dbDataProvider)
+ {
+ return;
+ }
+
+ DBG("uri = %s", uri);
+ if (strcmp(uri,_contacts_number._uri) == 0)
+ {
+ dbDataProvider->fetchNumbers();
+ }
+ }
+ }
+ }
+}
diff --git a/lib/dialer/Search/DbDataProvider.h b/lib/dialer/Search/DbDataProvider.h
new file mode 100644
index 0000000..1d52082
--- /dev/null
+++ b/lib/dialer/Search/DbDataProvider.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_DIALER_SEARCH_DB_DATA_PROVIDER_H__
+#define __PHONE_DIALER_SEARCH_DB_DATA_PROVIDER_H__
+
+#include <vector>
+#include <contacts.h>
+
+#include "Contact.h"
+#include "Database/Database.h"
+#include "Database/Listener.h"
+#include "Search/DataProvider.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ /*
+ * @brief Database data provider for dialer search engine
+ * @details The provider fetches numbers from the address book
+ * and unsaved numbers from call logs and provides
+ * encapsulated access to this data.
+ * Provider updates its data based on changes made to the database.
+ */
+ class DbDataProvider :
+ public DataProvider,
+ public Database::Listener
+ {
+ public:
+ DbDataProvider();
+ virtual ~DbDataProvider();
+
+ /*
+ * @brief Initialize data provider and fetch initial data
+ * @return true on success, false otherwise
+ */
+ bool initialize();
+
+ /*
+ * @see DataProvider::getCount
+ */
+ virtual size_t getCount() const;
+
+ /*
+ * @see DataProvider::getData
+ */
+ virtual ContactPtr getData(size_t index) const;
+
+ private:
+ bool fetchNumbers();
+ bool fetchLogs();
+
+ void onRecordInsert(const char *uri, int id);
+ void onNumberInsert(int id);
+ void onLogInsert(int id);
+ static void onContactNumberChange(const char *uri, void *data);
+
+ bool m_Initialized;
+
+ typedef std::vector<ContactPtr> Contacts;
+ Contacts m_Numbers;
+ Contacts m_Logs;
+ };
+ }
+ }
+}
+
+#endif /* __PHONE_DIALER_SEARCH_DB_DATA_PROVIDER_H__ */
diff --git a/lib/dialer/Search/Engine.cpp b/lib/dialer/Search/Engine.cpp
new file mode 100644
index 0000000..a1b1d5d
--- /dev/null
+++ b/lib/dialer/Search/Engine.cpp
@@ -0,0 +1,265 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Search/Engine.h"
+
+#include "phone.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ Engine::Engine()
+ : m_DataProvider(NULL), m_Listener(NULL)
+ {
+ PH_TRACE;
+ }
+
+ Engine::~Engine()
+ {
+ PH_TRACE;
+ clearQuery();
+ }
+
+ bool Engine::initialize(const DataProvider &provider)
+ {
+ PH_TRACE;
+ m_DataProvider = &provider;
+ m_History.resize(1);
+ return true;
+ }
+
+ void Engine::setListener(EngineListener *listener)
+ {
+ PH_TRACE;
+ m_Listener = listener;
+ }
+
+ const std::string & Engine::getQuery() const
+ {
+ return m_Query;
+ }
+
+ void Engine::setQuery(const std::string &query)
+ {
+ PH_TRACE;
+ DBG("old query: %s", m_Query.c_str());
+ DBG("new query: %s", query.c_str());
+
+ std::string::const_iterator it1 = m_Query.begin();
+ std::string::const_iterator it2 = query.begin();
+
+ //find first position where old and new query mismatch
+ while(it1 != m_Query.end()
+ && it2 != query.end()
+ && *it1 == *it2)
+ {
+ ++it1;
+ ++it2;
+ }
+
+ if(it1 != m_Query.end())
+ {
+ truncateQuery(m_Query.end() - it1);
+ }
+
+ if(it2 != query.end())
+ {
+ appendQuery(query.substr(it2 - query.begin()));
+ }
+ }
+
+ void Engine::appendQuery(const std::string &str)
+ {
+ PH_TRACE;
+ DBG("old query: %s", m_Query.c_str());
+ m_Query.append(str);
+ DBG("new query: %s", m_Query.c_str());
+
+ //if there are no previous results
+ if(m_HistoryIndex.empty())
+ {
+ searchInContacts();
+ }
+ else
+ {
+ //use previous results for search
+ int prev = m_HistoryIndex.back();
+ if(!m_History.at(prev).empty())
+ {
+ m_History.resize(m_History.size() + 1);
+ searchInResults(m_History.at(prev));
+ }
+ }
+
+ m_HistoryIndex.resize(m_Query.length(), -1);
+ m_HistoryIndex.back() = m_History.size() - 1;
+ }
+
+ void Engine::truncateQuery(unsigned count)
+ {
+ PH_TRACE;
+ DBG("old query: %s", m_Query.c_str());
+
+ if(count >= m_Query.length())
+ {
+ clearQuery();
+ }
+ else
+ {
+ m_Query.erase(m_Query.length() - count);
+ DBG("new query: %s", m_Query.c_str());
+ m_HistoryIndex.resize(m_Query.length(), -1);
+
+ int prev = -1;
+ //find nearest previous results
+ for(HistoryIndex::reverse_iterator
+ it = m_HistoryIndex.rbegin();
+ it != m_HistoryIndex.rend(); ++it)
+ {
+ if(*it > -1)
+ {
+ prev = *it;
+ break;
+ }
+ }
+
+ //previous results found
+ if(prev > -1)
+ {
+ DBG("prev: %d", prev);
+ //remove all results after found results
+ m_History.erase(m_History.begin() + prev + 1, m_History.end());
+
+ //if found results correspond exactly to the new query
+ if(prev == m_HistoryIndex.back())
+ {
+ notifyChange();
+ }
+ else
+ {
+ m_History.resize(m_History.size() + 1);
+ searchInResults(m_History[prev]);
+ }
+ }
+ else
+ {
+ //no previous results found
+ m_History.back().clear();
+ searchInContacts();
+ }
+
+ m_HistoryIndex.back() = m_History.size() - 1;
+ }
+ }
+
+ void Engine::clearQuery()
+ {
+ PH_TRACE;
+ m_Query.clear();
+ m_HistoryIndex.clear();
+ m_History.resize(1);
+ m_History.back().clear();
+ notifyChange();
+ }
+
+ const Results & Engine::getResults() const
+ {
+ return m_History.back();
+ }
+
+ bool Engine::match(const ContactPtr &contact, Result &result)
+ {
+ return matchByNumber(contact, result) || matchByName(contact, result);
+ }
+
+ bool Engine::matchByNumber(const ContactPtr &contact, Result &result)
+ {
+ PH_TRACE;
+ size_t pos = contact->getNumber().find(m_Query);
+
+ if(pos != std::string::npos)
+ {
+ result = Result(contact, Result::ByNumber, pos, m_Query.length());
+ DBG("matched: %s", contact->getNumber().c_str());
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ bool Engine::matchByName(const ContactPtr &contact, Result &result)
+ {
+ PH_TRACE;
+ //TODO: implement match by name
+ return false;
+ }
+
+ void Engine::notifyChange()
+ {
+ PH_TRACE;
+ if(m_Listener)
+ {
+ m_Listener->onSearchResultsChange(m_History.back());
+ }
+ }
+
+ void Engine::searchInContacts()
+ {
+ PH_TRACE;
+ Result result;
+ Results &current = m_History.back();
+
+ size_t count = m_DataProvider->getCount();
+ for(size_t i = 0; i < count; ++i)
+ {
+ const ContactPtr &contact = m_DataProvider->getData(i);
+ if(contact && match(contact, result))
+ {
+ current.push_back(result);
+ }
+ }
+
+ DBG("count: %d", current.size());
+ notifyChange();
+ }
+
+ void Engine::searchInResults(const Results &results)
+ {
+ PH_TRACE;
+ Result result;
+ Results &current = m_History.back();
+
+ for(Results::const_iterator
+ it = results.begin();
+ it != results.end(); ++it)
+ {
+ if(match(it->getContact(), result))
+ {
+ current.push_back(result);
+ }
+ }
+
+ DBG("count: %d", current.size());
+ notifyChange();
+ }
+ }
+ }
+}
diff --git a/lib/dialer/Search/Engine.h b/lib/dialer/Search/Engine.h
new file mode 100644
index 0000000..0374953
--- /dev/null
+++ b/lib/dialer/Search/Engine.h
@@ -0,0 +1,202 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_DIALER_SEARCH_ENGINE_H__
+#define __PHONE_DIALER_SEARCH_ENGINE_H__
+
+#include <vector>
+#include <string>
+
+#include "NonCopyable.h"
+#include "Search/DataProvider.h"
+#include "Search/Result.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ /*
+ * @brief Dialer search engine event listener
+ */
+ class EngineListener
+ {
+ public:
+ virtual ~EngineListener() { }
+
+ /*
+ * @brief Called whenever search results were changed
+ * @param results Search results
+ */
+ virtual void onSearchResultsChange(const Results &results) = 0;
+ };
+
+ /*
+ * @brief Dialer incremental search engine
+ * @details Implements incremental search through provided contact data.
+ * Maintains incremental result history allowing to narrow the search
+ * for each next input into query and to fall back to previous results
+ * on query truncation.
+ */
+ class Engine : public Utils::NonCopyable
+ {
+ public:
+ Engine();
+ ~Engine();
+
+ /*
+ * @brief Initialize search engine
+ * @param provider Input data provider
+ * @see DataProvider
+ */
+ bool initialize(const DataProvider &provider);
+
+ /*
+ * @brief Set listener for search events
+ * @see EngineListener
+ */
+ void setListener(EngineListener *listener);
+
+ /*
+ * @return Current search query string
+ */
+ const std::string & getQuery() const;
+
+ /*
+ * @brief Set new query string and begin search
+ * @details Calculates the difference between the current query
+ * and the new query and uses appendQuery and truncateQuery
+ * as needed
+ * @param query Query string
+ */
+ void setQuery(const std::string &query);
+
+ /*
+ * @brief Append string to the current query string
+ * and begin search
+ * @details Search is performed through previous results if any
+ * or data provider is used
+ * @param str String to append to current query
+ */
+ void appendQuery(const std::string &str);
+
+ /*
+ * @brief Remove character from the end of current query string
+ * and begin search
+ * @details Falls back to previous results and performs search if necessary
+ * or uses data provider if there are no results to fall back to
+ * @param count Number of character to remove form the end of query string
+ */
+ void truncateQuery(unsigned count);
+
+ /*
+ * @brief Clear query string and remove all results
+ */
+ void clearQuery();
+
+ /*
+ * @return Current search results
+ */
+ const Results & getResults() const;
+
+ private:
+ bool match(const ContactPtr &contact, Result &result);
+ bool matchByNumber(const ContactPtr &contact, Result &result);
+ bool matchByName(const ContactPtr &contact, Result &result);
+
+ void notifyChange();
+
+ /*
+ * @brief Search through contact data using data provider
+ * @remarks Results are saved into m_History.back()
+ */
+ void searchInContacts();
+
+ /*
+ * @brief Search through provided results
+ * @remarks Results are saved into m_History.back()
+ * @param results Results to use as input data
+ */
+ void searchInResults(const Results &results);
+
+ typedef std::vector<Results> History;
+ typedef std::vector<int> HistoryIndex;
+
+ /*
+ * @brief Current search query
+ */
+ std::string m_Query;
+
+
+ /*
+ * @brief Incremental search history, maintains sets of results
+ * @details Each call to appendQuery adds one set of results
+ * to the history if previous results weren't empty.
+ * Each call to truncateQuery removes one or more
+ * result sets from the history.
+ */
+ History m_History;
+
+ /*
+ * @brief Maps each substring of the query string that begins at 0
+ * to the corresponding result set in result history.
+ * @details History index is always the same size as search query.
+ * Each substring of the query string that begins at 0
+ * and ends at N (subquery) has a corresponding element
+ * in history index at position N that contains the index
+ * of the result set for this subquery in search history.
+ *
+ * If there are no results for a subquery in search history
+ * then the value of corresponding element in history index
+ * is -1.
+ * @example
+ * @code
+ *
+ * DataProvider *provider = new SomeProvider();
+ * Engine engine;
+ * engine.initialize(*provider);
+ *
+ * engine.appendQuery("0");
+ * engine.appendQuery("9");
+ * engine.appendQuery("1");
+ * engine.setQuery("0913051032");
+ *
+ * @endcode
+ *
+ * Given the appropriate data provided by SomeProvider
+ * the engine will be in the following internal state:
+ *
+ * | 0| 9| 1| 3| 0| 5| 1| 0| 3| 2| <- m_Query
+ * | 0| 1| 2|-1|-1|-1|-1|-1|-1| 3| <- m_HistoryIndex
+ *
+ * | 0| 1| 2| 3| <- m_History indices
+ * ^ ^ ^ ^
+ * | | | 1 result (0913051032)
+ * | | 10 results
+ * | 16 results
+ * 23 results
+ */
+ HistoryIndex m_HistoryIndex;
+
+ const DataProvider *m_DataProvider;
+ EngineListener *m_Listener;
+ };
+ }
+ }
+}
+
+#endif /* __PHONE_DIALER_SEARCH_ENGINE_H__ */
diff --git a/lib/dialer/Search/Result.cpp b/lib/dialer/Search/Result.cpp
new file mode 100644
index 0000000..60a565a
--- /dev/null
+++ b/lib/dialer/Search/Result.cpp
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Search/Result.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ Result::Result()
+ : m_MatchType(ByNumber), m_MatchPos(0), m_MatchLength(0)
+ {
+ PH_TRACE;
+ }
+
+ Result::Result(const Result &result)
+ {
+ PH_TRACE;
+ *this = result;
+ }
+
+ Result::Result(const ContactPtr &contact, MatchType matchType,
+ size_t matchPos, size_t matchLength)
+ : m_Contact(contact), m_MatchType(matchType),
+ m_MatchPos(matchPos), m_MatchLength(matchLength)
+ {
+ PH_TRACE;
+ }
+
+ Result::MatchType Result::getMatchType() const
+ {
+ return m_MatchType;
+ }
+
+ const ContactPtr & Result::getContact() const
+ {
+ return m_Contact;
+ }
+
+ size_t Result::getMatchPos() const
+ {
+ return m_MatchPos;
+ }
+
+ size_t Result::getMatchLength() const
+ {
+ return m_MatchLength;
+ }
+
+ bool Result::formatMatch(std::string &formattedMatch,
+ const std::string &matchBegin,
+ const std::string &matchEnd) const
+ {
+ PH_TRACE;
+ const std::string *match = NULL;
+ if(m_MatchType == ByNumber)
+ {
+ match = &getContact()->getNumber();
+ }
+ else
+ {
+ match = &getContact()->getName();
+ }
+
+ if(match && match->length() >= m_MatchPos + m_MatchLength)
+ {
+ formattedMatch.clear();
+ if(m_MatchPos > 0)
+ {
+ formattedMatch.append(match->c_str(), m_MatchPos);
+ }
+
+ formattedMatch
+ .append(matchBegin)
+ .append(match->c_str() + m_MatchPos, m_MatchLength)
+ .append(matchEnd)
+ .append(match->c_str() + m_MatchPos + m_MatchLength);
+
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ Result & Result::operator=(const Result &result)
+ {
+ PH_TRACE;
+ m_MatchType = result.m_MatchType;
+ m_Contact = result.m_Contact;
+ m_MatchPos = result.m_MatchPos;
+ m_MatchLength = result.m_MatchLength;
+ return *this;
+ }
+ }
+ }
+}
diff --git a/lib/dialer/Search/Result.h b/lib/dialer/Search/Result.h
new file mode 100644
index 0000000..6bc8b1a
--- /dev/null
+++ b/lib/dialer/Search/Result.h
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_DIALER_SEARCH_RESULT_H__
+#define __PHONE_DIALER_SEARCH_RESULT_H__
+
+#include <vector>
+#include <string>
+
+#include "Contact.h"
+#include "SharedPtr.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ typedef Utils::SharedPtr<Common::Contact> ContactPtr;
+
+ /*
+ * @brief Dialer search result data
+ */
+ class Result
+ {
+ public:
+ /*
+ * @brief Specifies by which field contact data matches search query
+ */
+ enum MatchType
+ {
+ ByNumber,
+ ByName
+ };
+
+ Result();
+ Result(const Result &result);
+ Result(const ContactPtr &contact, MatchType matchType,
+ size_t matchPos, size_t matchLength);
+
+ /*
+ * @return Type of the result
+ * @see Result::MatchType
+ */
+ MatchType getMatchType() const;
+
+ /*
+ * @return Contact data associated with result
+ */
+ const ContactPtr & getContact() const;
+
+ /*
+ * @return Start position of the match in matched string
+ */
+ size_t getMatchPos() const;
+
+ /*
+ * @return Length of matched substring (i.e. length of search query)
+ */
+ size_t getMatchLength() const;
+
+ /*
+ * @brief Format matched field by prepending matchBegin
+ * and appending matchEnd strings to the matching substring.
+ * @par example
+ * If contact's number is "1234567" and search query is "34"
+ * then the following code:
+ *
+ * @code
+ * std::string match;
+ * result.formatMatch(match, "<match>", "</>");
+ * @endcode
+ *
+ * will write "12<match>34</>567" in "match" string
+ *
+ * @param[out] formattedMatch Formatted match string
+ * @param[in] matchBegin String to prepend matching substring with
+ * @param[in] matchEnd String to append to matching substring
+ * @return true on success, false otherwise
+ */
+ bool formatMatch(std::string &formattedMatch,
+ const std::string &matchBegin,
+ const std::string &matchEnd) const;
+
+ Result & operator=(const Result &result);
+
+ private:
+ ContactPtr m_Contact;
+ MatchType m_MatchType;
+ size_t m_MatchPos;
+ size_t m_MatchLength;
+ };
+
+ typedef std::vector<Result> Results;
+ }
+ }
+}
+
+#endif /* __PHONE_DIALER_SEARCH_RESULT_H__ */
diff --git a/lib/dialer/Search/ResultItem.cpp b/lib/dialer/Search/ResultItem.cpp
new file mode 100644
index 0000000..f002fb8
--- /dev/null
+++ b/lib/dialer/Search/ResultItem.cpp
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Search/ResultItem.h"
+#include "phone.h"
+#include "phone-common.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ ResultItem::ResultItem(const Result &result)
+ : m_Result(result)
+ {
+ PH_TRACE;
+ getResult().formatMatch(m_Match, "<match>", "</>");
+ }
+
+ char * ResultItem::getText(const char *part) const
+ {
+ PH_TRACE;
+ if(getResult().getMatchType() == Result::ByNumber)
+ {
+ return strdup(getMatch());
+ }
+ else
+ {
+ return strdup(getResult().getContact()->getNumber().c_str());
+ }
+ }
+
+ Evas_Object * ResultItem::getContent(const char *part, Evas_Object *parent) const
+ {
+ PH_TRACE;
+ Evas_Object *icon = elm_icon_add(parent);
+ if(icon)
+ {
+ const char *path = NULL;
+ if(getResult().getContact()->getImagePath().empty())
+ {
+ path = IMG_DEFAULT;
+ }
+ else
+ {
+ path = getResult().getContact()->getImagePath().c_str();
+ }
+
+ Eina_Bool success = elm_image_file_set(icon, path, NULL);
+ if(!success)
+ {
+ evas_object_del(icon);
+ ERR("elm_image_file_set failed, path: %s", path);
+ }
+ }
+ else
+ {
+ ERR("elm_icon_add failed");
+ }
+
+ return icon;
+ }
+
+ Elm_Genlist_Item_Class * ResultItem::getClass() const
+ {
+ static Elm_Genlist_Item_Class *itemClass = createClass("1text.1icon.2.tb");
+ return itemClass;
+ }
+
+ const Result & ResultItem::getResult() const
+ {
+ return m_Result;
+ }
+
+ const char * ResultItem::getMatch() const
+ {
+ return m_Match.c_str();
+ }
+ }
+ }
+}
diff --git a/lib/dialer/Search/ResultItem.h b/lib/dialer/Search/ResultItem.h
new file mode 100644
index 0000000..fcb1ed8
--- /dev/null
+++ b/lib/dialer/Search/ResultItem.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_DIALER_SEARCH_RESULT_ITEM_H__
+#define __PHONE_DIALER_SEARCH_RESULT_ITEM_H__
+
+#include <string>
+#include "Item.h"
+#include "Search/Result.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ /*
+ * @brief Search results list item without Contact name
+ * @details Displays matched number and highlights the match.
+ */
+ class ResultItem : public Ui::Genlist::Item
+ {
+ public:
+ /*
+ * @param result Search result associated with the item
+ */
+ ResultItem(const Result &result);
+
+ /*
+ * @see Genlist::Item::getText
+ */
+ char * getText(const char *part) const;
+
+ /*
+ * @see Genlist::Item::getContent
+ */
+ Evas_Object * getContent(const char *part, Evas_Object *parent) const;
+
+ /*
+ * @see Genlist::Item::getClass
+ */
+ Elm_Genlist_Item_Class * getClass() const;
+
+ /*
+ * @return Search result associated with item
+ */
+ const Result & getResult() const;
+
+ protected:
+ /*
+ * @return Search match string with textblock markup
+ */
+ const char * getMatch() const;
+
+ private:
+ Result m_Result;
+ std::string m_Match;
+ };
+ }
+ }
+}
+
+#endif /* __PHONE_DIALER_SEARCH_RESULT_ITEM_H__ */
diff --git a/lib/dialer/Search/ResultPopup.cpp b/lib/dialer/Search/ResultPopup.cpp
new file mode 100644
index 0000000..fa06be8
--- /dev/null
+++ b/lib/dialer/Search/ResultPopup.cpp
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Search/ResultPopup.h"
+
+#include "phone.h"
+#include "phone-common.h"
+#include "Search/ContactItem.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ ResultPopup::ResultPopup()
+ : m_Popup(NULL), m_Listener(NULL)
+ {
+ PH_TRACE;
+ }
+
+ ResultPopup::~ResultPopup()
+ {
+ PH_TRACE;
+ if(m_Popup)
+ {
+ evas_object_del(m_Popup);
+ m_Popup = NULL;
+ }
+ }
+
+ bool ResultPopup::initialize(Evas_Object *parent)
+ {
+ PH_TRACE;
+ m_Popup = elm_popup_add(parent);
+ if(!m_Popup)
+ {
+ return false;
+ }
+
+ elm_object_style_set(m_Popup, "min_menustyle");
+ evas_object_smart_callback_add(m_Popup, "block,clicked", onHide, this);
+ evas_object_size_hint_weight_set(m_Popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ Evas_Object *button = elm_button_add(m_Popup);
+ if(!button)
+ {
+ evas_object_del(m_Popup);
+ m_Popup = NULL;
+ return false;
+ }
+
+ elm_object_text_set(button, S_(PH_SYS_SK_CANCEL));
+ elm_object_part_content_set(m_Popup, "button1", button);
+ evas_object_smart_callback_add(button, "clicked", onHide, this);
+
+ if(!m_ResultList.create(m_Popup))
+ {
+ evas_object_del(m_Popup);
+ m_Popup = NULL;
+ return false;
+ }
+
+ elm_object_content_set(m_Popup, m_ResultList.getObject());
+ evas_object_smart_callback_add(m_ResultList.getObject(), "selected", onResultSelect, this);
+ return true;
+ }
+
+ void ResultPopup::setListener(ResultPopupListener *listener)
+ {
+ m_Listener = listener;
+ }
+
+ Evas_Object * ResultPopup::getPopup() const
+ {
+ return m_Popup;
+ }
+
+ void ResultPopup::setResults(const Results &results)
+ {
+ PH_TRACE;
+ elm_genlist_clear(m_ResultList.getObject());
+ for(Results::const_iterator
+ it = results.begin();
+ it != results.end(); ++it)
+ {
+ if(!it->getContact()->getName().empty())
+ {
+ m_ResultList.append(new ContactItem(*it));
+ }
+ else
+ {
+ m_ResultList.append(new ResultItem(*it));
+ }
+ }
+ }
+
+ void ResultPopup::show()
+ {
+ PH_TRACE;
+ if(m_Popup)
+ {
+ evas_object_show(m_Popup);
+ }
+ }
+
+ void ResultPopup::hide()
+ {
+ PH_TRACE;
+ if(m_Popup)
+ {
+ evas_object_hide(m_Popup);
+ }
+ }
+
+ void ResultPopup::onHide(void *data, Evas_Object *obj, void *event)
+ {
+ PH_TRACE;
+ if(data)
+ {
+ static_cast<ResultPopup*>(data)->hide();
+ }
+ }
+
+ void ResultPopup::onResultSelect(void *data, Evas_Object *obj, void *event_info)
+ {
+ PH_TRACE;
+ if(!data || !event_info)
+ {
+ return;
+ }
+
+ ResultPopup *popup = static_cast<ResultPopup*>(data);
+ Elm_Object_Item *objItem = static_cast<Elm_Object_Item*>(event_info);
+ ResultItem *item = static_cast<ResultItem*>(elm_object_item_data_get(objItem));
+
+ popup->hide();
+ if(popup->m_Listener)
+ {
+ popup->m_Listener->onSearchResultSelect(item->getResult());
+ }
+ }
+ }
+ }
+}
+
diff --git a/lib/dialer/Search/ResultPopup.h b/lib/dialer/Search/ResultPopup.h
new file mode 100644
index 0000000..e4500c3
--- /dev/null
+++ b/lib/dialer/Search/ResultPopup.h
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_DIALER_SEARCH_RESULT_POPUP_H__
+#define __PHONE_DIALER_SEARCH_RESULT_POPUP_H__
+
+#include <Elementary.h>
+#include "NonCopyable.h"
+#include "Genlist.h"
+#include "Search/Result.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ /*
+ * @brief Dialer search result popup event listener
+ */
+ class ResultPopupListener
+ {
+ public:
+ virtual ~ResultPopupListener() { }
+
+ /*
+ * @brief Called when result is selected from result list
+ * @param result Selected result
+ */
+ virtual void onSearchResultSelect(const Result &result) = 0;
+ };
+
+ class ResultPopup : public Utils::NonCopyable
+ {
+ public:
+ ResultPopup();
+ ~ResultPopup();
+
+ /*
+ * @brief Initialize popup.
+ * @param parent Parent Evas object for popup
+ */
+ bool initialize(Evas_Object *parent);
+
+ /*
+ * @param listener Popup events listener
+ */
+ void setListener(ResultPopupListener *listener);
+
+ /*
+ * @return Popup Evas object
+ */
+ Evas_Object * getPopup() const;
+
+ /*
+ * @brief Set search results to be displayed in popup.
+ * @param results Search results
+ */
+ void setResults(const Results &results);
+
+ /*
+ * @brief Show popup.
+ */
+ void show();
+
+ /*
+ * @brief Hide popup.
+ */
+ void hide();
+
+ private:
+ static void onHide(void *data, Evas_Object *obj, void *event_info);
+ static void onResultSelect(void *data, Evas_Object *obj, void *event_info);
+
+ Evas_Object *m_Popup;
+ Ui::Genlist::Genlist m_ResultList;
+ ResultPopupListener *m_Listener;
+ };
+ }
+ }
+}
+
+#endif /* __PHONE_DIALER_SEARCH_RESULT_POPUP_H__ */
diff --git a/lib/dialer/Search/ResultWidget.cpp b/lib/dialer/Search/ResultWidget.cpp
new file mode 100644
index 0000000..ab89fc2
--- /dev/null
+++ b/lib/dialer/Search/ResultWidget.cpp
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Search/ResultWidget.h"
+
+#include "phone.h"
+#include "phone-common.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ ResultWidget::ResultWidget()
+ : m_Layout(NULL), m_Icon(NULL), m_Listener(NULL)
+ {
+ PH_TRACE;
+ }
+
+ ResultWidget::~ResultWidget()
+ {
+ PH_TRACE;
+ if(m_Icon)
+ {
+ evas_object_del(m_Icon);
+ m_Icon = NULL;
+ }
+ }
+
+ bool ResultWidget::initialize(Evas_Object *layout)
+ {
+ PH_TRACE;
+ if(!layout)
+ {
+ return false;
+ }
+
+ m_Icon = elm_icon_add(layout);
+ if(!m_Icon)
+ {
+ return false;
+ }
+ elm_object_part_content_set(layout, "icon", m_Icon);
+ edje_object_signal_callback_add(_EDJ(layout), "softkey_clicked", "*", onLayoutEvent, this);
+
+ m_Layout = layout;
+ return true;
+ }
+
+ void ResultWidget::setListener(ResultWidgetListener *listener)
+ {
+ m_Listener = listener;
+ }
+
+ void ResultWidget::setResult(const Result &result)
+ {
+ PH_TRACE;
+
+ std::string number;
+ result.formatMatch(number, "<mark>", "</mark>");
+
+ elm_object_part_text_set(m_Layout, "textName", result.getContact()->getName().c_str());
+ elm_object_part_text_set(m_Layout, "textNumber", number.c_str());
+
+ const char *path = NULL;
+ if(result.getContact()->getImagePath().empty())
+ {
+ path = IMG_DEFAULT;
+ }
+ else
+ {
+ path = result.getContact()->getImagePath().c_str();
+ }
+
+ elm_image_file_set(m_Icon, path, NULL);
+ }
+
+ void ResultWidget::setResultCount(unsigned count)
+ {
+ PH_TRACE;
+ if(count == 0)
+ {
+ char buffer[PH_TEXT_MAX_LEN] = { 0 };
+ sprintf(buffer, "+ %s", T_(PH_GET_TEXT_BASIC, PHTEXT_ADD_TO_CONTACTS));
+ elm_object_part_text_set(m_Layout, "textAddToContacts", buffer);
+ edje_object_signal_emit(_EDJ(m_Layout), "suggestion/showAddToContacts", "suggestion");
+ }
+ else if(count == 1)
+ {
+ edje_object_signal_emit(_EDJ(m_Layout), "suggestion/showSingleItemView", "suggestion");
+ }
+ else
+ {
+ char matchCount[16];
+ sprintf(matchCount, "%d", count);
+ elm_object_part_text_set(m_Layout, "textNumberOfMatches", matchCount);
+ edje_object_signal_emit(_EDJ(m_Layout), "suggestion/showMultiItemView", "suggestion");
+ }
+ }
+
+ void ResultWidget::hide()
+ {
+ PH_TRACE;
+ edje_object_signal_emit(_EDJ(m_Layout), "suggestion/hide", "suggestion");
+ }
+
+ void ResultWidget::onLayoutEvent(void *data, Evas_Object *obj, const char *emission, const char *source)
+ {
+ PH_TRACE;
+ if(!data || !source)
+ {
+ return;
+ }
+
+ ResultWidgetListener *listener = static_cast<ResultWidget*>(data)->m_Listener;
+ if(!listener)
+ {
+ DBG("no listener");
+ return;
+ }
+
+ if(strcmp(source, "suggestion") == 0)
+ {
+ listener->onAddToContacts();
+ }
+ else if(strcmp(source, "suggestionListTopItem") == 0)
+ {
+ listener->onTopResultSelect();
+ }
+ else if(strcmp(source, "suggestionListButton") == 0)
+ {
+ listener->onShowMoreResults();
+ }
+ }
+ }
+ }
+}
diff --git a/lib/dialer/Search/ResultWidget.h b/lib/dialer/Search/ResultWidget.h
new file mode 100644
index 0000000..fda0d2b
--- /dev/null
+++ b/lib/dialer/Search/ResultWidget.h
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_DIALER_SEARCH_RESULT_WIDGET_H__
+#define __PHONE_DIALER_SEARCH_RESULT_WIDGET_H__
+
+#include <Elementary.h>
+#include "Search/Result.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ /*
+ * @brief Listener for search result widget events
+ */
+ class ResultWidgetListener
+ {
+ public:
+ virtual ~ResultWidgetListener() { }
+
+ /*
+ * @brief Called when "Add to Contact" button is pressed
+ */
+ virtual void onAddToContacts() = 0;
+
+ /*
+ * @brief Called when displayed top search result is selected
+ */
+ virtual void onTopResultSelect() = 0;
+
+ /*
+ * @brief Called when show more results button is pressed
+ */
+ virtual void onShowMoreResults() = 0;
+ };
+
+ /*
+ * @brief Displays information about last search
+ * @details Displays top search result and number of results
+ * on More Results button or "Add to Contacts" button if no results
+ */
+ class ResultWidget
+ {
+ public:
+ ResultWidget();
+ ~ResultWidget();
+
+ /*
+ * @brief Initialize widget.
+ * @param layout Widget Edje layout
+ */
+ bool initialize(Evas_Object *layout);
+
+ /*
+ * @param listener Widget event listener
+ */
+ void setListener(ResultWidgetListener *listener);
+
+ /*
+ * @brief Set search result to be displayed by widget.
+ * @param result Top search result
+ */
+ void setResult(const Result &result);
+
+ /*
+ * @brief Set search results count to be displayed on More Results button.
+ * @param count Results count
+ */
+ void setResultCount(unsigned count);
+
+ /*
+ * @brief Hide widget
+ */
+ void hide();
+
+ private:
+ static void onLayoutEvent(void *data, Evas_Object *obj, const char *emission, const char *source);
+
+ Evas_Object *m_Layout;
+ Evas_Object *m_Icon;
+ ResultWidgetListener *m_Listener;
+ };
+ }
+ }
+}
+
+#endif /* __PHONE_DIALER_SEARCH_RESULT_WIDGET_H__ */
diff --git a/lib/dialer/dialer-efl.desktop.in b/lib/dialer/dialer-efl.desktop.in
new file mode 100644
index 0000000..ea965ed
--- /dev/null
+++ b/lib/dialer/dialer-efl.desktop.in
@@ -0,0 +1,10 @@
+Name=dialer-efl
+Exec=/opt/ug/bin/dialer-efl
+Icon=
+Type=Application
+Version=0.1.0-0
+NoDisplay=true
+X-TIZEN-Multiple=true
+X-TIZEN-TaskManage=false
+X-TIZEN-Removable=true
+X-TIZEN-SVC=http://tizen.org/appsvc/operation/test|NULL|NULL
diff --git a/lib/dialer/dialer-efl.xml b/lib/dialer/dialer-efl.xml
new file mode 100644
index 0000000..9d0926d
--- /dev/null
+++ b/lib/dialer/dialer-efl.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="dialer-efl" version="0.1.0-0" install-location="internal-only">
+ <label>dialer</label>
+ <author email="ensung.park@samsung.com" href="www.samsung.com">ensung park</author>
+ <description>dialer-efl Application</description>
+ <ui-application appid="dialer-efl" exec="/usr/ug/bin/dialer-efl" nodisplay="true" multiple="true" type="capp" taskmanage="false">
+ <icon>org.tizen.phone.png</icon>
+ <label>dialer</label>
+ <label xml:lang="en-us">dialer</label>
+ <label xml:lang="nl-nl">dialer</label>
+ <label xml:lang="de-de">dialer</label>
+ <label xml:lang="en-gb">dialer</label>
+ <label xml:lang="zh-hk">dialer</label>
+ <label xml:lang="zh-cn">dialer</label>
+ <label xml:lang="ru-ru">dialer</label>
+ <label xml:lang="zh-tw">dialer</label>
+ <label xml:lang="ja-jp">dialer</label>
+ <label xml:lang="es-es">dialer</label>
+ <label xml:lang="el-gr">dialer</label>
+ <label xml:lang="it-it">dialer</label>
+ <label xml:lang="tr-tr">dialer</label>
+ <label xml:lang="pt-pt">dialer</label>
+ <label xml:lang="fr-fr">dialer</label>
+ <label xml:lang="ko-kr">dialer</label>
+ <application-service>
+ <operation name="http://tizen.org/ns/packages"/>
+ </application-service>
+ </ui-application>
+</manifest>
diff --git a/lib/dialer/include/KeypadTouchManager.h b/lib/dialer/include/KeypadTouchManager.h
new file mode 100644
index 0000000..03b02fc
--- /dev/null
+++ b/lib/dialer/include/KeypadTouchManager.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef KEYPADTOUCHMANAGER_H_
+#define KEYPADTOUCHMANAGER_H_
+
+#include <stddef.h>
+#include <Ecore.h>
+#include <Evas.h>
+#include <string>
+#include <vector>
+#include <set>
+
+namespace Dialer
+{
+ /**
+ * KeypadTouchManager is responsible for managing and handling touch-events on numeric keypad.
+ * After initialising it start listening the following events:
+ * - EVAS_CALLBACK_MOUSE_DOWN
+ * - EVAS_CALLBACK_MOUSE_UP
+ * - EVAS_CALLBACK_MULTI_DOWN
+ * - EVAS_CALLBACK_MULTI_UP.
+ *
+ * At the moment of multiple down event KeypadTouchManager starts single-tick timer that will
+ * send key-up for keys that were pressed before.
+ * */
+ class KeypadTouchManager
+ {
+ static const size_t ROWS = 4;
+ static const size_t COLS = 3;
+ static const size_t MULTI_TOUCH_SUPPORT_KEY_COUNT = ROWS * COLS;
+ static const size_t WRONG_KEY_INDEX = MULTI_TOUCH_SUPPORT_KEY_COUNT + 1;
+ public:
+ KeypadTouchManager();
+ virtual ~KeypadTouchManager();
+
+ /**
+ * Initialises the manager and key-pad area with numeric buttons.
+ * @param pLayout is a layout-object keypad will be based on.
+ * */
+ void initKeyPadArea(const Evas_Object* pLayout);
+
+ /**
+ * Stops timer if it was started otherwise does nothing.
+ * */
+ void stopTimer();
+ private:
+ static Eina_Bool onTimer(void *data);
+ static void onKeyUp(void *data, Evas *e, Evas_Object *o, void *event_info);
+ static void onKeyDown(void *data, Evas *e, Evas_Object *o, void *event_info);
+ static void onMultiKeyUp(void *data, Evas *e, Evas_Object *o, void *event_info);
+ static void onMultiKeyDown(void *data, Evas *e, Evas_Object *o, void *event_info);
+
+ static bool isPtInRect(const Evas_Coord_Rectangle& rect, int x, int y);
+ private:
+ void handleKeyUp(int x, int y);
+ void handleMultiKeyUp(int x, int y);
+ void handleKeyDown(int x, int y);
+ void handleMultiKeyDown(int x, int y);
+ void storeTouchedKey(int x, int y);
+ void sendEdjeSignal(int x, int y, const char* sygnal);
+ void handleTouchedKeys();
+ size_t getTouchedKeyRectIndex(int x, int y) const;
+
+ typedef std::vector<std::string> ButtonNameContainer;
+ ButtonNameContainer m_digitalButtonNames;
+
+ Evas_Coord_Rectangle m_dialButtonRects[MULTI_TOUCH_SUPPORT_KEY_COUNT];
+ Evas_Coord_Rectangle m_background;
+
+ _Evas_Point m_lastDownPt;
+ bool m_lastDown;
+ bool m_lastMultiDown;
+ Ecore_Timer *m_keypadResetTimer;
+
+ typedef std::set<size_t> TouchedButtonsIndexes;
+ TouchedButtonsIndexes m_touchedBtns;
+
+ Evas_Object* m_pLayout;
+ };
+} /* namespace Dialer */
+#endif /* KEYPADTOUCHMANAGER_H_ */
diff --git a/lib/dialer/include/phone-dialer.h b/lib/dialer/include/phone-dialer.h
new file mode 100755
index 0000000..b9fbe96
--- /dev/null
+++ b/lib/dialer/include/phone-dialer.h
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_DIALER_H__
+#define __PHONE_DIALER_H__
+
+#include "phone-common.h"
+
+namespace Phone
+{
+ namespace Dialer
+ {
+ namespace Search
+ {
+ class Controller;
+ }
+ }
+}
+
+#define MAX_DIAL_NUMBER_FONT_SIZE 100
+#define MIN_DIAL_NUMBER_FONT_SIZE 67
+
+#define CURSOR_BEGIN -1
+#define CURSOR_END -2
+
+#define PH_TAG_TEXT_MAX_LEN (PH_TEXT_MAX_LEN*2)
+
+enum PH_DAILER_TYPES
+{
+ PH_DAILER_NORMAL = 0,
+ PH_DAILER_DURING_CALL,
+ PH_DAILER_EMERGENCY
+};
+
+enum
+{
+ CONTACT_DATA_CHAGNED = 1 << 0,
+ LOG_DATA_CHAGNED = 1 << 1,
+ SPEEDDIAL_DATA_CHAGNED = 1 << 2,
+};
+
+typedef enum
+{
+ MODE_DIAL_NUMBER = 0,
+ MODE_COUNTRY_CODE
+} ListMode;
+
+typedef enum
+{
+ DASH_REAL = 1,
+ DASH_PREVIEW = DASH_REAL
+} DashMode;
+
+typedef struct _InputNumber
+{
+ char num;
+
+ struct _InputNumber *prev;
+ struct _InputNumber *next;
+} InputNumber;
+
+typedef struct
+{
+ bool alive;
+ bool success;
+ bool completed;
+ pthread_t thread;
+ Ecore_Pipe *epipe;
+} ph_thread_info;
+
+typedef struct DialerView : public Common::View
+{
+ Evas_Object *entry;
+ Evas_Object *genlist;
+ Evas_Object *fast_index;
+ Evas_Object *count_button;
+ Evas_Object *count_layout;
+ Ecore_Timer *search_timer;
+ Ecore_Timer *dash_timer;
+ Ecore_Timer *longpress_timer;
+ Ecore_Timer *update_timer;
+ Ecore_Timer *slide_timer;
+ Ecore_Job *job;
+ Ecore_Idler *search_idler;
+ Ecore_Event_Handler *key_press;
+ Ecore_Event_Handler *key_release;
+ char *longpress_source;
+ char *searched_text;
+ char* selected_text;
+ InputNumber number_head;
+ InputNumber *number_cursor;
+ int cur_mcc;
+ int cur_sim_mcc;
+ int cur_cc_index;
+ int roaming;
+ int entry_font_size;
+ int count_button_status;
+ int run_mode;
+ int compare_N;
+ int show_N;
+ int searched_speed_id;
+ int data_dirty_flag;
+ int touch_x;
+ int touch_y;
+ ListMode list_mode;
+ bool is_background;
+ bool is_emergency;
+ bool cursor_changed;
+ bool is_show_items;
+ bool has_focus;
+ bool initialized;
+ bool searching;
+ bool loading;
+ bool slide;
+ ph_thread_info *t_info; // load contact
+ Eina_List *search_list;
+ Eina_List *contact_list;
+ Eina_List *speeddial_list;
+ Eina_List *log_list;
+ Eina_List *cc_list;
+ Eina_List *cc_list_sorted;
+ Phone::Dialer::Search::Controller *m_Search;
+} ph_dialer_data;
+
+Evas_Object* phone_create_dialer_view(ph_view_info *view_info);
+void phone_dialer_set_navi(Evas_Object *layout);
+void phone_dialer_check_focus(Evas_Object *base);
+void phone_dialer_view_reset(Evas_Object *base);
+void phone_dialer_view_language_changed(Evas_Object *layout);
+void phone_dialer_view_resume(Evas_Object *base);
+void phone_dialer_set_background(Evas_Object *obj, bool is_background);
+void phone_dialer_view_set_num(Evas_Object *layout, char *number);
+void phone_dialer_view_send_key(Evas_Object *layout);
+
+#endif /* __PHONE_DIALER_H__ */
diff --git a/lib/dialer/ph-dialer-main.cpp b/lib/dialer/ph-dialer-main.cpp
new file mode 100755
index 0000000..618623a
--- /dev/null
+++ b/lib/dialer/ph-dialer-main.cpp
@@ -0,0 +1,238 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <bundle.h>
+#include <ui-gadget-module.h>
+#include <efl_assist.h>
+
+#include "phone.h"
+#include "phone-dialer.h"
+
+#include "ph-dialer-view.h"
+#include "ph-dialer-utils.h"
+#include "ViewManager.h"
+
+static bool is_ug_exist = false;
+
+static bool dialer_create_ug_view(ph_dialer_data *dial_d, Evas_Object *base)
+{
+ PH_TRACE;
+ int ret;
+ const char *title;
+ p_retvm_if(NULL == dial_d, false, "Parameter is null");
+
+ if (NULL == dial_d->navi)
+ {
+ dial_d->navi = elm_naviframe_add(base);
+ p_retvm_if(NULL == dial_d->navi, false, "elm_naviframe_add is failed");
+ ea_object_event_callback_add(dial_d->navi, EA_CALLBACK_BACK, &Common::ViewManager::onBack, dial_d->win);
+ ea_object_event_callback_add(dial_d->navi, EA_CALLBACK_MORE, &Common::ViewManager::onMenu, NULL);
+ elm_object_part_content_set(base, "elm.swallow.content", dial_d->navi);
+ evas_object_show(dial_d->navi);
+ }
+
+ ret = ph_dialer_create_content(dial_d);
+ p_retvm_if(ret < 0, false, "Fail to ph_dialer_create_content");
+ if (dial_d->is_emergency)
+ title = T_(PH_GET_TEXT_BASIC, PHTEXT_EMERGENCY_CALL);
+ else
+ title = T_(PH_GET_TEXT_BASIC, PHTEXT_KEYPAD);
+
+ elm_naviframe_item_push(dial_d->navi, title, NULL, NULL, dial_d->layout,
+ NULL);
+
+ return true;
+}
+
+void* dialer_on_create(ui_gadget_h ug, enum ug_mode mode, service_h service,
+ void *priv)
+{
+ PH_TRACE;
+ int ret;
+ char *val = NULL;
+ Evas_Object *bg;
+ Evas_Object *parent;
+ Evas_Object *base;
+ ph_dialer_data *dial_d = (ph_dialer_data *) priv;
+ bundle *data;
+
+ p_retvm_if(true == is_ug_exist, NULL, "dialer_emergency ug already exist");
+ is_ug_exist = true;
+
+ p_retvm_if(NULL == ug || NULL == priv, NULL,
+ "The parameter is invalid(ug=%p, priv=%p)", ug, priv);
+
+ parent = (Evas_Object *) ug_get_parent_layout(ug);
+ p_retvm_if(NULL == parent, NULL, "ug_get_parent_layout() return NULL");
+ dial_d->ug = ug;
+ dial_d->win = (Evas_Object *) ug_get_window();
+ elm_win_wm_rotation_available_rotations_set(dial_d->win, NULL, 0);
+ elm_win_wm_rotation_preferred_rotation_set(dial_d->win, 0);
+
+ bindtextdomain(PACKAGE, LOCALEDIR);
+
+ service_to_bundle(service, &data);
+ ret = contacts_connect2();
+ if (CONTACTS_ERROR_NONE != ret)
+ {
+ bundle_free(data);
+ p_warn_if(CONTACTS_ERROR_NONE != ret, "contacts_connect2() Failed(%d)",
+ ret);
+ return NULL;
+ }
+
+ val = (char*) bundle_get_val(data, "emergency_dialer");
+ if (val && 0 == strcmp(val, "emergency"))
+ dial_d->is_emergency = true;
+ else
+ dial_d->is_emergency = false;
+ bundle_free(data);
+
+ if (UG_MODE_FULLVIEW == mode)
+ base = phone_create_base_layout(parent, true);
+ else
+ base = phone_create_base_layout(parent, false);
+
+ bg = phone_create_bg(base);
+ if (NULL == bg)
+ {
+ PH_DBG("phone_create_bg() return NULL");
+ evas_object_del(base);
+ ret = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != ret,
+ "contacts_disconnect2() Failed(%d)", ret);
+ return NULL;
+ }
+
+ if (!dialer_create_ug_view(dial_d, base))
+ {
+ evas_object_del(base);
+ ret = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != ret,
+ "contacts_disconnect2() Failed(%d)", ret);
+ base = NULL;
+ }
+ return base;
+}
+
+static void dialer_on_event(ui_gadget_h ug, enum ug_event event,
+ service_h service, void *priv)
+{
+ PH_TRACE;
+ ph_dialer_data *dial_d = (ph_dialer_data *) priv;
+
+ switch (event)
+ {
+ case UG_EVENT_ROTATE_PORTRAIT:
+ case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+ case UG_EVENT_ROTATE_LANDSCAPE:
+ case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+ break;
+ case UG_EVENT_LANG_CHANGE:
+ phone_dialer_view_language_changed(dial_d->layout);
+ break;
+ default:
+ break;
+ }
+}
+
+static void dialer_on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ ph_dialer_data *dial_d = (ph_dialer_data *) priv;
+ dial_d->is_background = true;
+}
+
+static void dialer_on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ ph_dialer_data *dial_d = (ph_dialer_data *) priv;
+ dial_d->is_background = false;
+ if (dial_d->update_timer)
+ {
+ ecore_timer_del(dial_d->update_timer);
+ dial_d->update_timer = NULL;
+ ph_dialer_reload_data(dial_d);
+ }
+}
+
+static void dialer_on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ if (!ug)
+ return;
+ elm_win_wm_rotation_preferred_rotation_set((Evas_Object *) ug_get_window(), -1);
+ evas_object_del((Evas_Object *) ug_get_layout(ug));
+ contacts_disconnect2();
+}
+
+static void dialer_on_message(ui_gadget_h ug, service_h msg, service_h service,
+ void *priv)
+{
+ PH_TRACE;
+}
+
+extern "C" API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ ph_dialer_data *dial_d;
+ p_retvm_if(NULL == ops, -1, "ops is NULL");
+
+ dial_d = (ph_dialer_data *) calloc(1, sizeof(ph_dialer_data));
+ p_retvm_if(NULL == dial_d, -1, "dial_d is NULL, Not enough memory");
+
+ ops->create = dialer_on_create;
+ ops->start = NULL;
+ ops->pause = dialer_on_pause;
+ ops->resume = dialer_on_resume;
+ ops->destroy = dialer_on_destroy;
+ ops->message = dialer_on_message;
+ ops->event = dialer_on_event;
+ ops->priv = dial_d;
+ ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+ return 0;
+}
+
+extern "C" API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ p_retm_if(!ops, "ops is NULL");
+
+ ops->priv = NULL;
+}
+
+API Evas_Object* phone_create_dialer_view(ph_view_info *view_info)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == view_info, NULL, "The parameter(view_info) is NULL");
+
+ ph_dialer_data *dial_d = (ph_dialer_data *) calloc(1, sizeof(ph_dialer_data));
+ p_retvm_if(NULL == dial_d, NULL, "dial_d is NULL, Not enough memory");
+ dial_d->ug = view_info->ug;
+ dial_d->win = view_info->win;
+ dial_d->navi = view_info->navi;
+ dial_d->is_emergency = !isSimPresent();
+ dial_d->is_background = true;
+
+ if (!ph_dialer_create_content(dial_d))
+ {
+ free(dial_d);
+ return NULL;
+ }
+ return dial_d->layout;
+}
+
diff --git a/lib/dialer/ph-dialer-search.cpp b/lib/dialer/ph-dialer-search.cpp
new file mode 100755
index 0000000..b72cc10
--- /dev/null
+++ b/lib/dialer/ph-dialer-search.cpp
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE // for strcasestr
+#endif
+
+#include <feedback.h>
+#include <pthread.h>
+#include <unistd.h>
+
+#include <app_manager.h>
+
+#include "phone.h"
+#include "phone-dialer.h"
+#include "ph-dialer-utils.h"
+#include "ph-dialer-view.h"
+#include "ph-dialer-search.h"
+#include "ph-dialer-tapi.h"
+
+void ph_dialer_search_request(void *data, int force_search)
+{
+ PH_TRACE;
+ return;
+}
+
diff --git a/lib/dialer/ph-dialer-search.h b/lib/dialer/ph-dialer-search.h
new file mode 100755
index 0000000..66f2a1e
--- /dev/null
+++ b/lib/dialer/ph-dialer-search.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PH_DIALER_SEARCH_H__
+#define __PH_DIALER_SEARCH_H__
+
+void ph_dialer_search_request(void *data, int force_search);
+void ph_dialer_search_result_clicked(void *data, Evas_Object *obj,
+ const char *emission, const char *source);
+void ph_dialer_search_free_search_data(ph_dialer_data *dial_d);
+void ph_dialer_search_free_log_data(ph_dialer_data *dial_d);
+void ph_dialer_search_free_cc_data(ph_dialer_data *dial_d);
+void ph_dialer_search_find_cur_sim_cc(ph_dialer_data *dial_d);
+void ph_dialer_search_fill_genlist_by_list(ph_dialer_data *dial_d);
+void ph_dialer_search_fill_genlist_by_cc_list(ph_dialer_data *dial_d);
+void ph_dialer_search_set_genlist_item_style();
+
+#endif /* __PH_DIALER_SEARCH_H__ */
diff --git a/lib/dialer/ph-dialer-tapi.cpp b/lib/dialer/ph-dialer-tapi.cpp
new file mode 100755
index 0000000..57cebe6
--- /dev/null
+++ b/lib/dialer/ph-dialer-tapi.cpp
@@ -0,0 +1,533 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <tapi_common.h>
+#include <ITapiSim.h>
+#include <ITapiPhonebook.h>
+#include <TapiUtility.h>
+#include <regex.h>
+
+#include "phone.h"
+#include "phone-dialer.h"
+#include "ph-dialer-utils.h"
+
+#ifdef Status
+#undef Status
+#endif
+
+static TapiHandle *handle = NULL;
+
+typedef enum
+{
+ SIM_INCORRECT_PIN1_CODE,
+ SIM_INCORRECT_PIN2_CODE,
+ SIM_PIN1_CHANGE_SUCCESS,
+ SIM_PIN2_CHANGE_SUCCESS,
+ SIM_PIN1_BLOCKED,
+ SIM_PIN2_BLOCKED,
+} sim_stat_value;
+
+typedef enum
+{
+ TYPE_PIN1 = 0,
+ TYPE_PIN2,
+} pin_type_value;
+typedef struct _tapi_receive_info
+{
+ sim_stat_value stat;
+ int retry_cnt;
+} tapi_receive_info;
+
+#define PIN1_REGEX "^\\*\\*04\\*[0-9]{4}\\*[0-9]{4}\\*[0-9]{4}#$"
+#define PIN2_REGEX "^\\*\\*042\\*[0-9]{4}\\*[0-9]{4}\\*[0-9]{4}#$"
+#define PUK_REGEX "\\*\\*05\\*[0-9]{8}\\*[0-9]{4}\\*[0-9]{4}#$"
+
+int dialer_tapi_init()
+{
+ PH_TRACE;
+ handle = tel_init(NULL);
+ if (NULL == handle)
+ return FALSE;
+ return TRUE;
+}
+
+int dialer_tapi_deinit()
+{
+ PH_TRACE;
+ int ret = tel_deinit(handle);
+ handle = NULL;
+ return ret;
+}
+
+int dialer_check_pin_str(const char* number, char **old_pin, char **new_pin,
+ char **com_pin, int* pin_type)
+{
+ PH_TRACE;
+ regex_t fsm;
+ regmatch_t str[strlen(number) + 1];
+ char* origin_string;
+ char * str_temp;
+
+ if (regcomp(&fsm, PIN1_REGEX, REG_EXTENDED))
+ {
+ PH_DBG("regular expression fail");
+ regfree(&fsm);
+ return FALSE;
+ }
+ else
+ {
+ if (regexec(&fsm, number, strlen(number) + 1, str, 0) == REG_NOMATCH)
+ {
+ PH_DBG("regular expression 1 matching fail");
+ regfree(&fsm);
+ }
+ else
+ {
+ PH_DBG("regular expression 1 matching success");
+ origin_string = strdup(number);
+ str_temp = origin_string + 5;
+ *old_pin = strdup(strtok(str_temp, "*"));
+ *new_pin = strdup(strtok(NULL, "*"));
+ *com_pin = strdup(strtok(NULL, "#"));
+ *pin_type = TYPE_PIN1;
+ free(origin_string);
+ regfree(&fsm);
+ return TRUE;
+ }
+ }
+
+ if (regcomp(&fsm, PIN2_REGEX, REG_EXTENDED))
+ {
+ PH_DBG("regular expression fail");
+ regfree(&fsm);
+ return FALSE;
+ }
+ else
+ {
+ if (regexec(&fsm, number, strlen(number) + 1, str, 0) == REG_NOMATCH)
+ {
+ PH_DBG("regular expression 2 matching fail");
+ regfree(&fsm);
+ }
+ else
+ {
+ PH_DBG("regular expression 2 matching success");
+ origin_string = strdup(number);
+ str_temp = origin_string + 5;
+ *old_pin = strdup(strtok(str_temp, "*"));
+ *new_pin = strdup(strtok(NULL, "*"));
+ *com_pin = strdup(strtok(NULL, "#"));
+ *pin_type = TYPE_PIN2;
+ free(origin_string);
+ regfree(&fsm);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void dialer_pin_result_popup(tapi_receive_info* result, void* data)
+{
+ PH_TRACE;
+ Evas_Object *popup;
+ ph_dialer_data *dial_d = (ph_dialer_data *) data;
+
+ popup = elm_popup_add(dial_d->win);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ switch (result->stat)
+ {
+ case SIM_PIN1_CHANGE_SUCCESS:
+ case SIM_PIN2_CHANGE_SUCCESS:
+ phone_show_popup(dial_d->navi, S_(CT_SYS_POP_SUCCESS), 2.0);
+ break;
+ case SIM_INCORRECT_PIN1_CODE:
+ case SIM_INCORRECT_PIN2_CODE:
+ phone_show_popup(dial_d->navi, S_(PH_SYS_POP_INCORRECT_PASSWORD),
+ 2.0);
+ break;
+ case SIM_PIN1_BLOCKED:
+ case SIM_PIN2_BLOCKED:
+ phone_show_popup(dial_d->navi, S_(PH_SYS_SK3_BLOCK), 2.0);
+ break;
+ default:
+ elm_object_text_set(popup, "dafault case called");
+ break;
+ }
+}
+
+void dialer_sim_change_pins_cb(TapiHandle *handle, int result, void *data,
+ void *user_data)
+{
+ PH_TRACE;
+ TelSimPinOperationResult_t sec_rt = (TelSimPinOperationResult_t) result;
+ TelSimSecResult_t *sim_event_data = (TelSimSecResult_t *) data;
+ tapi_receive_info result_info = { (sim_stat_value) 0, 0,};
+
+ PH_DBG("sec_rt[%d]", sec_rt);
+ PH_DBG("sim_event_data->type:%d", sim_event_data->type);
+ PH_DBG("sim_event_data->retry_count[%d]", sim_event_data->retry_count);
+
+ if (sec_rt == TAPI_SIM_PIN_OPERATION_SUCCESS)
+ {
+ if (sim_event_data->type == TAPI_SIM_PTYPE_PIN1)
+ result_info.stat = SIM_PIN1_CHANGE_SUCCESS;
+ else if (sim_event_data->type == TAPI_SIM_PTYPE_PIN2)
+ result_info.stat = SIM_PIN2_CHANGE_SUCCESS;
+ }
+ else if (sec_rt == TAPI_SIM_PIN_INCORRECT_PASSWORD)
+ {
+ if (sim_event_data->type == TAPI_SIM_PTYPE_PIN1)
+ {
+ result_info.stat = SIM_INCORRECT_PIN1_CODE;
+ result_info.retry_cnt = sim_event_data->retry_count;
+ }
+ else if (sim_event_data->type == TAPI_SIM_PTYPE_PIN2)
+ {
+ result_info.stat = SIM_INCORRECT_PIN2_CODE;
+ result_info.retry_cnt = sim_event_data->retry_count;
+ }
+ }
+ else if (sec_rt == TAPI_SIM_PUK_REQUIRED)
+ {
+ if (sim_event_data->type == TAPI_SIM_PTYPE_PIN1)
+ result_info.stat = SIM_PIN1_BLOCKED;
+ else if (sim_event_data->type == TAPI_SIM_PTYPE_PIN2)
+ result_info.stat = SIM_PIN2_BLOCKED;
+ }
+ else
+ {
+ ERR("INCORRECTED");
+ return;
+ }
+ dialer_pin_result_popup(&result_info, user_data);
+}
+
+void dialer_pin_operation(int type, const char *old_pin, const char *new_pin,
+ void* data)
+{
+ PH_TRACE;
+ int tapi_ret = -100;
+ ph_dialer_data *dial_d = (ph_dialer_data *) data;
+
+ char old_pw[PH_TEXT_MAX_LEN] = { 0 };
+ char new_pw[PH_TEXT_MAX_LEN] = { 0 };
+
+ TelSimSecPw_t sim_old_sec_data = { (TelSimPinType_t) 0, 0, 0};
+ TelSimSecPw_t sim_new_sec_data = { (TelSimPinType_t) 0, 0, 0};
+
+ if (handle == NULL)
+ PH_DBG("tapi handle is null");
+
+ snprintf(old_pw, sizeof(old_pw), "%s", old_pin);
+ snprintf(new_pw, sizeof(new_pw), "%s", new_pin);
+
+ switch (type)
+ {
+ case TYPE_PIN1:
+ sim_old_sec_data.type = TAPI_SIM_PTYPE_PIN1;
+ sim_new_sec_data.type = TAPI_SIM_PTYPE_PIN1;
+ sim_old_sec_data.pw_len = STRLEN(old_pw);
+ sim_old_sec_data.pw = (unsigned char *) calloc(1,
+ sim_old_sec_data.pw_len);
+ memcpy(sim_old_sec_data.pw, old_pw, sim_old_sec_data.pw_len);
+ sim_new_sec_data.pw_len = STRLEN(new_pw);
+ sim_new_sec_data.pw = (unsigned char *) calloc(1,
+ sim_new_sec_data.pw_len);
+ memcpy(sim_new_sec_data.pw, new_pw, sim_new_sec_data.pw_len);
+ break;
+ case TYPE_PIN2:
+ sim_old_sec_data.type = TAPI_SIM_PTYPE_PIN2;
+ sim_new_sec_data.type = TAPI_SIM_PTYPE_PIN2;
+ sim_old_sec_data.pw_len = STRLEN(old_pw);
+ sim_old_sec_data.pw = (unsigned char *) calloc(1,
+ sim_old_sec_data.pw_len);
+ memcpy(sim_old_sec_data.pw, old_pw, sim_old_sec_data.pw_len);
+ sim_new_sec_data.pw_len = STRLEN(new_pw);
+ sim_new_sec_data.pw = (unsigned char *) calloc(1,
+ sim_new_sec_data.pw_len);
+ memcpy(sim_new_sec_data.pw, new_pw, sim_new_sec_data.pw_len);
+ break;
+ default:
+ ERR("Never get here(type: %d)", type);
+ break;
+ }
+
+ tapi_ret = tel_change_sim_pins(handle, &sim_old_sec_data, &sim_new_sec_data,
+ dialer_sim_change_pins_cb, data);
+ PH_DBG("return_num:%d", tapi_ret);
+
+ if (tapi_ret != TAPI_API_SUCCESS)
+ {
+ ERR("TelTapiSimChangePIN err=%d ", tapi_ret);
+ phone_show_popup(dial_d->navi, S_(CT_SYS_POP_ERROR), 2.0);
+ }
+ free(sim_old_sec_data.pw);
+ free(sim_new_sec_data.pw);
+}
+
+int GCF_tapi_init()
+{
+ PH_TRACE;
+ int status;
+ int ret;
+ TelSimPbList_t pb_list;
+
+ handle = tel_init(NULL);
+ if (NULL == handle)
+ return FALSE;
+
+ ret = tel_get_sim_pb_init_info(handle, &status, &pb_list);
+ if (TAPI_API_SUCCESS != ret)
+ {
+ ERR("tel_get_sim_pb_init_info() is failed(%d)", ret);
+ tel_deinit(handle);
+ handle = NULL;
+ return FALSE;
+ }
+
+ if (!status)
+ {
+ ERR("SIM is not available");
+ tel_deinit(handle);
+ handle = NULL;
+ return FALSE;
+ }
+ return TRUE;
+}
+
+int GCF_tapi_deinit()
+{
+ PH_TRACE;
+ int ret = tel_deinit(handle);
+ handle = NULL;
+ return ret;
+}
+
+static void sim_async_response_verify_puk(TapiHandle *handle, int result,
+ void *data, void *user_data)
+{
+ PH_TRACE;
+ TelSimPinOperationResult_t sec_rt = (TelSimPinOperationResult_t) result;
+ TelSimSecResult_t *pPinInfo = (TelSimSecResult_t *) data;
+
+ if (sec_rt == TAPI_SIM_PIN_OPERATION_SUCCESS)
+ {
+ if (pPinInfo->type == TAPI_SIM_PTYPE_PUK1)
+ {
+ ph_dialer_data *dial_d = (ph_dialer_data *) user_data;
+ phone_show_popup(dial_d->navi,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_REQUEST_SUCCESS), 2.0);
+ }
+ else if (pPinInfo->type == TAPI_SIM_PTYPE_PIN2)
+ PH_DBG("Unblock PIN2 Success!");
+ }
+ else
+ {
+ if (pPinInfo->type == TAPI_SIM_PTYPE_PUK1)
+ {
+ ph_dialer_data *dial_d = (ph_dialer_data *) user_data;
+ phone_show_popup(dial_d->navi,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_REQUEST_FAIL), 2.0);
+ }
+ else if (pPinInfo->type == TAPI_SIM_PTYPE_PIN1
+ || pPinInfo->type == TAPI_SIM_PTYPE_PIN2
+ || pPinInfo->type == TAPI_SIM_PTYPE_PUK2)
+ {
+ ERR("%d Verification Failed! - PIN Required", pPinInfo->type);
+ PH_DBG("Remainint attempts [%d]", pPinInfo->retry_count);
+ }
+ }
+
+ GCF_tapi_deinit();
+}
+
+void GCF_test_puk_operation(const char *puk1, const char *pin1, void *user_data)
+{
+ PH_TRACE;
+ char init_pin_val[PH_TEXT_MAX_LEN] = { 0 };
+ char init_puk_val[PH_TEXT_MAX_LEN] = { 0 };
+
+ TelSimSecPw_t puk_data;
+ TelSimSecPw_t new_pin_data;
+ int ret;
+
+ memset(&puk_data, 0, sizeof(TelSimSecPw_t));
+ memset(&new_pin_data, 0, sizeof(TelSimSecPw_t));
+
+ PH_DBG("puk1:%s", puk1);
+ PH_DBG("pin1: %s", pin1);
+
+ snprintf(init_puk_val, sizeof(init_puk_val), "%s", puk1);
+ snprintf(init_pin_val, sizeof(init_pin_val), "%s", pin1);
+
+ puk_data.type = TAPI_SIM_PTYPE_PUK1; // 0x00
+ puk_data.pw_len = strlen(init_puk_val);
+ puk_data.pw = (unsigned char*) calloc(1, puk_data.pw_len);
+ memcpy(puk_data.pw, init_puk_val, puk_data.pw_len);
+
+ new_pin_data.type = TAPI_SIM_PTYPE_PIN1; // 0x00
+ new_pin_data.pw_len = strlen(init_pin_val);
+ new_pin_data.pw = (unsigned char*) calloc(1, new_pin_data.pw_len);
+ memcpy(new_pin_data.pw, init_pin_val, new_pin_data.pw_len);
+
+ ret = tel_verify_sim_puks(handle, &puk_data, &new_pin_data,
+ sim_async_response_verify_puk, user_data);
+ if (ret != TAPI_API_SUCCESS)
+ {
+ ERR("TAPI API FAIL: Error Code [0x%x]", ret);
+ GCF_tapi_deinit();
+ }
+
+ free(puk_data.pw);
+ free(new_pin_data.pw);
+}
+
+static void sim_async_response_read_contact(TapiHandle *handle, int result,
+ void *data, void *user_data)
+{
+ PH_TRACE;
+ TelSimPbAccessResult_t sec_rt = (TelSimPbAccessResult_t) result;
+ TelSimPbRecord_t *sim_acces_info = (TelSimPbRecord_t *) data;
+
+ if (sec_rt != TAPI_SIM_PB_SUCCESS)
+ {
+ ERR("SIM phone book access error [%d]", sec_rt);
+ GCF_tapi_deinit();
+ return;
+ }
+
+ if (sim_acces_info->phonebook_type == TAPI_SIM_PB_ADN) //KKC - ADN number value!
+ ph_dialer_util_show_matched_one_number((ph_dialer_data *) user_data,
+ (char *) sim_acces_info->name, (char *) sim_acces_info->number);
+ else if (sim_acces_info->phonebook_type == TAPI_SIM_PB_3GSIM)
+ {
+ if (strlen((const char *) sim_acces_info->number) > 0)
+ ph_dialer_util_show_matched_one_number((ph_dialer_data *) user_data,
+ (char *) sim_acces_info->name,
+ (char *) (sim_acces_info->number));
+ if (sim_acces_info->anr1_ton == TAPI_SIM_TON_ABBREVIATED_NUMBER) //KKC - USIM ADN number value!
+ ph_dialer_util_show_matched_one_number((ph_dialer_data *) user_data, NULL,
+ (char *) (sim_acces_info->anr1));
+ if (sim_acces_info->anr2_ton == TAPI_SIM_TON_ABBREVIATED_NUMBER) //KKC - USIM ADN number value!
+ ph_dialer_util_show_matched_one_number((ph_dialer_data *) user_data, NULL,
+ (char *) (sim_acces_info->anr2));
+ if (sim_acces_info->anr3_ton == TAPI_SIM_TON_ABBREVIATED_NUMBER) //KKC - USIM ADN number value!
+ ph_dialer_util_show_matched_one_number((ph_dialer_data *) user_data, NULL,
+ (char *) (sim_acces_info->anr3));
+ }
+ GCF_tapi_deinit();
+}
+
+void GCF_test_read_contact(int index, void *user_data)
+{
+ PH_TRACE;
+ TelSimPbType_t pb_type = (TelSimPbType_t) 0;
+ TelSimCardType_t card_type = (TelSimCardType_t) 0;
+ int ret;
+
+ tel_get_sim_type(handle, &card_type);
+ if (card_type == TAPI_SIM_CARD_TYPE_GSM)
+ pb_type = TAPI_SIM_PB_ADN;
+ else if (card_type == TAPI_SIM_CARD_TYPE_USIM)
+ pb_type = TAPI_SIM_PB_3GSIM;
+
+ ret = tel_read_sim_pb_record(handle, pb_type, index,
+ sim_async_response_read_contact, user_data);
+ if (ret != TAPI_API_SUCCESS)
+ {
+ ERR("TAPI API FAIL: Error Code [0x%x]", ret);
+ GCF_tapi_deinit();
+ }
+}
+
+/* Gcf Puk1*/
+#define GCF_PUK1_PRE_VALUE "**05*"
+
+int GCF_check_puk_str(const char* number, char **dest_puk, char **dest_pin1,
+ char **dest_pin2, int size_dest)
+{
+ PH_TRACE;
+ regex_t fsm;
+ regmatch_t str[strlen(number) + 1];
+ char* origin_string;
+ char * str_temp;
+
+ if (regcomp(&fsm, PUK_REGEX, REG_EXTENDED))
+ {
+ PH_DBG("regular expression fail");
+ regfree(&fsm);
+ return FALSE;
+ }
+ else
+ {
+ if (regexec(&fsm, number, strlen(number) + 1, str, 0) == REG_NOMATCH)
+ {
+ PH_DBG("matching fail");
+ regfree(&fsm);
+ }
+ else
+ {
+ PH_DBG("matching success");
+ origin_string = strdup(number);
+ str_temp = origin_string + 5;
+ *dest_puk = strdup(strtok(str_temp, "*"));
+ *dest_pin1 = strdup(strtok(NULL, "*"));
+ *dest_pin2 = strdup(strtok(NULL, "#"));
+ free(origin_string);
+ regfree(&fsm);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+bool GCF_check_admin_sim(const char *number, int *ret_index)
+{
+ PH_TRACE;
+ int count;
+ char *dest;
+ bool success;
+ p_retvm_if(number==NULL || ret_index==NULL, FALSE, "Parameter is null");
+
+ count = strlen(number);
+ p_retvm_if(count < 2, FALSE, "number length is too short");
+ dest = (char*) calloc(1, count);
+
+ success = true;
+ if (number[count - 1] == '#')
+ {
+ int i = 0;
+ for (; i < count - 1; i++)
+ {
+ if ('0' <= number[i] && number[i] <= '9')
+ dest[i] = number[i];
+ else
+ {
+ success = false;
+ break;
+ }
+ }
+ if (success)
+ *ret_index = atoi(dest);
+ }
+ else
+ success = false;
+ free(dest);
+
+ return success;
+}
+
diff --git a/lib/dialer/ph-dialer-tapi.h b/lib/dialer/ph-dialer-tapi.h
new file mode 100755
index 0000000..f9f71e4
--- /dev/null
+++ b/lib/dialer/ph-dialer-tapi.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PH_DIALER_TAPI_H__
+#define __PH_DIALER_TAPI_H__
+
+int GCF_tapi_init();
+int GCF_tapi_deinit();
+void GCF_test_puk_operation(const char *puk1, const char *pin1,
+ void *user_data);
+void GCF_test_read_contact(int index, void *user_data);
+int GCF_check_puk1_str(const char *number, char *dest_puk, char *dest_pin1,
+ char *dest_pin2, int size_dest);
+bool GCF_check_admin_sim(const char *number, int *ret_index);
+
+#endif /* __PH_DIALER_TAPI_H__ */
diff --git a/lib/dialer/ph-dialer-utils.cpp b/lib/dialer/ph-dialer-utils.cpp
new file mode 100755
index 0000000..2de38f1
--- /dev/null
+++ b/lib/dialer/ph-dialer-utils.cpp
@@ -0,0 +1,966 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
+#include <string.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <bundle.h>
+#include <aul.h>
+#include <tapi_common.h>
+#include <ITapiSim.h>
+#include <TapiUtility.h>
+#include <feedback.h>
+#include <ui-gadget-module.h>
+
+#include "phone.h"
+#include "phone-dialer.h"
+#include "phone-speed.h"
+
+#include "ph-dialer-utils.h"
+#include "ph-dialer-view.h"
+#include "ph-dialer-search.h"
+
+#define PH_DIALER_KEY_MAX_LEN 256
+
+ph_speeddial_info* ph_dialer_util_get_speeddial_by_number(void *data,
+ int number)
+{
+ PH_TRACE;
+ void *v_find_sd = NULL;
+ ph_dialer_data *dial_d = (ph_dialer_data *) data;
+ Eina_List *l;
+
+ p_retvm_if(NULL == dial_d->speeddial_list, NULL,
+ "There is no speeddial list");
+
+ EINA_LIST_FOREACH(dial_d->speeddial_list, l, v_find_sd)
+ {
+ ph_speeddial_info * find_sd = (ph_speeddial_info *) v_find_sd;
+ if (!find_sd)
+ continue;
+ if (number == find_sd->dial_number && find_sd->ph_number)
+ {
+ if (number == 1)
+ {
+ free(find_sd->ph_number);
+ find_sd->ph_number = phone_get_voice_mail_number();
+ }
+ break;
+ }
+ }
+ return (ph_speeddial_info *) v_find_sd;
+}
+
+void ph_dialer_util_entry_clear(ph_dialer_data *dial_d)
+{
+ PH_TRACE;
+ ph_dialer_util_del_all_number(dial_d);
+ ph_dialer_entry_set_number(*dial_d, "", 0);
+ if (dial_d->has_focus)
+ {
+ elm_object_focus_set(dial_d->entry, EINA_FALSE);
+ dial_d->has_focus = false;
+ }
+ ph_dialer_search_request(dial_d, FALSE);
+}
+
+void ph_dialer_util_launch_call(ph_dialer_data *dial_d)
+{
+ PH_TRACE;
+ char num[PH_TEXT_MAX_LEN] = { 0 };
+ int text_len;
+ bundle* kb;
+
+ p_retm_if(dial_d == NULL, "Invalid argument: ph_dialer_data *is NULL");
+
+ text_len = ph_dialer_util_get_pure_numstr_with_plus(dial_d, num);
+ if (0 < text_len)
+ {
+ if (PH_DAILER_EMERGENCY == dial_d->run_mode)
+ {
+ kb = bundle_create();
+ p_retm_if(NULL == kb, "bundle_create() Failed");
+ bundle_add(kb, "launch-type", "EMERGENCY");
+ bundle_add(kb, "number", num);
+ aul_launch_app(VOICECALL_PKG, kb);
+ bundle_free(kb);
+ }
+ else
+ phone_launch_voice_call(-1, num);
+ }
+
+ ph_dialer_util_entry_clear(dial_d);
+}
+
+int ph_dialer_util_get_cursor_pos(ph_dialer_data *dial_d)
+{
+ PH_TRACE;
+ InputNumber *node;
+ int pos = 0;
+ p_retvm_if(NULL == dial_d->number_cursor, 0, "cursor of number is null");
+
+ node = &dial_d->number_head;
+ while (dial_d->number_cursor != node)
+ {
+ node = node->next;
+ if (!node)
+ break;
+ pos++;
+ }
+ return pos;
+}
+
+int ph_dialer_util_is_dash(char ch)
+{
+ PH_TRACE;
+ if (ch == '-' || ch == '(' || ch == ')' || ch == ' ')
+ return TRUE;
+ return FALSE;
+}
+
+static int dialer_util_is_dash_and_plus(char ch)
+{
+ PH_TRACE;
+ if (ch == '-' || ch == '+' || ch == '(' || ch == ')' || ch == ' ')
+ return TRUE;
+ return FALSE;
+}
+
+int ph_dialer_util_get_pure_numstr(ph_dialer_data *dial_d, char *dest)
+{
+ PH_TRACE;
+ InputNumber *node;
+ int cnt = 0;
+ p_retvm_if(NULL == dest, 0, "dest is null");
+
+ node = dial_d->number_head.next;
+ while (1)
+ {
+ if (!node)
+ break;
+ if (dialer_util_is_dash_and_plus(node->num) == FALSE)
+ dest[cnt++] = node->num;
+ node = node->next;
+ }
+ dest[cnt] = '\0';
+ return cnt;
+}
+
+InputNumber *ph_dialer_util_get_node_by_index(ph_dialer_data *dial_d, int index)
+{
+ PH_TRACE;
+ InputNumber *node;
+ int i = 0;
+
+ node = &dial_d->number_head;
+ for (; i < index; i++)
+ {
+ if (node->next)
+ node = node->next;
+ }
+ return node;
+}
+
+int ph_dialer_util_get_pure_numstr_with_plus(ph_dialer_data *dial_d, char *dest)
+{
+ PH_TRACE;
+ InputNumber *node;
+ int cnt = 0;
+ p_retvm_if(NULL == dest, 0, "dest is null");
+
+ node = dial_d->number_head.next;
+ while (node)
+ {
+ if (ph_dialer_util_is_dash(node->num) == FALSE)
+ dest[cnt++] = node->num;
+ node = node->next;
+ }
+ dest[cnt] = '\0';
+ return cnt;
+}
+
+int ph_dialer_util_get_numstr_from_node(ph_dialer_data *dial_d, char *dest)
+{
+ PH_TRACE;
+ InputNumber *node;
+ int cnt = 0;
+ p_retvm_if(NULL == dest, 0, "dest is null");
+
+ node = dial_d->number_head.next;
+ while (node)
+ {
+ dest[cnt++] = node->num;
+ node = node->next;
+ }
+ dest[cnt] = '\0';
+ return cnt;
+}
+
+int ph_dialer_util_del_all_number(ph_dialer_data *dial_d)
+{
+ PH_TRACE;
+ int len = 0;
+ InputNumber *node = NULL;
+ InputNumber *tmp_node = NULL;
+ p_retvm_if(NULL == dial_d, 0, "dialer data is null");
+
+ node = dial_d->number_head.next;
+ while (node)
+ {
+ tmp_node = node;
+
+ if (node->next)
+ node->next->prev = node->prev;
+ if (node->prev)
+ node->prev->next = node->next;
+
+ node = node->next;
+ len++;
+
+ free(tmp_node);
+ }
+ dial_d->number_cursor = &dial_d->number_head;
+ dial_d->entry_font_size = MAX_DIAL_NUMBER_FONT_SIZE;
+
+ return len;
+}
+
+static int dialer_util_is_num_length_over(int len)
+{
+ PH_TRACE;
+ if (len >= PH_DIALER_KEY_MAX_LEN)
+ return TRUE;
+ return FALSE;
+}
+
+int ph_dialer_util_append_node_from_numstr(ph_dialer_data *dial_d, char *string)
+{
+ PH_TRACE;
+ int i = 0;
+ int j = 0;
+ int len = 0;
+ InputNumber *node;
+ InputNumber *tmp_node = NULL;
+ char *tmp_string = NULL;
+
+ ph_dialer_util_del_all_number(dial_d);
+
+ p_retvm_if(NULL == string, 0, "string data is null");
+
+ node = &dial_d->number_head;
+
+ len = strlen(string);
+ if (dialer_util_is_num_length_over(len - 1) == TRUE)
+ {
+ phone_show_popup(dial_d->navi,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_EXCEED_NUM_MAX_LENGTH), 2.0);
+ len = PH_DIALER_KEY_MAX_LEN;
+ string[len] = '\0';
+ }
+
+ tmp_string = (char *) calloc(1, len + 1);
+ memset(tmp_string, 0x00, len + 1);
+
+ for (i = 0; i < len; i++)
+ {
+ if ((string[i] >= '0' && string[i] <= '9') || string[i] == '*'
+ || string[i] == '#' || string[i] == '+')
+ {
+ tmp_string[j++] = string[i];
+ }
+ }
+
+ len = strlen(tmp_string);
+ for (i = 0; i < len; i++)
+ {
+ tmp_node = (InputNumber *) calloc(1, sizeof(InputNumber));
+ tmp_node->next = NULL;
+ tmp_node->prev = node;
+ tmp_node->num = tmp_string[i];
+
+ node->next = tmp_node;
+ node = node->next;
+ }
+ dial_d->number_cursor = tmp_node;
+ free(tmp_string);
+
+ return len;
+}
+
+int ph_dialer_util_append_node_from_numstr_with_strip(ph_dialer_data *dial_d,
+ char *string)
+{
+ PH_TRACE;
+ int i = 0, cnt = 0, len = 0;
+ InputNumber *node;
+ InputNumber *tmp_node = NULL;
+ p_retvm_if(NULL == string, 0, "Number string is null");
+ ph_dialer_util_del_all_number(dial_d);
+
+ node = &dial_d->number_head;
+ len = strlen(string);
+ if (dialer_util_is_num_length_over(len - 1) == TRUE)
+ {
+ phone_show_popup(dial_d->navi,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_EXCEED_NUM_MAX_LENGTH), 2.0);
+ len = PH_DIALER_KEY_MAX_LEN;
+ string[len] = '\0';
+ }
+
+ for (; i < len; i++)
+ {
+ if (ph_dialer_util_is_dash(string[i]) == TRUE)
+ continue;
+
+ tmp_node = (InputNumber *) calloc(1, sizeof(InputNumber));
+ tmp_node->next = NULL;
+ tmp_node->prev = node;
+ tmp_node->num = string[i];
+ node->next = tmp_node;
+
+ node = node->next;
+ cnt++;
+ }
+ dial_d->number_cursor = tmp_node;
+ return cnt;
+}
+
+char ph_dialer_util_get_value_word(char in)
+{
+ PH_TRACE;
+ switch (in)
+ {
+ case '2':
+ return 'a';
+ case '3':
+ return 'd';
+ case '4':
+ return 'g';
+ case '5':
+ return 'j';
+ case '6':
+ return 'm';
+ case '7':
+ return 'p';
+ case '8':
+ return 't';
+ case '9':
+ return 'w';
+ default:
+ return ' ';
+ }
+}
+
+char ph_dialer_util_get_next_value_abcmode(char in)
+{
+ PH_TRACE;
+ switch (in)
+ {
+ case 'a':
+ return 'b';
+ case 'b':
+ return 'c';
+ case 'c':
+ return 'a';
+ case 'd':
+ return 'e';
+ case 'e':
+ return 'f';
+ case 'f':
+ return 'd';
+ case 'g':
+ return 'h';
+ case 'h':
+ return 'i';
+ case 'i':
+ return 'g';
+ case 'j':
+ return 'k';
+ case 'k':
+ return 'l';
+ case 'l':
+ return 'j';
+ case 'm':
+ return 'n';
+ case 'n':
+ return 'o';
+ case 'o':
+ return 'm';
+ case 'p':
+ return 'q';
+ case 'q':
+ return 'r';
+ case 'r':
+ return 's';
+ case 's':
+ return 'p';
+ case 't':
+ return 'u';
+ case 'u':
+ return 'v';
+ case 'v':
+ return 't';
+ case 'w':
+ return 'x';
+ case 'x':
+ return 'y';
+ case 'y':
+ return 'z';
+ case 'z':
+ return 'w';
+ default:
+ return ' ';
+ }
+}
+
+static InputNumber* dialer_util_insert_number_after(InputNumber *node, char num)
+{
+ PH_TRACE;
+ InputNumber *tmp;
+ p_retvm_if(NULL == node, NULL, "number node is null");
+
+ tmp = (InputNumber *) calloc(1, sizeof(InputNumber));
+ tmp->next = node->next;
+ tmp->prev = node;
+ tmp->num = num;
+
+ if (node->next)
+ node->next->prev = tmp;
+ node->next = tmp;
+
+ return tmp;
+}
+
+void ph_dialer_util_insert_number_at_cursor(ph_dialer_data *dial_d, char num)
+{
+ PH_TRACE;
+ InputNumber *cursor;
+ InputNumber *tmp;
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ int len;
+
+ if (dial_d->number_cursor)
+ cursor = dial_d->number_cursor;
+ else
+ cursor = &dial_d->number_head;
+
+ /* check length */
+ len = ph_dialer_util_get_numstr_from_node(dial_d, buf);
+ if (dialer_util_is_num_length_over(len) == TRUE)
+ {
+ phone_show_popup(dial_d->navi,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_EXCEED_NUM_MAX_LENGTH), 2.0);
+ return;
+ }
+
+ tmp = dialer_util_insert_number_after(cursor, num);
+ dial_d->number_cursor = tmp;
+}
+
+char ph_dialer_util_get_number_at_cursor(ph_dialer_data *dial_d)
+{
+ PH_TRACE;
+ if (dial_d->number_cursor == NULL)
+ return '\0';
+
+ return dial_d->number_cursor->num;
+}
+
+int ph_dialer_util_remove_node_at_cursor(ph_dialer_data *dial_d)
+{
+ PH_TRACE;
+ InputNumber *cursor = NULL;
+ InputNumber *node_prev = NULL;
+ p_retvm_if(NULL == dial_d->number_cursor, 0, "current cursor is null");
+ cursor = dial_d->number_cursor;
+
+ if (cursor == &dial_d->number_head)
+ return 0;
+
+ if (cursor)
+ node_prev = cursor->prev;
+
+ if (node_prev)
+ node_prev->next = cursor->next;
+
+ if (cursor->next)
+ cursor->next->prev = node_prev;
+
+ free(cursor);
+ dial_d->number_cursor = node_prev;
+ return ph_dialer_util_get_cursor_pos(dial_d);
+}
+
+void ph_dialer_util_strip_from_number_node(ph_dialer_data *dial_d)
+{
+ PH_TRACE;
+ InputNumber *node, *tmp_node;
+ node = dial_d->number_head.next;
+
+ while (node)
+ {
+ if (ph_dialer_util_is_dash(node->num) == TRUE)
+ {
+ if (dial_d->number_cursor == node)
+ dial_d->number_cursor = node->prev;
+ tmp_node = node;
+
+ if (node->next)
+ node->next->prev = node->prev;
+ if (node->prev)
+ node->prev->next = node->next;
+
+ node = node->next;
+ free(tmp_node);
+ }
+ else
+ node = node->next;
+ }
+}
+
+void ph_dialer_util_add_dashes(ph_dialer_data *dial_d, DashMode kMode)
+{
+ PH_TRACE;
+ InputNumber *cursor __attribute__ ((unused)), *node;
+ int len = 0;
+ int remain = 0;
+ char numstr[PH_TEXT_MAX_LEN] = { 0 };
+
+ cursor = dial_d->number_cursor;
+ node = dial_d->number_head.next;
+
+ len = ph_dialer_util_get_numstr_from_node(dial_d, numstr);
+ p_retm_if(len < 2, "number is too short");
+ p_retm_if(numstr[0] == '*' || numstr[0] == '#',
+ "the character is reserved string");
+
+ remain = len;
+ /* 123 ~ 12345678901(123-4567-8901) */
+ if (len > (2 - kMode) && len < (12 + kMode) && node)
+ { /* 02, 010, 011, ... 0xx */
+ if (node->num == '0')
+ { /* 02, +cc 2 */
+ remain--;
+ node = node->next;
+ remain--;
+
+ if (node->num == '2')
+ { /* 02-, +cc 2- */
+ node = dialer_util_insert_number_after(node, '-');
+ if (node)
+ {
+ if (kMode)
+ {
+ if (dial_d->number_cursor == node->prev)
+ {
+ dial_d->number_cursor = node;
+ }
+ }
+ if (node->next)
+ node = node->next;
+ }
+ }
+ else
+ { /* 0xx, +cc xx */
+ if (node->next)
+ {
+ node = node->next;
+ remain--;
+ }
+
+ if (len > 3 - kMode)
+ { /* 0xx-, +cc xx- */
+ node = dialer_util_insert_number_after(node, '-');
+ if (node)
+ {
+ if (kMode)
+ {
+ if (dial_d->number_cursor == node->prev)
+ {
+ dial_d->number_cursor = node;
+ }
+ }
+ if (node->next)
+ node = node->next;
+ }
+ }
+ }
+
+ if (remain == 8)
+ { /* xxx-1234-1234, +cc xx-1234-1234 */
+ node = node->next;
+ p_ret_if(node == NULL);
+ node = node->next;
+ p_ret_if(node == NULL);
+ node = node->next;
+ dialer_util_insert_number_after(node, '-');
+ }
+ else if (remain > (int) (3 - kMode) && remain < 8)
+ { /* xxx-123-1234, +cc xx-123-1234 */
+ node = node->next;
+ p_ret_if(node == NULL);
+ node = node->next;
+ node = dialer_util_insert_number_after(node, '-');
+ if (node && kMode)
+ {
+ if (dial_d->number_cursor == node->prev)
+ {
+ dial_d->number_cursor = node;
+ }
+ }
+ }
+ else if (remain > 8)
+ { /* not match rule */
+ ph_dialer_util_strip_from_number_node(dial_d);
+ }
+ }
+
+ else
+ { /* 02, +cc 2 *//* 1234-1234 */
+ if (len > 4 - kMode && len < 9 + kMode)
+ {
+ node = node->next;
+ p_ret_if(node == NULL);
+ node = node->next;
+ p_ret_if(node == NULL);
+ node = node->next;
+ node = dialer_util_insert_number_after(node, '-');
+ if (node && kMode)
+ {
+ if (dial_d->number_cursor == node->prev)
+ {
+ dial_d->number_cursor = node;
+ }
+ }
+ }
+ }
+ }
+}
+
+void ph_dialer_util_highlight_substring(char *dest, int dest_len, char *string,
+ char *substr)
+{
+ PH_TRACE;
+ char middle[PH_TAG_TEXT_MAX_LEN] = { 0 };
+ char first[PH_TAG_TEXT_MAX_LEN] = { 0 };
+
+ p_retm_if(NULL == string, "string is null");
+
+ if (substr && *substr)
+ {
+ int len = strlen(substr);
+ snprintf(first, sizeof(first), "%s", string);
+ char *last = strcasestr(first, substr);
+ if (last)
+ {
+ snprintf(middle, strlen(substr) + 1, "%s", last);
+ *(last) = '\0';
+ snprintf(dest, dest_len, "%s<match>%s</>%s", first, middle,
+ last + len);
+ }
+ else
+ snprintf(dest, dest_len, "%s", string);
+ }
+ else
+ snprintf(dest, dest_len, "%s", string);
+}
+
+void ph_dialer_util_highlight_substring_with_pos(char *dest, int dest_len,
+ char *string, int position, int length)
+{
+ PH_TRACE;
+ char middle[PH_TEXT_MAX_LEN] = { 0 };
+ char first[PH_TEXT_MAX_LEN] = { 0 };
+
+ p_retm_if(NULL == string, "string is null");
+
+ if (0 < length)
+ {
+ snprintf(first, sizeof(first), "%s", string);
+ snprintf(middle, length + 1, "%s", string + position);
+ first[position] = '\0';
+ snprintf(dest, dest_len, "%s<match>%s</>%s", first, middle,
+ string + position + length);
+ }
+ else
+ snprintf(dest, dest_len, "%s", string);
+}
+
+int ph_dialer_util_show_matched_one_number(ph_dialer_data *dial_d, char *name,
+ char *number)
+{
+ PH_TRACE;
+ p_retvm_if(dial_d==NULL, 0, "dialer data is null");
+
+ if (dial_d->slide)
+ {
+ edje_object_signal_emit(_EDJ(dial_d->layout), "elm,state,slide,stop",
+ "elm");
+ dial_d->slide = false;
+ }
+
+ edje_object_signal_emit(_EDJ(dial_d->layout), "viewcontrol/search_result",
+ "viewcontrol");
+ edje_object_part_text_set(_EDJ(dial_d->layout),
+ "search_result/item/number/textblock", number);
+
+ if (name && *name)
+ {
+ edje_object_part_text_set(_EDJ(dial_d->layout),
+ "search_result/item/name/text", name);
+ edje_object_signal_emit(_EDJ(dial_d->layout),
+ "viewobject/search_result/search_number",
+ "viewobject/search_result");
+ }
+ else
+ edje_object_signal_emit(_EDJ(dial_d->layout),
+ "viewobject/search_result/noname", "viewobject/search_result");
+
+ ph_dialer_update_cnt_btn(dial_d, 1);
+ dial_d->is_show_items = true;
+ return 0;
+}
+
+static void __ph_dialer_speed_dial_view_ug_destroy_cb(ui_gadget_h ug,
+ void *priv)
+{
+ PH_TRACE;
+ check_if(!priv, return);
+ ph_dialer_data *dial_d = static_cast<ph_dialer_data*>(priv);
+ ug_destroy(dial_d->child_ug);
+ dial_d->child_ug = NULL;
+}
+
+static void __ph_dialer_speed_dial_view_ug_result_cb(ui_gadget_h ug,
+ service_h service, void *priv)
+{
+ PH_TRACE;
+ ug_destroy(ug);
+}
+
+static void __ph_dialer_speed_dial_view_ug_layout_cb(ui_gadget_h ug,
+ enum ug_mode mode, void *priv)
+{
+ PH_TRACE;
+ Evas_Object *base = (Evas_Object *) ug_get_layout(ug);
+ p_retm_if(base == NULL, "base == NULL");
+
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(base);
+}
+
+void ph_dialer_util_speeddial_show_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_dialer_data *dial_d = (ph_dialer_data *) data;
+
+ //phone_create_speeddial_view(dial_d->ug, dial_d->win, dial_d->navi);
+
+ struct ug_cbs cbs = { 0, };
+
+ cbs.priv = (void *) dial_d;
+ cbs.layout_cb = __ph_dialer_speed_dial_view_ug_layout_cb;
+ cbs.result_cb = __ph_dialer_speed_dial_view_ug_result_cb;
+ cbs.destroy_cb = __ph_dialer_speed_dial_view_ug_destroy_cb;
+
+ dial_d->child_ug = ug_create(dial_d->ug, "speeddial-efl",
+ UG_MODE_FULLVIEW, NULL, &cbs);
+
+ if(dial_d->popup)
+ {
+ evas_object_del(dial_d->popup);
+ dial_d->popup = NULL;
+ }
+ if(dial_d->m_Menu)
+ {
+ evas_object_del(dial_d->m_Menu);
+ dial_d->m_Menu = NULL;
+ }
+ if(dial_d->m_ContextMenu)
+ {
+ evas_object_del(dial_d->m_ContextMenu);
+ dial_d->m_ContextMenu = NULL;
+ }
+}
+
+void ph_dialer_speed_add_start_cb(void *data, void *data2)
+{
+ PH_TRACE;
+ check_if(!data || !data2, return);
+ ph_dialer_data *dial_d = static_cast<ph_dialer_data *>(data);
+ int number_id = *static_cast<int *>(data2);
+ check_if(number_id < 0, return);
+
+ int result = speed_set_speeddial(dial_d->searched_speed_id, number_id);
+ if (result < 0)
+ {
+ phone_show_popup(dial_d->navi, S_(PH_SYS_POP_ALREDY_EXISTS), 2.0);
+ }
+}
+
+void ph_dialer_util_speeddial_set_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ check_if(!data, return);
+ ph_dialer_data *dial_d = static_cast<ph_dialer_data *>(data);
+
+ dial_d->child_ug = phone_launch_contact_list_ug(dial_d->ug,
+ CT_UG_REQUEST_SELECT_NUMBER, ph_dialer_speed_add_start_cb,
+ NULL, dial_d);
+
+ if(dial_d->popup)
+ {
+ evas_object_del(dial_d->popup);
+ dial_d->popup = NULL;
+ }
+}
+
+void ph_dialer_util_show_speeddial_msg(ph_dialer_data *dial_d, const char *msg)
+{
+ PH_TRACE;
+ char dest[PH_TEXT_MAX_LEN] = { 0 };
+ snprintf(dest, sizeof(dest), "%s", msg);
+ phone_create_confirm_popup(&dial_d->popup, dial_d->win, msg,
+ ph_dialer_util_speeddial_set_cb, dial_d);
+}
+
+void ph_dialer_util_setup_run_mode(ph_dialer_data& dial_d)
+{
+ PH_TRACE;
+ if (dial_d.is_emergency)
+ {
+ dial_d.run_mode = PH_DAILER_EMERGENCY;
+ }
+ else
+ {
+ dial_d.run_mode = PH_DAILER_NORMAL;
+ }
+
+ /* Check call state */
+ int value = 0;
+ int ret = vconf_get_int(VCONFKEY_CALL_STATE, &value);
+ if (ret < 0)
+ ERR("vconf_get_int is failed(%d)", ret);
+ else
+ {
+ if (value == VCONFKEY_CALL_OFF
+ || value == VCONFKEY_CALL_VOICE_CONNECTING
+ || value == VCONFKEY_CALL_VIDEO_CONNECTING)
+ {
+ if (dial_d.run_mode == PH_DAILER_EMERGENCY)
+ {
+ edje_object_signal_emit(_EDJ(dial_d.layout),
+ "softkey/emergency", "softkey");
+ }
+ else
+ {
+ if (dial_d.run_mode == PH_DAILER_NORMAL)
+ return;
+ dial_d.run_mode = PH_DAILER_NORMAL;
+ edje_object_signal_emit(_EDJ(dial_d.layout), "softkey/normal",
+ "softkey");
+ }
+ }
+ else
+ { // VCONFKEY_CALL_VOICE_ACTIVE, VCONFKEY_CALL_VIDEO_ACTIVE
+ if (dial_d.run_mode == PH_DAILER_DURING_CALL)
+ return;
+ dial_d.run_mode = PH_DAILER_DURING_CALL;
+ edje_object_signal_emit(_EDJ(dial_d.layout), "softkey/dc", "softkey");
+ }
+ PH_DBG("run_mode:%d", dial_d.run_mode);
+ }
+}
+
+void ph_dialer_util_init_sim_value(ph_dialer_data *dial_d)
+{
+ PH_TRACE;
+ /* Network MCC */
+ int value = 0;
+ int ret;
+ TelSimImsiInfo_t sim_imsi_info;
+ TapiHandle *handle;
+ ret = vconf_get_int(VCONFKEY_TELEPHONY_PLMN, &value);
+ if (ret < 0)
+ dial_d->cur_mcc = -1;
+ else
+ dial_d->cur_mcc = value / 1000;
+
+ /* SIM MCC/MNC */
+ dial_d->cur_sim_mcc = -1;
+ handle = tel_init(NULL);
+ if (NULL == handle)
+ {
+ ERR("tel_init() Failed");
+ }
+ else
+ {
+ ret = tel_get_sim_imsi(handle, &sim_imsi_info);
+ DBG("tel_get_sim_imsi returned %d", ret);
+ if (0 == ret)
+ dial_d->cur_sim_mcc = atoi(sim_imsi_info.szMcc);
+ else
+ ERR("tel_get_sim_imsi() Failed(%d)", ret);
+ tel_deinit(handle);
+ }
+ dial_d->cur_cc_index = -1;
+
+ ret = vconf_get_int(VCONFKEY_TELEPHONY_SVC_ROAM, &value);
+ if (ret < 0)
+ dial_d->roaming = 0;
+ else
+ dial_d->roaming = value;
+}
+
+void ph_dialer_util_svi_play(int vibration_key, int sound_key)
+{
+ PH_TRACE;
+ int effect_status = FALSE;
+ vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &effect_status);
+ if (effect_status)
+ feedback_play_type(FEEDBACK_TYPE_SOUND, (feedback_pattern_e) sound_key);
+
+ vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &effect_status);
+ if (effect_status)
+ feedback_play_type(FEEDBACK_TYPE_VIBRATION, (feedback_pattern_e) vibration_key);
+}
+
+bool isSimPresent()
+{
+ PH_TRACE;
+ TelSimImsiInfo_t sim_imsi_info;
+ TapiHandle *handle = tel_init(NULL);
+ bool simCardFound = true;
+ int simStatus = tel_get_sim_imsi(handle, &sim_imsi_info);
+ if (simStatus != TAPI_API_SUCCESS)
+ {
+ simCardFound = (TAPI_API_SIM_CARD_ERROR != simStatus)
+ && (TAPI_API_SIM_NOT_FOUND != simStatus)
+ && (TAPI_API_SIM_NOT_INITIALIZED != simStatus)
+ && (TAPI_API_OPERATION_FAILED != simStatus)
+ && (TAPI_API_SIM_LOCKED != simStatus);
+ }
+
+ tel_deinit(handle);
+ DBG("isSimPresent returns %d", simCardFound);
+ return simCardFound;
+}
diff --git a/lib/dialer/ph-dialer-utils.h b/lib/dialer/ph-dialer-utils.h
new file mode 100755
index 0000000..dc77bae
--- /dev/null
+++ b/lib/dialer/ph-dialer-utils.h
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PH_DIALER_UTIL_H__
+#define __PH_DIALER_UTIL_H__
+
+#include <stdio.h>
+
+typedef struct
+{
+ char *plog_number;
+} ph_dial_log_d;
+
+typedef struct
+{
+ char *display;
+ char *number;
+ char *find_number;
+ char *img_path;
+ char *numtype_label;
+
+ int number_type;
+ int type;
+ int contact_id;
+ int position;
+ int len;
+} ph_dial_search_d;
+
+typedef struct
+{
+ char *cc;
+ char *name;
+ int mcc;
+} ph_cc_name_mcc_info;
+
+void ph_dialer_util_launch_call(ph_dialer_data *dial_d);
+
+int ph_dialer_util_get_pure_numstr_with_plus(ph_dialer_data *dial_d,
+ char *dest);
+int ph_dialer_util_get_pure_numstr(ph_dialer_data *dial_d, char *dest);
+int ph_dialer_util_get_numstr_from_node(ph_dialer_data *dial_d, char *dest);
+int ph_dialer_util_del_all_number(ph_dialer_data *dial_d);
+
+int ph_dialer_util_append_node_from_numstr(ph_dialer_data *dial_d,
+ char *string);
+int ph_dialer_util_append_node_from_numstr_with_strip(ph_dialer_data *dial_d,
+ char *string);
+int ph_dialer_util_remove_node_at_cursor(ph_dialer_data *dial_d);
+
+void ph_dialer_util_insert_number_at_cursor(ph_dialer_data *dial_d, char num);
+char ph_dialer_util_get_number_at_cursor(ph_dialer_data *dial_d);
+int ph_dialer_util_get_cursor_pos(ph_dialer_data *dial_d);
+
+char ph_dialer_util_get_next_value_abcmode(char in);
+char ph_dialer_util_get_value_word(char in);
+InputNumber *ph_dialer_util_get_node_by_index(ph_dialer_data *dial_d,
+ int index);
+void ph_dialer_util_strip_from_number_node(ph_dialer_data *dial_d);
+int ph_dialer_util_is_dash(char ch);
+void ph_dialer_util_add_dashes(ph_dialer_data *dial_d, DashMode kMode);
+void ph_dialer_util_entry_clear(ph_dialer_data *dial_d);
+
+void ph_dialer_util_highlight_substring(char *dest, int dest_len, char *allpart,
+ char *part);
+void ph_dialer_util_highlight_substring_with_pos(char *dest, int dest_len,
+ char *string, int position, int length);
+
+ph_speeddial_info* ph_dialer_util_get_speeddial_by_number(void *data,
+ int speednumber);
+
+int ph_dialer_util_show_matched_one_number(ph_dialer_data *dial_d, char *name,
+ char *number);
+void ph_dialer_util_show_speeddial_msg(ph_dialer_data *dial_d, const char *msg);
+void ph_dialer_util_speeddial_show_cb(void *data, Evas_Object *obj,
+ void *event_info);
+
+void ph_dialer_util_init_sim_value(ph_dialer_data *dial_d);
+void ph_dialer_util_setup_run_mode(ph_dialer_data& dial_d);
+void ph_dialer_util_svi_play(int vibration_key, int sound_key);
+
+/**
+ * Checks sim-card presence.
+ * @return true if sim-card is present, false - if not
+ * */
+bool isSimPresent();
+
+#endif //__PH_DIALER_UTIL_H__
diff --git a/lib/dialer/ph-dialer-view.cpp b/lib/dialer/ph-dialer-view.cpp
new file mode 100755
index 0000000..4765728
--- /dev/null
+++ b/lib/dialer/ph-dialer-view.cpp
@@ -0,0 +1,2174 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <string.h>
+#include <feedback.h>
+#include <Ecore_X.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <Evas.h>
+#include <Ecore_X.h>
+
+#include <string.h>
+#include <ui-gadget-module.h>
+
+#include "phone.h"
+#include "ph-front.h"
+#include "phone-dialer.h"
+
+#include "ph-dialer-view.h"
+#include "ph-dialer-utils.h"
+#include "ph-dialer-search.h"
+
+#include "KeypadTouchManager.h"
+#include "Search/Controller.h"
+#include "ct-list.h"
+
+#define PH_DIALER_ENTRY_DEFAULT_STYLE "<align=left font=Tizen:style=Thin text_class=tizen font_size=%d color=#FFFFFF>%s</>"
+#define PH_DIALER_ENTRY_EMPTY_STYLE ""
+#define PH_DIALER_ENTRY_STAR "*"
+#define PH_PAUSE_CHAR ';'
+#define PH_WAIT_CHAR ','
+
+static const int displaySize = 1200;
+static const int numberMinSize = 40;
+static const int minNumberEntry = 12;
+static const int maxNumberEntry = 32;
+static const char starCharacter = '*';
+static const char *backspaceButton = "normal/backspace";
+
+#define PH_DIALER_ENTRY_STYLE_END_TAG "</>"
+
+static Dialer::KeypadTouchManager touchManager;
+
+static void dialer_hide_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ if(dial_d->popup)
+ {
+ evas_object_del(dial_d->popup);
+ dial_d->popup = NULL;
+ }
+ }
+}
+
+static void dialer_hide_menu_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ if(dial_d->m_Menu)
+ {
+ evas_object_del(dial_d->m_Menu);
+ dial_d->m_Menu = NULL;
+ }
+ }
+}
+
+static void dialer_hide_context_menu_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ if(dial_d->m_ContextMenu)
+ {
+ evas_object_del(dial_d->m_ContextMenu);
+ dial_d->m_ContextMenu = NULL;
+ }
+ }
+}
+
+void dialer_suggestion_item_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ dialer_hide_popup_cb(data, obj, event_info);
+ // TODO: fill the number field with the selected number
+}
+
+static void dialer_entry_selection_changed(void *data, Evas_Object *entry, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ dial_d->selected_text = (char *) elm_entry_selection_get(entry);
+ }
+}
+
+static void dialer_entry_cursor_changed(void *data, Evas_Object *entry, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ dial_d->cursor_changed = true;
+ }
+}
+
+static void dialer_show_search_list_toggle(ph_dialer_data *dial_d, bool show)
+{
+ PH_TRACE;
+ assert(dial_d);
+ if (NULL != dial_d)
+ {
+ if (show)
+ {
+ edje_object_signal_emit(_EDJ(dial_d->layout), "viewobject/search_list/show", "viewobject/search_list");
+ dial_d->count_button_status = COUNT_BUTTON_OPEN;
+ edje_object_signal_emit(_EDJ(dial_d->count_layout), "count_button/closed", "count_button");
+ }
+ else
+ {
+ edje_object_signal_emit(_EDJ(dial_d->layout), "viewobject/search_list/hide", "viewobject/search_list");
+ dial_d->count_button_status = COUNT_BUTTON_CLOSE;
+ edje_object_signal_emit(_EDJ(dial_d->count_layout), "count_button/opened", "count_button");
+ }
+
+ edje_object_signal_emit(_EDJ(dial_d->layout), "viewobject/search_list/index/hide", "viewobject/search_list/index");
+ }
+}
+
+static void dialer_entry_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+
+ if (dial_d->list_mode == MODE_DIAL_NUMBER)
+ {
+ if (NULL == dial_d->search_list || eina_list_count(dial_d->search_list) < 2 || !dial_d->is_show_items)
+ edje_object_signal_emit(_EDJ(dial_d->layout), "viewobject/search_result/count/hide", "viewobject/search_result/count");
+ else
+ edje_object_signal_emit(_EDJ(dial_d->layout), "viewobject/search_result/count/show", "viewobject/search_result/count");
+ }
+ else
+ {
+ if (NULL == dial_d->cc_list_sorted || eina_list_count(dial_d->cc_list_sorted) < 2 || !dial_d->is_show_items)
+ edje_object_signal_emit(_EDJ(dial_d->layout), "viewobject/search_result/count/hide", "viewobject/search_result/count");
+ else
+ edje_object_signal_emit(_EDJ(dial_d->layout), "viewobject/search_result/count/show", "viewobject/search_result/count");
+ }
+
+ dialer_show_search_list_toggle(dial_d, false);
+ }
+}
+
+static void dialer_entry_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ if (dial_d->cursor_changed)
+ {
+ int pos = 0;
+ dial_d->cursor_changed = false;
+ pos = elm_entry_cursor_pos_get(dial_d->entry);
+ dial_d->number_cursor = ph_dialer_util_get_node_by_index( (ph_dialer_data *) data, pos);
+ }
+ dial_d->has_focus = true;
+ }
+}
+
+void dialer_pw_context_menu(void *data);
+static void dialer_softkey_longpress(char *source, ph_dialer_data &dial_d)
+{
+ PH_TRACE;
+ int pos __attribute__ ((unused)) = 0;
+ char dest[PH_TEXT_MAX_LEN] = { 0 };
+ if (strcmp(source, "star") == 0 || strcmp(source, "*") == 0)
+ {
+ if (ph_dialer_util_get_number_at_cursor(&dial_d) == '*')
+ {
+ pos = ph_dialer_util_remove_node_at_cursor(&dial_d);
+ dialer_pw_context_menu(&dial_d);
+ ph_dialer_util_get_numstr_from_node(&dial_d, dest);
+ ph_dialer_entry_set_number(dial_d, dest, 0);
+ }
+ }
+ else if (strcmp(source, "sharp") == 0 || strcmp(source, "#") == 0)
+ {
+ ph_dialer_util_get_numstr_from_node(&dial_d, dest);
+ if (strlen(dest) > 1) /* '#' longpress disable after number typed */
+ return;
+
+ int value = 1;
+ vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &value);
+
+ if (!value)
+ {
+ vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, TRUE);
+ phone_show_popup(dial_d.win, T_(PH_GET_TEXT_BASIC, PHTEXT_SOUND_ON), 2.0);
+ }
+ else
+ {
+ feedback_play_type(FEEDBACK_TYPE_VIBRATION, FEEDBACK_PATTERN_HW_TAP);
+ vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
+ phone_show_popup(dial_d.win, T_(PH_GET_TEXT_BASIC, PHTEXT_SOUND_OFF), 2.0);
+ }
+
+ if (ph_dialer_util_get_number_at_cursor(&dial_d) == '#')
+ {
+ pos = ph_dialer_util_remove_node_at_cursor(&dial_d);
+ ph_dialer_util_get_numstr_from_node(&dial_d, dest);
+ ph_dialer_entry_set_number(dial_d, dest, 0);
+ ph_dialer_search_request(&dial_d, FALSE);
+ }
+ }
+ else if (strcmp(source, backspaceButton) == 0)
+ {
+ ph_dialer_util_entry_clear(&dial_d);
+ dial_d.entry_font_size = MAX_DIAL_NUMBER_FONT_SIZE;
+ }
+}
+
+static Eina_Bool dialer_keypad_longpress(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ int text_len = 0;
+ int pos __attribute__ ((unused)) = 0;
+ char dest[PH_TEXT_MAX_LEN] = { 0 };
+ char *source;
+
+ p_retv_if(NULL == dial_d, -1);
+
+ source = dial_d->longpress_source;
+ text_len = ph_dialer_util_get_pure_numstr_with_plus(dial_d, dest);
+
+ switch (source[0])
+ {
+ case '0' ... '9':
+ PH_DBG("number(len=%d):[%s]", text_len, dest);
+ if (source[0] == '0')
+ {
+ pos = ph_dialer_util_remove_node_at_cursor(dial_d); edje_object_signal_emit(_EDJ(dial_d->layout), "pad_clicked", "+"); break;
+ }
+ /* speed dial: 2 ~ 9 */
+ if (0 < text_len && text_len <= 2)
+ {
+ if ('0' <= dest[0] && dest[0] <= '9' && atoi(dest) < 10)
+ {
+ ph_speeddial_info * speed_info = NULL;
+ if ((speed_info = ph_dialer_util_get_speeddial_by_number(dial_d, atoi(dest))) != NULL)
+ {
+ ph_dialer_util_append_node_from_numstr_with_strip(dial_d, speed_info->ph_number);
+ ph_dialer_util_add_dashes(dial_d, DASH_REAL);
+ ph_dialer_util_get_numstr_from_node(dial_d, dest);
+ ph_dialer_entry_set_number(*dial_d, dest, CURSOR_END);
+ ph_dialer_util_launch_call(dial_d);
+ }
+ else
+ {
+ dial_d->searched_speed_id = dest[0] - '0';
+ ph_dialer_util_show_speeddial_msg(dial_d, T_(PH_GET_TEXT_BASIC, PHTEXT_SPEED_DIAL_REQUEST));
+ }
+ }
+ }
+ break;
+
+ case starCharacter:
+ if(strcmp(dest, PH_DIALER_ENTRY_STAR))
+ {
+ dialer_softkey_longpress(source,*dial_d);
+ }
+ break;
+
+ default:
+ dialer_softkey_longpress(source,*dial_d);
+ break;
+ }
+ if (dial_d->longpress_source)
+ {
+ free(dial_d->longpress_source);
+ dial_d->longpress_source = NULL;
+ }
+ dial_d->longpress_timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+ }
+ return false;
+}
+
+static void dialer_add_pause_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ p_retm_if(NULL == dial_d, "dial_d is null");
+
+ char dest[PH_TEXT_MAX_LEN] = { 0 };
+
+ dialer_show_search_list_toggle(dial_d, false);
+ ph_dialer_util_strip_from_number_node(dial_d);
+ ph_dialer_util_insert_number_at_cursor(dial_d, PH_PAUSE_CHAR);
+ ph_dialer_util_add_dashes(dial_d, DASH_REAL);
+ ph_dialer_util_get_numstr_from_node(dial_d, dest);
+ ph_dialer_entry_set_number(*dial_d, dest, 0);
+ ph_dialer_search_request(dial_d, FALSE);
+ dialer_hide_popup_cb(dial_d, NULL, NULL);
+ dialer_hide_menu_cb(dial_d, NULL, NULL);
+ dialer_hide_context_menu_cb(dial_d, NULL, NULL);
+ }
+}
+
+static void dialer_add_wait_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ p_retm_if(NULL == dial_d, "dial_d is null");
+
+ char dest[PH_TEXT_MAX_LEN] = { 0 };
+
+ dialer_show_search_list_toggle(dial_d, false);
+ ph_dialer_util_strip_from_number_node(dial_d);
+ ph_dialer_util_insert_number_at_cursor(dial_d, PH_WAIT_CHAR);
+ ph_dialer_util_add_dashes(dial_d, DASH_REAL);
+ ph_dialer_util_get_numstr_from_node(dial_d, dest);
+ ph_dialer_entry_set_number(*dial_d, dest, 0);
+ ph_dialer_search_request(dial_d, FALSE);
+ dialer_hide_popup_cb(dial_d, NULL, NULL);
+ dialer_hide_menu_cb(dial_d, NULL, NULL);
+ dialer_hide_context_menu_cb(dial_d, NULL, NULL);
+ }
+}
+
+void dialer_pw_context_menu(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>(data);
+
+ if (dial_d->m_ContextMenu)
+ evas_object_del(dial_d->m_ContextMenu);
+
+ dial_d->m_ContextMenu = elm_ctxpopup_add(dial_d->navi);
+ if (NULL != dial_d->m_ContextMenu)
+ {
+ elm_ctxpopup_direction_priority_set(dial_d->m_ContextMenu, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN);
+
+ char buf[PH_TEXT_SHORT_LEN] = { 0 };
+ ph_dialer_util_get_pure_numstr_with_plus(dial_d, buf);
+
+ evas_object_smart_callback_add(dial_d->m_ContextMenu, "dismissed", dialer_hide_context_menu_cb, dial_d);
+
+ snprintf(buf, sizeof(buf), T_(PH_GET_TEXT_BASE_OP, PHTEXT_ADD_PAUSE), 2);
+ elm_ctxpopup_item_append(dial_d->m_ContextMenu, buf, NULL, dialer_add_pause_cb, dial_d);
+ elm_ctxpopup_item_append(dial_d->m_ContextMenu, T_(PH_GET_TEXT_BASE_OP, PHTEXT_ADD_WAIT), NULL, dialer_add_wait_cb, dial_d);
+
+ int x, y, w, h;
+ edje_object_part_geometry_get(_EDJ(dial_d->layout), "star_BG", &x, &y, &w, &h);
+
+ evas_object_move(dial_d->m_ContextMenu, x + (w / 2), (y + 167) + (h / 2));
+ evas_object_show(dial_d->m_ContextMenu);
+ }
+ else
+ {
+ PH_DBG("dialer_pw_context_menu failed: %s", "elm_ctxpopup_add() return NULL");
+ }
+ }
+ else
+ {
+ PH_DBG("dialer_pw_context_menu failed: %s", "data is null");
+ }
+}
+
+static void dialer_keypad_down(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+
+ p_retm_if(dial_d == NULL, "Invalid argument: ph_dialer_data *is NULL");
+ p_retm_if(source == NULL, "source is NULL");
+
+ char dest[PH_TEXT_MAX_LEN] = { 0 };
+ int snd_id = 0;
+
+ if (dial_d->count_button_status == COUNT_BUTTON_OPEN)
+ {
+ dialer_show_search_list_toggle(dial_d, false);
+ }
+
+ if (dial_d->longpress_timer)
+ {
+ ecore_timer_del(dial_d->longpress_timer);
+ dial_d->longpress_timer = NULL;
+ }
+
+ if (dial_d->dash_timer)
+ {
+ ecore_timer_del(dial_d->dash_timer);
+ dial_d->dash_timer = NULL;
+ }
+
+ switch (source[0])
+ {
+ case '0' ... '9':
+ snd_id = FEEDBACK_PATTERN_KEY0 + (source[0] - '0');
+ break;
+ default:
+ if (0 == strcmp(source, "star"))
+ {
+ source = "*"; snd_id = FEEDBACK_PATTERN_KEY_STAR;
+ }
+ else if (0 == strcmp(source, "sharp"))
+ {
+ source = "#"; snd_id = FEEDBACK_PATTERN_KEY_SHARP;
+ }
+ else
+ {
+ snd_id = FEEDBACK_PATTERN_TOUCH_KEY;
+ }
+ break;
+ }
+
+ if (PH_DAILER_DURING_CALL != dial_d->run_mode)
+ ph_dialer_util_svi_play(FEEDBACK_PATTERN_TOUCH_TAP, snd_id);
+
+ ph_dialer_util_strip_from_number_node(dial_d);
+ ph_dialer_util_insert_number_at_cursor(dial_d, source[0]);
+ ph_dialer_util_add_dashes(dial_d, DASH_REAL);
+ ph_dialer_util_get_numstr_from_node(dial_d, dest);
+ ph_dialer_entry_set_number(*dial_d, dest, 0);
+
+ /* create new longpress timer */
+ if (dial_d->longpress_timer)
+ {
+ ecore_timer_del(dial_d->longpress_timer);
+ dial_d->longpress_timer = NULL;
+ }
+ FREEandSTRDUP(dial_d->longpress_source, source);
+ dial_d->longpress_timer = ecore_timer_add(elm_config_longpress_timeout_get(), dialer_keypad_longpress, dial_d);
+ ph_dialer_search_request(dial_d, FALSE);
+ }
+}
+
+static Eina_Bool dialer_dash_add_timer(void *data)
+{
+ PH_TRACE;
+ char dest[PH_TEXT_MAX_LEN] = { 0 };
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+
+ ph_dialer_util_strip_from_number_node(dial_d);
+ ph_dialer_util_add_dashes(dial_d, DASH_PREVIEW);
+ ph_dialer_util_get_numstr_from_node(dial_d, dest);
+ ph_dialer_entry_set_number(*dial_d, dest, 0);
+
+ dial_d->dash_timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+ }
+ return false;
+}
+
+static void dialer_keypad_up(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ PH_TRACE;
+ assert(data);
+ p_retm_if(data == NULL, "Invalid argument: ph_dialer_data *is NULL");
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ PH_DBG("(source=%s)", source);
+
+ if (dial_d->longpress_timer)
+ {
+ ecore_timer_del(dial_d->longpress_timer);
+ dial_d->longpress_timer = NULL;
+ }
+
+ if (dial_d->dash_timer)
+ {
+ ecore_timer_del(dial_d->dash_timer);
+ dial_d->dash_timer = NULL;
+ }
+ dial_d->dash_timer = ecore_timer_add(0.7, dialer_dash_add_timer, dial_d);
+ }
+}
+
+static void dialer_keypad_clicked(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ char dest[PH_TEXT_MAX_LEN] = { 0 };
+
+ p_retm_if(NULL == source, "source is null");
+ p_retm_if(NULL == data, "Invalid argument: ph_dialer_data is NULL");
+
+ if (0 != strcmp(source, "+") && 0 != strcmp(source, "P") && 0 != strcmp(source, "W"))
+ return;
+
+ if (dial_d->dash_timer)
+ {
+ ecore_timer_del(dial_d->dash_timer);
+ dial_d->dash_timer = NULL;
+ }
+
+ ph_dialer_util_strip_from_number_node(dial_d);
+ ph_dialer_util_insert_number_at_cursor(dial_d, source[0]);
+ ph_dialer_util_add_dashes(dial_d, DASH_REAL);
+ ph_dialer_util_get_numstr_from_node(dial_d, dest);
+ ph_dialer_entry_set_number(*dial_d, dest, 0);
+ ph_dialer_search_request(dial_d, FALSE);
+ }
+}
+
+static void dialer_softkey_down(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+
+ char dest[PH_TEXT_MAX_LEN] = { 0 };
+
+ if (0 == strcmp(source, "back_btn") || 0 == strcmp(source, "option_btn"))
+ return;
+
+ ph_dialer_util_svi_play(FEEDBACK_PATTERN_TOUCH_TAP, FEEDBACK_PATTERN_TOUCH_TAP);
+ if (0 != strcmp(source, backspaceButton))
+ return;
+
+ if (dial_d->dash_timer)
+ {
+ ecore_timer_del(dial_d->dash_timer);
+ dial_d->dash_timer = NULL;
+ }
+
+ char* entry_raw = strdup(elm_entry_entry_get(dial_d->entry));
+ char* tok = strstr(entry_raw, PH_DIALER_ENTRY_STYLE_END_TAG);
+ if (tok)
+ tok[0] = '\0';
+
+ if (dial_d->selected_text && strcmp(dial_d->selected_text, entry_raw) == 0)
+ {
+ ph_dialer_util_entry_clear(dial_d);
+ free(entry_raw);
+ return;
+ }
+
+ ph_dialer_util_strip_from_number_node(dial_d);
+ ph_dialer_util_remove_node_at_cursor(dial_d);
+ ph_dialer_util_add_dashes(dial_d, DASH_REAL);
+ ph_dialer_util_get_numstr_from_node(dial_d, dest);
+ ph_dialer_entry_set_number(*dial_d, dest, 0);
+
+ if (!*dest && dial_d->has_focus)
+ {
+ elm_object_focus_set(dial_d->entry, EINA_FALSE);
+ dial_d->has_focus = false;
+ }
+
+ if (dial_d->longpress_timer)
+ {
+ ecore_timer_del(dial_d->longpress_timer);
+ dial_d->longpress_timer = NULL;
+ }
+ FREEandSTRDUP(dial_d->longpress_source, source);
+ dial_d->longpress_timer = ecore_timer_add(elm_config_longpress_timeout_get(), dialer_keypad_longpress, dial_d);
+
+ ph_dialer_search_request(dial_d, FALSE);
+ }
+}
+
+static void dialer_softkey_up(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+
+ if (0 != strcmp(source, backspaceButton))
+ return;
+
+ if (dial_d->longpress_timer)
+ {
+ ecore_timer_del(dial_d->longpress_timer);
+ dial_d->longpress_timer = NULL;
+ }
+
+ if (dial_d->dash_timer)
+ {
+ ecore_timer_del(dial_d->dash_timer);
+ dial_d->dash_timer = NULL;
+ }
+ dial_d->dash_timer = ecore_timer_add(0.7, dialer_dash_add_timer, dial_d);
+ }
+}
+
+static void dialer_destroy_child_ug(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ dial_d->child_ug = NULL;
+ }
+}
+
+static bool dialer_get_recent_log_number(char** get_str)
+{
+ PH_TRACE;
+ contacts_list_h cts_list = NULL;
+ contacts_query_h query = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_filter_h filter = NULL;
+
+ do
+ {
+ if ((err = contacts_query_create(_contacts_person_phone_log._uri, &query)) != CONTACTS_ERROR_NONE)
+ break;
+ if ((err = contacts_filter_create(_contacts_person_phone_log._uri, &filter)) != CONTACTS_ERROR_NONE)
+ break;
+ if ((err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_GREATER_THAN_OR_EQUAL, CONTACTS_PLOG_TYPE_VOICE_INCOMMING)) != CONTACTS_ERROR_NONE)
+ break;
+ if ((err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND)) != CONTACTS_ERROR_NONE)
+ break;
+ if ((err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_LESS_THAN_OR_EQUAL, CONTACTS_PLOG_TYPE_VIDEO_BLOCKED)) != CONTACTS_ERROR_NONE)
+ break;
+ if ((err = contacts_query_set_filter(query, filter)) != CONTACTS_ERROR_NONE)
+ break;
+ if ((err = contacts_query_set_sort(query, _contacts_person_phone_log.log_time, false)) != CONTACTS_ERROR_NONE)
+ break;
+ if ((err = contacts_db_get_records_with_query(query, 0, 1, &cts_list)) != CONTACTS_ERROR_NONE)
+ break;
+
+ unsigned int record_cnt = 0;
+ contacts_list_get_count(cts_list, &record_cnt);
+ PH_DBG("get _contacts_person_phone_log table records(%d)", record_cnt);
+
+ err = phone_cts_get_str_from_list(cts_list, _contacts_person_phone_log.address, get_str);
+ PH_DBG("recent number : %s", *get_str);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "phone_cts_get_str_from_list() Failed(%d)", err);
+
+ contacts_list_destroy(cts_list, true);
+ contacts_query_destroy(query);
+ contacts_filter_destroy(filter);
+ return true;
+ }
+ while (0);
+
+ //error case
+ ERR("contacts_db_query Failed(%d)", err);
+ if (query != NULL)
+ contacts_query_destroy(query);
+ if (filter != NULL)
+ contacts_filter_destroy(filter);
+
+ return false;
+}
+
+static void dialer_softkey_call_clicked(void *data, int type)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ p_retm_if(dial_d == NULL, "Invalid argument: ph_dialer_data *is NULL");
+
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ int len;
+
+ len = ph_dialer_util_get_numstr_from_node(dial_d, buf);
+ if (len == 0)
+ {
+ PH_DBG("text is NULL so input recent number ");
+ char* get_str = NULL;
+ if (dialer_get_recent_log_number(&get_str))
+ {
+ if (get_str && strlen(get_str) > 0)
+ {
+ ph_dialer_util_append_node_from_numstr(dial_d, get_str);
+ ph_dialer_util_add_dashes(dial_d, DASH_REAL);
+ ph_dialer_util_get_numstr_from_node(dial_d, buf);
+ ph_dialer_entry_set_number(*dial_d, buf, CURSOR_END);
+ ph_dialer_search_request(dial_d, FALSE);
+ free(get_str);
+ }
+ }
+ return;
+ }
+ if (0 == type)
+ {
+ ALOG(LOG_DEBUG, "call_start_log", "launch call button pressed");
+ ph_dialer_util_launch_call(dial_d);
+ }
+ }
+}
+
+static void dialer_back_btn_cb(ph_dialer_data *dial_d)
+{
+ PH_TRACE;
+ assert(dial_d);
+ if (NULL != dial_d)
+ {
+ dial_d->initialized = FALSE;
+ ph_dialer_util_entry_clear(dial_d);
+ }
+}
+
+void dialer_add_contact(ph_dialer_data *dial_d)
+{
+ PH_TRACE;
+ check_if(!dial_d, return);
+
+ char dest[PH_TEXT_MAX_LEN] = { 0 };
+ ph_dialer_util_get_pure_numstr_with_plus(dial_d, dest);
+ dial_d->child_ug = phone_launch_contact_add_list_edit_ug(dial_d->ug, dest, dialer_destroy_child_ug, dial_d);
+}
+
+static void dialer_add_contact_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>(data);
+
+ dialer_hide_popup_cb(dial_d, NULL, NULL);
+ dialer_hide_menu_cb(dial_d, NULL, NULL);
+ dialer_hide_context_menu_cb(dial_d, NULL, NULL);
+
+ dialer_add_contact(dial_d);
+ }
+}
+
+static void dialer_settings_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>(data);
+
+ dialer_hide_popup_cb(dial_d, NULL, NULL);
+ dialer_hide_menu_cb(dial_d, NULL, NULL);
+ dialer_hide_context_menu_cb(dial_d, NULL, NULL);
+
+ dial_d->child_ug = phone_launch_settings_ug(dial_d->ug, CALL_SETTINGS_UG, dialer_destroy_child_ug, dial_d);
+ }
+}
+#ifdef _PHONE_LOCK_
+#define EMERGENCY "emergency"
+static void dialer_softkey_emergency_clicked(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ int err = CONTACTS_ERROR_NONE;
+ if (NULL != data)
+ {
+ ph_dialer_data *dial_d = (ph_dialer_data *) data;
+ contacts_record_h record = NULL;
+ contacts_list_h group_list = NULL;
+ phone_cts_get_list(_contacts_group._uri, _contacts_group.address_book_id, 0, &group_list);
+ CONTACTS_LIST_FOREACH(group_list, record)
+ {
+ char* group_system_id = NULL;
+ int id_grp = 0;
+ contacts_record_get_int(record, _contacts_group.id, &id_grp);
+ err = contacts_record_get_str_p(record, _contacts_group.extra_data, &group_system_id);
+ if (group_system_id != NULL)
+ {
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ if (strcmp(group_system_id, EMERGENCY) == 0)
+ {
+ ph_view_info *view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info));
+ phone_set_view_info(view_info, dial_d->win, dial_d->navi, dial_d->ug, 0, 0, NULL);
+ ct_group_list *info = (ct_group_list *) calloc(1, sizeof(ct_group_list));
+ info->id_ab = 0;
+ info->id_grp = id_grp;
+ info->name = (char *) (T_(CT_GET_TEXT_BASIC, CTTEXT_EMERGENCY_CONTACTS));
+ ctui_list_create_contact_view_with_info(view_info, CT_GET_LIST_PERSON_OF_GROUP_ID, info);
+ free(info);
+ free(view_info);
+ phone_cts_free_list(group_list);
+ return;
+ }
+ }
+ }
+ }
+ phone_cts_free_list(group_list);
+ }
+}
+#endif //_PHONE_LOCK_
+
+static void dialer_softkey_msg_clicked(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>(data);
+
+ dialer_hide_popup_cb(dial_d, NULL, NULL);
+ dialer_hide_menu_cb(dial_d, NULL, NULL);
+ dialer_hide_context_menu_cb(dial_d, NULL, NULL);
+
+ char num[PH_TEXT_SHORT_LEN] = { 0 };
+ ph_dialer_util_get_pure_numstr_with_plus(dial_d, num);
+ dial_d->child_ug = phone_launch_msg_composer_ug(dial_d->ug, num, 0, dialer_destroy_child_ug, dial_d);
+ }
+}
+
+static void dialer_ctx_message_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>(data);
+
+ dialer_hide_popup_cb(dial_d, NULL, NULL);
+ dialer_hide_menu_cb(dial_d, NULL, NULL);
+ dialer_hide_context_menu_cb(dial_d, NULL, NULL);
+
+ char num[PH_TEXT_SHORT_LEN] = { 0 };
+ ph_dialer_util_get_pure_numstr_with_plus(dial_d, num);
+ dial_d->child_ug = phone_launch_msg_composer_ug(dial_d->ug, num, 0, dialer_destroy_child_ug, dial_d);
+ }
+}
+
+static void dialer_exit_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>(data);
+
+ dialer_hide_popup_cb(dial_d, NULL, NULL);
+ dialer_hide_menu_cb(dial_d, NULL, NULL);
+ dialer_hide_context_menu_cb(dial_d, NULL, NULL);
+
+ dialer_back_btn_cb(dial_d);
+ elm_win_lower(dial_d->win);
+
+ }
+}
+
+static void dialer_contactsearch_btn_cb(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+
+ ph_phoneui_data *phoneui_d = (ph_phoneui_data *) evas_object_data_get(dial_d->layout, "phoneui_d");
+ phone_front_view_show_sub_view(phoneui_d); //temp : need to fix as embedding contact search list into dialer layout. (kc.jun)
+ }
+ return;
+}
+
+static void dialer_option_btn_cb(ph_dialer_data *dial_d)
+{
+ PH_TRACE;
+ assert(dial_d);
+ if (NULL != dial_d)
+ {
+ if (dial_d->m_Menu)
+ evas_object_del(dial_d->m_Menu);
+
+ dial_d->m_Menu = elm_ctxpopup_add(dial_d->navi);
+ if (NULL != dial_d->m_Menu)
+ {
+ elm_ctxpopup_direction_priority_set(dial_d->m_Menu, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN);
+
+ char buf[PH_TEXT_SHORT_LEN] = { 0 };
+ ph_dialer_util_get_pure_numstr_with_plus(dial_d, buf);
+
+ evas_object_smart_callback_add(dial_d->m_Menu, "dismissed", dialer_hide_menu_cb, dial_d);
+
+ if (!dial_d->ug)
+ elm_ctxpopup_item_append(dial_d->m_Menu, S_(PH_SYS_BODY_MESSAGE), NULL, dialer_ctx_message_cb, dial_d);
+ elm_ctxpopup_item_append(dial_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_SPEEDDIAL), NULL, ph_dialer_util_speeddial_show_cb, dial_d);
+ snprintf(buf, sizeof(buf), T_(PH_GET_TEXT_BASE_OP, PHTEXT_ADD_PAUSE), 2);
+ elm_ctxpopup_item_append(dial_d->m_Menu, buf, NULL, dialer_add_pause_cb, dial_d);
+ elm_ctxpopup_item_append(dial_d->m_Menu, T_(PH_GET_TEXT_BASE_OP, PHTEXT_ADD_WAIT), NULL, dialer_add_wait_cb, dial_d);
+
+ if (!dial_d->ug)
+ elm_ctxpopup_item_append(dial_d->m_Menu, T_(PH_GET_TEXT_BASE_OP, PHTEXT_EXIT), NULL, dialer_exit_cb, dial_d);
+
+ int x, y, w, h;
+ edje_object_part_geometry_get(_EDJ(dial_d->layout), "option_btn", &x, &y, &w, &h);
+
+ evas_object_move(dial_d->m_Menu, x + (w / 2), (y + 167) + (h / 2));
+ evas_object_show(dial_d->m_Menu);
+ }
+ else
+ {
+ PH_DBG("dialer_option_btn_cb failed: %s", "elm_ctxpopup_add() return NULL");
+ }
+ }
+ else
+ {
+ PH_DBG("dialer_option_btn_cb failed: %s", "data is null");
+ }
+}
+
+static void dialer_number_options_popup(ph_dialer_data *dial_d)
+{
+ PH_TRACE;
+ assert(dial_d);
+ if (NULL != dial_d)
+ {
+ // removing current menu if there is any:
+ if (dial_d->m_Menu)
+ evas_object_del(dial_d->m_Menu);
+
+ // adding a new menu ("Keypad menu")
+ dial_d->m_Menu = elm_ctxpopup_add(dial_d->navi);
+ if (NULL != dial_d->m_Menu)
+ {
+ elm_ctxpopup_direction_priority_set(dial_d->m_Menu, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN);
+
+ char buf[PH_TEXT_SHORT_LEN] = { 0 };
+ ph_dialer_util_get_pure_numstr_with_plus(dial_d, buf);
+
+ evas_object_smart_callback_add(dial_d->m_Menu, "dismissed", dialer_hide_menu_cb, dial_d);
+
+ // setting up the items of menu:
+
+ elm_ctxpopup_item_append(dial_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_SPEEDDIAL), NULL, ph_dialer_util_speeddial_show_cb, dial_d);
+
+ int len = ph_dialer_util_get_numstr_from_node(dial_d, buf);
+ if (len > 0) // In case user inputted at least 1 number
+ {
+ elm_ctxpopup_item_append(dial_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_ADD_TO_CONTACTS), NULL, dialer_add_contact_cb, dial_d);
+
+ snprintf(buf, sizeof(buf), T_(PH_GET_TEXT_BASE_OP, PHTEXT_ADD_PAUSE), 2);
+ elm_ctxpopup_item_append(dial_d->m_Menu, buf, NULL, dialer_add_pause_cb, dial_d);
+
+ elm_ctxpopup_item_append(dial_d->m_Menu, T_(PH_GET_TEXT_BASE_OP, PHTEXT_ADD_WAIT), NULL, dialer_add_wait_cb, dial_d);
+ }
+
+ if (!dial_d->ug)
+ elm_ctxpopup_item_append(dial_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_SETTINGS), NULL, dialer_settings_cb, dial_d);
+
+ // setting up the position of menu:
+ int x, y, w, h;
+ evas_object_geometry_get(dial_d->navi, &x, &y, &w, &h);
+
+ evas_object_move(dial_d->m_Menu, 0, y + h);
+ evas_object_show(dial_d->m_Menu);
+ }
+ else
+ {
+ PH_DBG("dialer_number_options_popup failed: %s", "elm_ctxpopup_add() return NULL");
+ }
+ }
+ else
+ {
+ PH_DBG("dialer_number_options_popup failed: %s", "data is null");
+ }
+}
+
+static void dialer_softkey_clicked(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ p_retm_if(dial_d == NULL, "Invalid argument: ph_dialer_data *is NULL");
+
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+
+ PH_DBG("source:[%s]", source);
+
+ /* defense code for long-press */
+ /* remove longpress timer */
+ if (dial_d->longpress_timer)
+ {
+ ecore_timer_del(dial_d->longpress_timer);
+ dial_d->longpress_timer = NULL;
+ }
+
+ if (strstr(source, "call") != NULL) /* normal/call, dc/call */
+ dialer_softkey_call_clicked(dial_d, 0);
+ else if (strcmp(source, "normal/message") == 0)
+ dialer_softkey_msg_clicked(dial_d);
+#ifdef _PHONE_LOCK_
+ else if (strcmp(source, "normal/emergency") == 0)
+ dialer_softkey_emergency_clicked(dial_d);
+#endif //_PHONE_LOCK_
+ else if (0 == strcmp(source, "return_btn"))
+ {
+ if (dial_d->ug)
+ ug_destroy_me(dial_d->ug);
+ return;
+ }
+ else if (0 == strcmp(source, "option_btn"))
+ {
+ dialer_option_btn_cb(dial_d);
+ return;
+ }
+ else if (0 == strcmp(source, "search/inputarea/image"))
+ {
+ dialer_contactsearch_btn_cb(dial_d);
+ return;
+ }
+
+ ph_dialer_util_get_numstr_from_node(dial_d, buf);
+ if (strcmp(source, backspaceButton) != 0)
+ ph_dialer_entry_set_number(*dial_d, buf, CURSOR_END);
+ else
+ ph_dialer_entry_set_number(*dial_d, buf, 0);
+ }
+}
+
+static char* dialer_gl_cc_label_get(ph_dialer_data *dial_d, ph_cc_name_mcc_info *item, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ assert(dial_d);
+ p_retvm_if(NULL == dial_d, NULL, "dial data is null");
+ if (NULL != dial_d)
+ {
+ char buf[PH_TAG_TEXT_MAX_LEN] = { 0 };
+ char text[PH_TAG_TEXT_MAX_LEN] = { 0 };
+ int text_len __attribute__ ((unused));
+
+ if (0 == strcmp(part, "elm.text.left.name"))
+ {
+ return strdup(item->name);
+ }
+ else if (0 == strcmp(part, "elm.text.left.number"))
+ {
+ text_len = ph_dialer_util_get_pure_numstr(dial_d, text);
+ ph_dialer_util_highlight_substring(buf, sizeof(buf), item->cc, text);
+ return strdup(buf);
+ }
+ else
+ return NULL;
+ }
+ return NULL;
+}
+
+Evas_Object* ph_dialer_gl_icon_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ assert(data);
+ p_retvm_if(NULL == data, NULL, "data is null");
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( evas_object_data_get(obj, KEY_DIALER_DATA) );
+ p_retvm_if(NULL == dial_d, NULL, "ph_dialer_data dial_d is null");
+
+ if (dial_d->list_mode == MODE_COUNTRY_CODE)
+ return NULL;
+
+ ph_dial_search_d *sd = (ph_dial_search_d *) data;
+ Evas_Object *ic;
+
+ if (0 == strcmp(part, "elm.icon.1"))
+ {
+ if (sd->img_path && *sd->img_path)
+ {
+ ic = elm_icon_add(obj);
+ p_retvm_if(NULL == ic, NULL, "elm_icon_add is failed");
+ elm_image_file_set(ic, sd->img_path, NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ return ic;
+ }
+ }
+ }
+ return NULL;
+}
+
+char* ph_dialer_gl_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ assert(data);
+ p_retvm_if(NULL == data, NULL, "dialer is null");
+ if (NULL != data)
+ {
+ ph_dial_search_d* sd = static_cast<ph_dial_search_d*>( data );
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( evas_object_data_get(obj, KEY_DIALER_DATA) );
+ p_retvm_if(NULL == dial_d, NULL, "dialer data is null");
+
+ char buf[PH_TAG_TEXT_MAX_LEN] = { 0 };
+ char resultbuf[PH_TAG_TEXT_MAX_LEN] = { 0 };
+
+ if (dial_d->list_mode == MODE_COUNTRY_CODE)
+ return dialer_gl_cc_label_get(dial_d, (ph_cc_name_mcc_info *) data, obj, part);
+
+ if (0 == strcmp(part, "elm.text.left.name"))
+ {
+ if (sd->display && *sd->display)
+ {
+ if (sd->type == SEARCH_CONTACT_NAME_TYPE)
+ {
+ ph_dialer_util_highlight_substring_with_pos(buf, sizeof(buf), sd->display, sd->position, sd->len);
+ return strdup(buf);
+ }
+ else
+ return strdup(sd->display);
+ }
+ return NULL;
+ }
+ else if (0 == strcmp(part, "elm.text.left.number"))
+ {
+ if (sd->type == SEARCH_LOG_TYPE)
+ {
+ ph_dialer_util_highlight_substring(buf, sizeof(buf), sd->number, sd->find_number);
+ return strdup(buf);
+ }
+ else
+ {
+ if (sd->number_type & CONTACTS_NUMBER_TYPE_CUSTOM && sd->numtype_label && sd->numtype_label[0])
+ snprintf(resultbuf, sizeof(resultbuf), "%s %s", sd->numtype_label, sd->number);
+ else
+ snprintf(resultbuf, sizeof(resultbuf), "%s %s", T_(CT_GET_TEXT_NUM_TYPE, phone_detail_log_get_phonenumber_type(sd->number_type)), sd->number);
+ if (sd->type == SEARCH_CONTACT_NAME_TYPE)
+ return strdup(resultbuf);
+ else
+ {
+ ph_dialer_util_highlight_substring(buf, sizeof(buf), resultbuf, sd->find_number);
+ return strdup(buf);
+ }
+ }
+ }
+ }
+ return NULL;
+}
+
+static void dialer_fastscroll_level_up(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int level = elm_index_item_level_get(obj);
+ const Elm_Object_Item *it;
+ const Elm_Object_Item *index;
+ ph_cc_name_mcc_info *item;
+ char prev_ch[4] = { 0 };
+ char prev_ch_first[2] = { 0 };
+ p_retm_if(1 != level, "level is not 1");
+
+ index = elm_index_selected_item_get(obj, level - 1);
+ elm_index_item_clear(obj);
+
+ it = (const Elm_Object_Item *) elm_object_item_data_get(index);
+ p_retm_if(NULL == it, "elm_object_item_data_get(%p) returns NULL", index);
+
+ item = (ph_cc_name_mcc_info *) elm_object_item_data_get(it);
+ prev_ch_first[0] = item->name[0];
+
+ while (it)
+ {
+ item = (ph_cc_name_mcc_info *) elm_object_item_data_get(it);
+
+ if (prev_ch_first[0] != item->name[0])
+ break;
+
+ if (prev_ch[0] != item->name[1])
+ {
+ prev_ch[0] = item->name[1];
+ elm_index_item_append(obj, prev_ch, NULL, it);
+ }
+ it = elm_genlist_item_next_get(it);
+ }
+ elm_index_level_go(obj, level);
+}
+
+static void dialer_fastscroll_level_down(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+}
+
+static void dialer_fastscroll_index_changed(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ PH_DBG("obj:%x, level:%d", (unsigned int)obj, elm_index_item_level_get(obj));
+ elm_genlist_item_bring_in((Elm_Object_Item *) elm_object_item_data_get((const Elm_Object_Item *) event_info), ELM_GENLIST_ITEM_SCROLLTO_TOP);
+}
+
+static void dialer_create_index(ph_dialer_data &dial_d)
+{
+ PH_TRACE;
+ dial_d.fast_index = elm_index_add(dial_d.layout);
+ elm_object_part_content_set(dial_d.layout, "search_list/index", dial_d.fast_index);
+ edje_object_signal_emit(_EDJ(dial_d.layout), "viewobject/search_list/index/hide", "viewobject/search_list/index");
+
+ evas_object_smart_callback_add(dial_d.fast_index, "level,up", dialer_fastscroll_level_up, NULL);
+ evas_object_smart_callback_add(dial_d.fast_index, "level,down", dialer_fastscroll_level_down, NULL);
+ evas_object_smart_callback_add(dial_d.fast_index, "delay,changed", dialer_fastscroll_index_changed, NULL);
+ evas_object_smart_callback_add(dial_d.fast_index, "selected", dialer_fastscroll_index_changed, NULL);
+ elm_index_level_go(dial_d.fast_index, 0);
+}
+
+void ph_dialer_update_cnt_btn(ph_dialer_data *dial_d, int count)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ if (count < 2)
+ {
+ elm_object_part_text_set(dial_d->count_layout, "btn_style/number", NULL);
+// elm_object_disabled_set(dial_d->count_button, EINA_TRUE);
+ edje_object_signal_emit(_EDJ(dial_d->count_layout), "count_button/hide", "count_button");
+ }
+ else
+ {
+ snprintf(buf, sizeof(buf), "%d", count);
+ elm_object_part_text_set(dial_d->count_layout, "btn_style/number", buf);
+ elm_object_disabled_set(dial_d->count_button, EINA_FALSE);
+ edje_object_signal_emit(_EDJ(dial_d->count_layout), "count_button/opened", "count_button");
+ }
+}
+
+static void dialer_entry_set_number_noresize(ph_dialer_data *dial_d,
+ const char *text)
+{
+ PH_TRACE;
+ int size = MAX_DIAL_NUMBER_FONT_SIZE;
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ int pos;
+
+ snprintf(buf, sizeof(buf), "DEFAULT='align=left font=Tizen:style=Thin text_class=tizen font_size=%d color=#FFFFFF'", size);
+ elm_entry_text_style_user_push(dial_d->entry, buf);
+
+ if (text && *text)
+ snprintf(buf, sizeof(buf), PH_DIALER_ENTRY_DEFAULT_STYLE, size, text);
+ else
+ snprintf(buf, sizeof(buf), "%s", PH_DIALER_ENTRY_EMPTY_STYLE);
+ elm_entry_entry_set(dial_d->entry, buf);
+
+ pos = ph_dialer_util_get_cursor_pos(dial_d);
+ elm_entry_cursor_pos_set(dial_d->entry, pos);
+}
+
+void ph_dialer_entry_set_number(ph_dialer_data &dial_d, const std::string &orig, int cursor)
+{
+ PH_TRACE;
+ char text[PH_TEXT_MAX_LEN] = { 0 };
+
+ int numberEntry = orig.size();
+ DBG("numberEntry %i",numberEntry);
+
+ if((numberEntry-minNumberEntry)>=0)
+ {
+ if(dial_d.entry_font_size >=numberMinSize && (displaySize/dial_d.entry_font_size)<numberEntry )
+ {
+ if(numberEntry>=maxNumberEntry)
+ {
+ dial_d.entry_font_size = displaySize/maxNumberEntry;
+ }
+ else dial_d.entry_font_size = displaySize/numberEntry;
+ }
+ else if((displaySize/dial_d.entry_font_size)>numberEntry)
+ {
+ dial_d.entry_font_size = displaySize/numberEntry;
+ }
+ }
+
+ if (orig.size() != 0)
+ {
+ snprintf(text, sizeof(text), PH_DIALER_ENTRY_DEFAULT_STYLE, dial_d.entry_font_size, orig.c_str());
+ if (dial_d.run_mode != PH_DAILER_EMERGENCY && strcmp("hide", edje_object_part_state_get(_EDJ(dial_d.layout), "textblock/textarea", NULL)))
+ edje_object_signal_emit(_EDJ(dial_d.layout), "viewobject/entry/show", "viewobject/entry");
+ }
+ else
+ {
+ snprintf(text, sizeof(text), "%s", PH_DIALER_ENTRY_EMPTY_STYLE);
+// if (dial_d->run_mode != PH_DAILER_EMERGENCY)
+// edje_object_signal_emit(_EDJ(dial_d->layout), "viewobject/entry/hide", "viewobject/entry");//temporalily HIDE for contact search implmentation (kc.jun)
+ }
+ elm_entry_entry_set(dial_d.entry, text);
+
+ if (cursor == CURSOR_END)
+ cursor = orig.size();
+ else if (cursor == CURSOR_BEGIN)
+ cursor = 0;
+ else if (cursor == 0)
+ cursor = ph_dialer_util_get_cursor_pos(&dial_d);
+
+ dial_d.number_cursor = ph_dialer_util_get_node_by_index(&dial_d, cursor);
+ elm_entry_cursor_pos_set(dial_d.entry, cursor);
+
+ DBG("number end %i",cursor);
+}
+
+static void dialer_clear_thread(ph_dialer_data *dial_d)
+{
+ PH_TRACE;
+ dial_d->t_info->alive = false;
+ if (dial_d->t_info->epipe)
+ {
+ ecore_pipe_write_close(dial_d->t_info->epipe);
+ ecore_pipe_read_close(dial_d->t_info->epipe);
+ ecore_pipe_del(dial_d->t_info->epipe);
+ dial_d->t_info->epipe = NULL;
+ }
+ pthread_join(dial_d->t_info->thread, NULL);
+ free(dial_d->t_info);
+ dial_d->t_info = NULL;
+}
+
+Eina_Bool ph_dialer_reload_data(void *data)
+{
+ PH_TRACE;
+ int count = 0;
+ assert(data);
+ p_retvm_if(NULL == data, ECORE_CALLBACK_CANCEL, "data is null");
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ p_retvm_if(!dial_d->data_dirty_flag, ECORE_CALLBACK_CANCEL, "data is not changed");
+
+ if (dial_d->data_dirty_flag & CONTACT_DATA_CHAGNED)
+ {
+ phone_free_speeddial_data(dial_d->speeddial_list);
+ dial_d->speeddial_list = phone_load_speeddial_data(&count);
+
+ if (dial_d->t_info)
+ dialer_clear_thread(dial_d);
+ dial_d->loading = false;
+
+ if (dial_d->contact_list)
+ {
+ phone_free_contacts(dial_d->contact_list);
+ dial_d->contact_list = NULL;
+ }
+ }
+ else if (dial_d->data_dirty_flag & SPEEDDIAL_DATA_CHAGNED)
+ {
+ phone_free_speeddial_data(dial_d->speeddial_list);
+ dial_d->speeddial_list = phone_load_speeddial_data(&count);
+ }
+ dial_d->data_dirty_flag = 0;
+ ph_dialer_search_request(dial_d, TRUE);
+ dial_d->update_timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+ }
+ return false;
+}
+
+static void dialer_contact_data_changed_cb(const char* view_uri, void* data)
+{
+ PH_TRACE;
+ assert(data);
+ p_retm_if(NULL == data, "data is null");
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+
+ if (dial_d->update_timer)
+ {
+ ecore_timer_del(dial_d->update_timer);
+ dial_d->update_timer = NULL;
+ }
+
+ if (dial_d->is_background)
+ {
+ dial_d->data_dirty_flag |= CONTACT_DATA_CHAGNED;
+ dial_d->update_timer = ecore_timer_add(3.0, ph_dialer_reload_data, dial_d);
+ }
+ else
+ {
+ int count = 0;
+ phone_free_speeddial_data(dial_d->speeddial_list);
+ dial_d->speeddial_list = phone_load_speeddial_data(&count);
+
+ if (dial_d->t_info)
+ dialer_clear_thread(dial_d);
+ dial_d->loading = false;
+
+ if (dial_d->contact_list)
+ {
+ phone_free_contacts(dial_d->contact_list);
+ dial_d->contact_list = NULL;
+ }
+
+ ph_dialer_search_request(dial_d, TRUE);
+ }
+ }
+}
+
+static void dialer_speeddial_data_changed_cb(const char* view_uri, void* data)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+
+ if (dial_d->update_timer)
+ {
+ ecore_timer_del(dial_d->update_timer);
+ dial_d->update_timer = NULL;
+ }
+
+ if (dial_d->is_background)
+ {
+ dial_d->data_dirty_flag |= SPEEDDIAL_DATA_CHAGNED;
+ dial_d->update_timer = ecore_timer_add(3.0, ph_dialer_reload_data, dial_d);
+ }
+ else
+ {
+ int count = 0;
+ phone_free_speeddial_data(dial_d->speeddial_list);
+ dial_d->speeddial_list = phone_load_speeddial_data(&count);
+ ph_dialer_search_request(dial_d, TRUE);
+ }
+ }
+}
+
+static void dialer_log_data_changed_cb(const char* view_uri, void* data)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ p_retm_if(NULL == dial_d, "dial_d is null");
+
+ if (dial_d->update_timer)
+ {
+ ecore_timer_del(dial_d->update_timer);
+ dial_d->update_timer = NULL;
+ }
+
+ if (dial_d->is_background)
+ {
+ dial_d->data_dirty_flag |= LOG_DATA_CHAGNED;
+ dial_d->update_timer = ecore_timer_add(3.0, ph_dialer_reload_data, dial_d);
+ }
+ else
+ ph_dialer_search_request(dial_d, TRUE);
+ }
+}
+
+static void dialer_view_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ p_retm_if(NULL == dial_d, "dial_d is null");
+
+ int err = contacts_db_remove_changed_cb(_contacts_person._uri, dialer_contact_data_changed_cb, dial_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_remove_changed_cb() Failed(%d)", err);
+ err = contacts_db_remove_changed_cb(_contacts_phone_log._uri, dialer_log_data_changed_cb, dial_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_remove_changed_cb() Failed(%d)", err);
+ err = contacts_db_remove_changed_cb(_contacts_speeddial._uri, dialer_speeddial_data_changed_cb, dial_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_remove_changed_cb() Failed(%d)", err);
+
+ ph_dialer_util_del_all_number(dial_d);
+
+ if (dial_d->t_info)
+ dialer_clear_thread(dial_d);
+
+ if (dial_d->search_idler)
+ ecore_idler_del(dial_d->search_idler);
+
+ if (dial_d->popup)
+ evas_object_del(dial_d->popup);
+
+ if (dial_d->m_Menu)
+ evas_object_del(dial_d->m_Menu);
+
+ if (dial_d->m_ContextMenu)
+ evas_object_del(dial_d->m_ContextMenu);
+
+ if (dial_d->job)
+ ecore_job_del(dial_d->job);
+
+ if (dial_d->search_timer)
+ ecore_timer_del(dial_d->search_timer);
+
+ if (dial_d->dash_timer)
+ ecore_timer_del(dial_d->dash_timer);
+
+ if (dial_d->longpress_timer)
+ ecore_timer_del(dial_d->longpress_timer);
+
+ if (dial_d->update_timer)
+ ecore_timer_del(dial_d->update_timer);
+
+ if (dial_d->slide_timer)
+ ecore_timer_del(dial_d->slide_timer);
+
+ touchManager.stopTimer();
+
+ if (dial_d->key_press)
+ ecore_event_handler_del(dial_d->key_press);
+
+ if (dial_d->key_release)
+ ecore_event_handler_del(dial_d->key_release);
+
+ feedback_deinitialize();
+
+ if (dial_d->th)
+ {
+ elm_theme_extension_del(dial_d->th, DIALER_THEME_EDJ);
+ elm_theme_free(dial_d->th);
+ }
+
+ phone_free_speeddial_data(dial_d->speeddial_list);
+ phone_free_contacts(dial_d->contact_list);
+
+ free(dial_d->longpress_source);
+ free(dial_d->searched_text);
+ free(dial_d);
+ }
+}
+#ifdef _ADJUST_FONTSIZE
+static void dialer_entry_font_check(Evas_Object *entry, ph_dialer_data *dial_d, char *text, int pos)
+{
+ PH_TRACE;
+ static int status = 0;
+ Ecore_X_Window win;
+ int size;
+ int win_width;
+ int max_width;
+ int entry_width;
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ int size_interval = 3;
+
+ win = ecore_x_window_root_get(ecore_x_window_focus_get());
+ ecore_x_window_size_get(win, &win_width, NULL);
+ evas_object_size_hint_min_get(entry, &entry_width, NULL);
+ max_width = win_width - 142;
+
+ size = dial_d->entry_font_size;
+// PH_DBG("BEFORE: fontsize : %d, max_width : %d, entry_width : %d", size, max_width, entry_width);
+ if (max_width < entry_width)
+ {
+ if (MIN_DIAL_NUMBER_FONT_SIZE < size)
+ {
+ size -= size_interval;
+ snprintf(buf, sizeof(buf), PH_DIALER_ENTRY_DEFAULT_STYLE, size, text);
+ status = -1;
+ dial_d->entry_font_size = size;
+ elm_entry_entry_set(dial_d->entry, buf);
+// PH_DBG("####### elm_entry_entry_set, %s", buf);
+ elm_entry_cursor_pos_set(dial_d->entry, pos);
+ }
+ }
+ else if (entry_width < max_width)
+ {
+ if (status == -1)
+ {
+ status = 0;
+ return;
+ }
+ if (size < MAX_DIAL_NUMBER_FONT_SIZE)
+ {
+ size += size_interval;
+ snprintf(buf, sizeof(buf), PH_DIALER_ENTRY_DEFAULT_STYLE, size, text);
+ status = 1;
+ dial_d->entry_font_size = size;
+ elm_entry_entry_set(dial_d->entry, buf);
+ elm_entry_cursor_pos_set(dial_d->entry, pos);
+ }
+ }
+ else
+ status = 0;
+// evas_object_size_hint_min_get(entry, &entry_width, NULL);
+// PH_DBG("AFTER: fontsize : %d, max_width : %d, entry_width : %d", size, max_width, entry_width);
+}
+#endif
+
+static int dialer_include_zero_space(char *text)
+{
+ PH_TRACE;
+ int len;
+ int i;
+
+ p_retv_if(NULL == text, -1);
+
+ len = strlen(text);
+ for (i = 0; i < len - 2; i++)
+ {
+ if (text[i] == (char) 0xe2 && text[i + 1] == (char) 0x80 && text[i + 2] == (char) 0x8b)
+ return i;
+ }
+ return -1;
+}
+
+static int dialer_trim_dash_from_numstr(char *src, char *dest_buf, int buf_size, int cursor)
+{
+ PH_TRACE;
+ int number_index = 0;
+ int scan_index = 0;
+ int zero_pos;
+
+ p_retvm_if(NULL == src || '\0' == *src, -1, "src is NULL");
+ p_retvm_if(NULL == dest_buf, -1, "dest_buf is NULL");
+
+ zero_pos = dialer_include_zero_space(src);
+
+ while (src[scan_index] && number_index < buf_size)
+ {
+ if (scan_index == zero_pos)
+ {
+ scan_index += 3;
+ if (number_index < cursor) cursor--;
+ continue;
+ }
+ if (!ph_dialer_util_is_dash(src[scan_index]))
+ dest_buf[number_index++] = src[scan_index];
+ else if (number_index < cursor)
+ cursor--;
+ scan_index++;
+ }
+ dest_buf[number_index] = '\0';
+ return cursor;
+}
+
+static void dialer_entry_text_changed(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ int pos, cursor;
+ char node_text[PH_TEXT_MAX_LEN] = { 0 };
+ char entry_text[PH_TEXT_MAX_LEN] = { 0 };
+ const char *org;
+ char *text;
+ int differ = 0;
+
+ org = elm_entry_entry_get(obj);
+ p_retm_if(NULL == org, "entry text is null");
+ text = elm_entry_markup_to_utf8(org);
+
+ // set text when cut/copy/paste
+ ph_dialer_util_get_pure_numstr_with_plus(dial_d, node_text);
+ pos = elm_entry_cursor_pos_get(dial_d->entry);
+ cursor = dialer_trim_dash_from_numstr(text, entry_text, sizeof(entry_text), pos);
+ differ = strcmp(node_text, entry_text);
+
+ if (0 <= dialer_include_zero_space(text) && strlen(text) == 3 && 0 == differ)
+ {
+ free(text);
+ return;
+ }
+
+ const char* endtag = strstr(org, PH_DIALER_ENTRY_STYLE_END_TAG);
+ if (0 != differ || (endtag && endtag[3] != '\0'))
+ {
+ PH_DBG("update entry");
+ ph_dialer_util_append_node_from_numstr(dial_d, entry_text);
+ dial_d->number_cursor = ph_dialer_util_get_node_by_index(dial_d, cursor);
+ ph_dialer_util_add_dashes(dial_d, DASH_REAL);
+ ph_dialer_util_get_numstr_from_node(dial_d, node_text);
+ ph_dialer_entry_set_number(*dial_d, node_text, 0);
+ ph_dialer_search_request(dial_d, FALSE);
+ free(text);
+ return;
+ }
+
+#ifdef _ADJUST_FONTSIZE
+ if (NULL == strstr(org, "font_size"))
+ {
+ if (MAX_DIAL_NUMBER_FONT_SIZE == dial_d->entry_font_size)
+ dial_d->entry_font_size--;
+ else if (MIN_DIAL_NUMBER_FONT_SIZE == dial_d->entry_font_size)
+ dial_d->entry_font_size++;
+ }
+ PH_DBG("dial_d->entry_font_size : %d", dial_d->entry_font_size);
+ dialer_entry_font_check(obj, dial_d, text, pos);
+#endif
+
+ free(text);
+ return;
+ }
+}
+
+static void dialer_create_entry(ph_dialer_data &dial_d)
+{
+ PH_TRACE;
+ Evas_Object *scroller;
+ Evas_Object *entry;
+
+ scroller = elm_scroller_add(dial_d.layout);
+ elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_FALSE);
+ elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+ elm_scroller_content_min_limit(scroller, EINA_FALSE, EINA_TRUE);
+ elm_object_part_content_set(dial_d.layout, "textblock/textarea", scroller);
+
+ entry = elm_entry_add(dial_d.layout);
+ elm_entry_single_line_set(entry, EINA_TRUE);
+ elm_entry_editable_set(entry, EINA_TRUE);
+ elm_entry_magnifier_disabled_set(entry, EINA_TRUE);
+ elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
+ evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_content_set(scroller, entry);
+ dial_d.entry = entry;
+
+ evas_object_smart_callback_add(entry, "selection,changed", dialer_entry_selection_changed, &dial_d);
+ evas_object_smart_callback_add(entry, "cursor,changed", dialer_entry_cursor_changed, &dial_d);
+ evas_object_smart_callback_add(entry, "changed", dialer_entry_text_changed, &dial_d);
+ evas_object_event_callback_add(entry, EVAS_CALLBACK_MOUSE_DOWN, dialer_entry_mouse_down, &dial_d);
+ evas_object_event_callback_add(entry, EVAS_CALLBACK_MOUSE_UP, dialer_entry_mouse_up, &dial_d);
+}
+
+static void dialer_entry_number_init(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+
+ p_retm_if(PH_DAILER_EMERGENCY == dial_d->run_mode, "It is Emergency mode");
+
+ char *buf;
+ int value = FALSE;
+ char num[PH_TEXT_MAX_LEN] = { 0 };
+ int ret __attribute__ ((unused)) = vconf_get_bool(VCONFKEY_CISSAPPL_PREFIX_DIAL_BOOL, &value);
+ if (dial_d->searched_text)
+ {
+ ph_dialer_util_append_node_from_numstr_with_strip(dial_d, dial_d->searched_text);
+ ph_dialer_util_add_dashes(dial_d, DASH_REAL);
+ ph_dialer_util_get_numstr_from_node(dial_d, num);
+ ph_dialer_entry_set_number(*dial_d, num, CURSOR_END);
+ ph_dialer_search_request(dial_d, TRUE);
+ }
+ else if (value == TRUE)
+ {
+ ret = vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_VALUE_INT, &value);
+ PH_DBG("prefix dial index: %d", value);
+ buf = NULL;
+ switch (value)
+ {
+ case 0: buf = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM1_STR); break;
+ case 1: buf = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM2_STR); break;
+ case 2: buf = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM3_STR); break;
+ case 3: buf = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM4_STR); break;
+ case 4: buf = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM5_STR); break;
+ default: PH_DBG("wrong prefix index(%d)", value); break;
+ }
+
+ if (buf && *buf)
+ {
+ ph_dialer_util_append_node_from_numstr_with_strip(dial_d, buf);
+ ph_dialer_util_add_dashes(dial_d, DASH_REAL);
+ ph_dialer_util_get_numstr_from_node(dial_d, num);
+ ph_dialer_entry_set_number(*dial_d, num, CURSOR_END);
+ ph_dialer_search_request(dial_d, FALSE);
+ free(buf);
+ }
+ }
+ else
+ dialer_entry_set_number_noresize(dial_d, "");
+ dial_d->initialized = TRUE;
+ }
+}
+
+static void dialer_menu_btn_cb(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ dialer_number_options_popup(dial_d);
+ }
+}
+
+static void dialer_lazy_init(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ dialer_create_index(*dial_d);
+ dialer_create_entry(*dial_d);
+ dial_d->entry_font_size = MAX_DIAL_NUMBER_FONT_SIZE;
+ dial_d->number_cursor = &(dial_d->number_head);
+
+ feedback_initialize();
+
+ edje_object_signal_callback_add(_EDJ(dial_d->layout), "pad_clicked", "*", dialer_keypad_clicked, dial_d);
+ edje_object_signal_callback_add(_EDJ(dial_d->layout), "pad_down", "*", dialer_keypad_down, dial_d);
+ edje_object_signal_callback_add(_EDJ(dial_d->layout), "pad_up", "*", dialer_keypad_up, dial_d);
+ edje_object_signal_callback_add(_EDJ(dial_d->layout), "softkey_clicked", "*", dialer_softkey_clicked, dial_d);
+ edje_object_signal_callback_add(_EDJ(dial_d->layout), "softkey_up", "*", dialer_softkey_up, dial_d);
+ edje_object_signal_callback_add(_EDJ(dial_d->layout), "softkey_down", "*", dialer_softkey_down, dial_d);
+
+ touchManager.initKeyPadArea(dial_d->layout);
+
+ int count = 0;
+ dial_d->speeddial_list = phone_load_speeddial_data(&count);
+ dial_d->job = ecore_job_add(dialer_entry_number_init, dial_d);
+
+ if(!dial_d->is_emergency)
+ {
+ if(!dial_d->m_Search->initialize(dial_d))
+ {
+ ERR("Search controller initialization failed");
+ }
+ }
+ }
+}
+
+static void dialer_layout_flush_post_cb(void *data, Evas *e, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ if (evas_object_visible_get(dial_d->layout))
+ {
+ evas_event_callback_del(evas_object_evas_get(dial_d->layout), EVAS_CALLBACK_RENDER_FLUSH_POST, dialer_layout_flush_post_cb);
+ dial_d->job = ecore_job_add(dialer_lazy_init, dial_d);
+ }
+ }
+}
+
+static void dialer_mousedown(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
+ dial_d->touch_x = ev->canvas.x;
+ dial_d->touch_y = ev->canvas.y;
+ }
+}
+
+static Eina_Bool _key_release_cb(void *data, int type, void *event)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ p_retvm_if(dial_d == NULL, false, "dial_d is NULL");
+ p_retvm_if(dial_d->is_background == TRUE, false, "Dialer is not on top");
+ p_retvm_if(dial_d->child_ug != NULL, false, "child UG is exist.");
+ p_retvm_if(elm_object_focus_get(dial_d->entry)== TRUE, false, "Focus already has been set on entry.");
+
+ Evas_Event_Key_Up *ev = (Evas_Event_Key_Up *) event;
+ if (!ev)
+ {
+ PH_DBG("Invalid event object");
+ return ECORE_CALLBACK_RENEW;
+ }
+ PH_DBG("%d type / %s released.", type, ev->keyname);
+
+ if (dial_d->longpress_timer)
+ {
+ ecore_timer_del(dial_d->longpress_timer);
+ dial_d->longpress_timer = NULL;
+ }
+
+ return ECORE_CALLBACK_RENEW;
+ }
+ return false;
+}
+
+static Eina_Bool _key_press_cb(void* data, int type, void* event)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( data );
+ p_retvm_if(dial_d == NULL, false, "dial_d is NULL");
+ p_retvm_if(dial_d->is_background == TRUE, false, "Dialer is not on top");
+ p_retvm_if(dial_d->child_ug != NULL, false, "child UG is exist.");
+ p_retvm_if(elm_object_focus_get(dial_d->entry)== TRUE, false, "Focus already has been set on entry.");
+
+ Evas_Event_Key_Down *ev = (Evas_Event_Key_Down *) event;
+ if (!ev)
+ {
+ PH_DBG("Invalid event object");
+ return ECORE_CALLBACK_RENEW;
+ }
+ PH_DBG("%d type / %s pressed", type, ev->keyname);
+
+ if (!strcmp(ev->keyname, "Return") || !strcmp(ev->keyname, "Phone"))
+ {
+ edje_object_signal_emit(_EDJ(dial_d->layout), "softkey_clicked", "call");
+ }
+ else if (!strcmp(ev->keyname, "BackSpace"))
+ {
+ edje_object_signal_emit(_EDJ(dial_d->layout), "softkey_down", backspaceButton);
+ }
+ else if (ev->keyname[0] >= '0' && ev->keyname[0] <= '9')
+ {
+ const Evas_Modifier *mods = evas_key_modifier_get( evas_object_evas_get(dial_d->layout));
+ if (evas_key_modifier_is_set(mods, "Shift"))
+ {
+ if (ev->keyname[0] == '3')
+ edje_object_signal_emit(_EDJ(dial_d->layout), "pad_down", "#");
+ else if (ev->keyname[0] == '8')
+ edje_object_signal_emit(_EDJ(dial_d->layout), "pad_down", "*");
+ }
+ else
+ edje_object_signal_emit(_EDJ(dial_d->layout), "pad_down", ev->keyname);
+ }
+
+ return ECORE_CALLBACK_RENEW;
+ }
+ return false;
+}
+
+int ph_dialer_create_content(ph_dialer_data *dial_d)
+{
+ PH_TRACE;
+ assert(dial_d);
+
+ if (NULL != dial_d)
+ {
+ dial_d->layout = elm_layout_add(dial_d->navi);
+ p_retvm_if(NULL == dial_d->layout, 0, "elm_layout_add() Failed");
+ elm_layout_file_set(dial_d->layout, DIALER_EDJ, "dialer/main");
+ evas_object_size_hint_weight_set(dial_d->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_event_callback_add(dial_d->layout, EVAS_CALLBACK_MOUSE_DOWN, dialer_mousedown, dial_d);
+
+ ph_dialer_util_setup_run_mode(*dial_d);
+
+ edje_object_signal_emit(_EDJ(dial_d->layout), "main/default", "main");
+
+ evas_object_data_set(dial_d->layout, KEY_DIALER_DATA, dial_d);
+
+ PH_DBG("run_mode(before emit):%d", dial_d->run_mode);
+ if (PH_DAILER_NORMAL != dial_d->run_mode)
+ {
+ if (PH_DAILER_EMERGENCY == dial_d->run_mode)
+ {
+ edje_object_part_text_set(_EDJ(dial_d->layout), "return_btn/text", T_(PH_GET_TEXT_BASIC, PHTEXT_PREVIOUS_SCREEN_ABB));
+ edje_object_signal_emit(_EDJ(dial_d->layout), "viewobject/entry/show", "viewobject/entry");
+ }
+ else if (PH_DAILER_DURING_CALL == dial_d->run_mode)
+ {
+ edje_object_part_text_set(_EDJ(dial_d->layout), "return_btn/text", T_(PH_GET_TEXT_BASIC, PHTEXT_BACK_TO_CALL));
+ edje_object_signal_emit(_EDJ(dial_d->layout), "viewobject/entry/show", "viewobject/entry"); //temporalily HIDE for contact search implmentation (kc.jun)
+ }
+ edje_object_signal_emit(_EDJ(dial_d->layout), "return_btn/default", "return_btn");
+ }
+ else
+ {
+ edje_object_signal_emit(_EDJ(dial_d->layout), "return_btn/hide", "return_btn");
+ edje_object_signal_emit(_EDJ(dial_d->layout), "softkey/normal", "softkey");
+ edje_object_signal_emit(_EDJ(dial_d->layout), "viewobject/entry/show", "viewobject/entry"); //temporalily HIDE for contact search implmentation (kc.jun)
+ }
+
+ evas_object_event_callback_add(dial_d->layout, EVAS_CALLBACK_DEL, dialer_view_delete_cb, dial_d);
+
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_db_add_changed_cb(_contacts_person._uri, dialer_contact_data_changed_cb, dial_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_add_changed_cb() Failed(%d)", err);
+ err = contacts_db_add_changed_cb(_contacts_phone_log._uri, dialer_log_data_changed_cb, dial_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_add_changed_cb() Failed(%d)", err);
+ err = contacts_db_add_changed_cb(_contacts_speeddial._uri, dialer_speeddial_data_changed_cb, dial_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_add_changed_cb() Failed(%d)", err);
+
+ evas_event_callback_add(evas_object_evas_get(dial_d->layout), EVAS_CALLBACK_RENDER_FLUSH_POST, dialer_layout_flush_post_cb, dial_d);
+
+ dial_d->key_press = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _key_press_cb, dial_d);
+ if (!dial_d->key_press)
+ PH_DBG("Failed to register a key down event handler");
+ dial_d->key_release = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _key_release_cb, dial_d);
+ if (!dial_d->key_release)
+ PH_DBG("Failed to register a key up event handler");
+
+ dial_d->m_Search = new Phone::Dialer::Search::Controller();
+
+ return 1;
+ }
+ return 0;
+}
+
+API void phone_dialer_set_navi(Evas_Object *layout)
+{
+ PH_TRACE;
+ assert(layout);
+ if (NULL != layout)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( evas_object_data_get(layout, KEY_DIALER_DATA) );
+ p_retm_if(NULL == dial_d, "dialer data is null");
+
+ Elm_Object_Item *navi_it;
+ navi_it = elm_naviframe_bottom_item_get(dial_d->navi);
+
+ phone_navi_item_reset(navi_it, dial_d);
+
+ if (!dial_d->is_emergency)
+ {
+ dial_d->menu_cb = dialer_menu_btn_cb;
+ }
+ }
+}
+
+API void phone_dialer_view_reset(Evas_Object *layout)
+{
+ PH_TRACE;
+ assert(layout);
+ if (NULL != layout)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( evas_object_data_get(layout, KEY_DIALER_DATA) );
+ p_retm_if(NULL == dial_d, "dialer data is null");
+
+ Elm_Object_Item * item;
+
+ if (dial_d->child_ug)
+ {
+ ug_destroy(dial_d->child_ug);
+ dial_d->child_ug = NULL;
+ }
+
+ item = elm_naviframe_bottom_item_get(dial_d->navi);
+ if (elm_naviframe_top_item_get(dial_d->navi) != item)
+ elm_naviframe_item_pop_to(item);
+ }
+}
+
+API void phone_dialer_view_language_changed(Evas_Object *layout)
+{
+ PH_TRACE;
+ // TODO: Fixme
+}
+
+API void phone_dialer_check_focus(Evas_Object *layout)
+{
+ PH_TRACE;
+ ph_dialer_data *dial_d;
+
+ dial_d = (ph_dialer_data *) evas_object_data_get(layout, KEY_DIALER_DATA);
+ p_retm_if(NULL == dial_d, "dialer data is null");
+
+ char *text = elm_entry_markup_to_utf8(elm_entry_entry_get(dial_d->entry));
+
+ if (dial_d->has_focus && text && dialer_include_zero_space(text) == -1)
+ elm_object_focus_set(dial_d->entry, EINA_TRUE);
+ else
+ {
+ elm_object_focus_set(dial_d->entry, EINA_FALSE);
+ dial_d->has_focus = false;
+ }
+ free(text);
+}
+
+API void phone_dialer_view_resume(Evas_Object *layout)
+{
+ PH_TRACE;
+ assert(layout);
+ if (NULL != layout)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( evas_object_data_get(layout, KEY_DIALER_DATA) );
+ p_retm_if(NULL == dial_d, "dialer data is null");
+
+ if (!dial_d->initialized)
+ dialer_entry_number_init(dial_d);
+ }
+}
+
+API void phone_dialer_view_set_num(Evas_Object *layout, char *number)
+{
+ PH_TRACE;
+ assert(layout);
+ if (NULL != layout)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( evas_object_data_get(layout, KEY_DIALER_DATA) );
+ p_retm_if(NULL == dial_d, "dialer data is null");
+
+ char dest[PH_TEXT_MAX_LEN] = { 0 };
+ if (number != NULL)
+ {
+ if (dial_d->entry)
+ {
+ ph_dialer_util_append_node_from_numstr_with_strip(dial_d, number);
+ ph_dialer_util_add_dashes(dial_d, DASH_REAL);
+ ph_dialer_util_get_numstr_from_node(dial_d, dest);
+ ph_dialer_entry_set_number(*dial_d, dest, CURSOR_END);
+ ph_dialer_search_request(dial_d, FALSE);
+ }
+ else
+ dial_d->searched_text = SAFE_STRDUP(number);
+ }
+ else
+ ph_dialer_util_entry_clear(dial_d);
+ }
+}
+
+API void phone_dialer_view_send_key(Evas_Object *layout)
+{
+ PH_TRACE;
+ assert(layout);
+ if (NULL != layout)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( evas_object_data_get(layout, KEY_DIALER_DATA) );
+ p_retm_if(NULL == dial_d, "dialer data is null");
+
+ dialer_softkey_call_clicked(dial_d, 0);
+ }
+}
+
+API void phone_dialer_set_background(Evas_Object *obj, bool is_background)
+{
+ PH_TRACE;
+ assert(obj);
+ if (NULL != obj)
+ {
+ ph_dialer_data* dial_d = static_cast<ph_dialer_data*>( evas_object_data_get(obj, KEY_DIALER_DATA) );
+ p_retm_if(NULL == dial_d, "dialer data is null");
+
+ dial_d->is_background = is_background;
+ if (dial_d->update_timer)
+ {
+ ecore_timer_del(dial_d->update_timer);
+ dial_d->update_timer = NULL;
+ ph_dialer_reload_data(dial_d);
+ }
+ }
+}
diff --git a/lib/dialer/ph-dialer-view.h b/lib/dialer/ph-dialer-view.h
new file mode 100755
index 0000000..4b9b957
--- /dev/null
+++ b/lib/dialer/ph-dialer-view.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PH_DIALER_VIEW_H__
+#define __PH_DIALER_VIEW_H__
+
+enum
+{
+ COUNT_BUTTON_CLOSE,
+ COUNT_BUTTON_OPEN
+};
+
+typedef enum
+{
+ SEARCH_LOG_TYPE,
+ SEARCH_SPEEDDIAL_TYPE,
+ SEARCH_CONTACT_NUM_TYPE,
+ SEARCH_CONTACT_NAME_TYPE,
+} search_type;
+
+#define KEY_DIALER_DATA "dialer_data"
+
+int ph_dialer_create_content(ph_dialer_data *dial_d);
+void ph_dialer_entry_set_number(ph_dialer_data &dial_d, const std::string &orig, int cursor);
+void ph_dialer_update_cnt_btn(ph_dialer_data *dial_d, int count);
+char* ph_dialer_gl_label_get(void *data, Evas_Object *obj, const char *part);
+Evas_Object* ph_dialer_gl_icon_get(void *data, Evas_Object *obj,
+ const char *part);
+Eina_Bool ph_dialer_reload_data(void *data);
+void dialer_add_contact(ph_dialer_data *dial_d);
+
+#endif /* __PH_DIALER_VIEW_H__ */
diff --git a/lib/edc/contact_button.edc b/lib/edc/contact_button.edc
new file mode 100755
index 0000000..7d7e9aa
--- /dev/null
+++ b/lib/edc/contact_button.edc
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+styles {
+ style {
+ name: "baseinfo_defaultnumber_textblock_style";
+ base: "font=Tizen:style=Bold text_class=tizen color=#FFFFFF ellipsis=0.0 font_size=30 wrap=char";
+ }
+}
+collections {
+ group {
+ name: "elm/button/base/transparency";
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ }
+ }
+ part {
+ name: "icon";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ }
+ }
+ }
+ }
+ group {
+ name: "quick.munu";
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "icon";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: "bg";}
+ rel2 { relative: 1.0 0.5; to: "bg";}
+ }
+ }
+ part {
+ name: "elm.text.quick";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.5; to: "bg"; }
+ rel2 { relative: 1.0 1.0; to: "bg"; }
+ text { style: "baseinfo_defaultnumber_textblock_style";}
+ }
+ }
+ }
+ }
+}
+
diff --git a/lib/edc/contacts.edc b/lib/edc/contacts.edc
new file mode 100755
index 0000000..93f8dfb
--- /dev/null
+++ b/lib/edc/contacts.edc
@@ -0,0 +1,19 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+#include "list.edc"
+#include "input_theme.edc"
diff --git a/lib/edc/detail_theme.edc b/lib/edc/detail_theme.edc
new file mode 100644
index 0000000..1b44c8c
--- /dev/null
+++ b/lib/edc/detail_theme.edc
@@ -0,0 +1,1732 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#define GENLIST_PART_BG_COLOR_INC 248 246 239 255
+#define GENLIST_PART_LIST_LINE_COLOR_INC 169 169 169 255
+#define GENLIST_DIALOGUE_FONT_SUB_TITLE_COLOR_INC 102 102 102 255
+#define GENLIST_PART_LIST_TEXT_DEFAULT 0 0 0 255
+
+#define IMAGE_PATH "../images/contact_images/"
+#define BUTTON_CIRCLE_STYLE_BG_MIN_MAX_INC 138 138
+#define BUTTON_CIRCLE_STYLE_CONTENT_MIN_MAX_INC 138 138
+
+#define GENLIST_BASEINFO_PART_BASE(height) \
+part { \
+ name: "base"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 height; \
+ color: GENLIST_PART_BG_COLOR_INC; \
+ } \
+}
+
+#define GENLIST_PART_BASE( param_item_height ) \
+part { \
+ name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: GENLIST_PART_BG_COLOR_INC; \
+ } \
+}
+#define GENLIST_PART_BOTTOM_LINE \
+part { \
+ name: "bottom_line"; \
+ type: RECT; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ min: 0 1; \
+ fixed: 0 1; \
+ visible: 1; \
+ color: GENLIST_PART_LIST_LINE_COLOR_INC; \
+ rel1 { \
+ relative: 0.0 1.0; \
+ offset: 0 -1; \
+ } \
+ } \
+}
+
+#define GENLIST_PART_PADDING_TOP( param_padding_size ) \
+part { \
+ name: "elm.padding.top"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 param_padding_size; \
+ fixed: 0 1; \
+ visible: 0; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.0 0.0; \
+ } \
+}
+
+#define GENLIST_PART_PADDING_BOTTOM( param_padding_size ) \
+part { \
+ name: "elm.padding.bottom"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 param_padding_size; \
+ fixed: 0 1; \
+ visible: 0; \
+ rel1.relative: 0.0 1.0; \
+ align: 0.0 1.0; \
+ } \
+}
+
+#define GENLIST_PART_PADDING_LEFT( param_padding_size ) \
+part { \
+ name: "elm.padding.left"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: param_padding_size 0; \
+ fixed: 1 0; \
+ visible: 0; \
+ rel2.relative: 0.0 1.0; \
+ align: 0.0 0.0; \
+ } \
+}
+
+#define GENLIST_PART_PADDING_RIGHT( param_padding_size ) \
+part { \
+ name: "elm.padding.right"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: param_padding_size 0; \
+ fixed: 1 0; \
+ visible: 0; \
+ rel1.relative: 1.0 0.0; \
+ align: 1.0 0.0; \
+ } \
+}
+
+styles {
+ style {
+ name: "baseinfo_defaultnumber_textblock_style";
+ base: "font=Tizen:style=Bold text_class=tizen color=#000000 ellipsis=0.0 font_size=44 wrap=char";
+ }
+ style {
+ name: "baseinfo_name_textblock_style";
+ base: "font=Tizen:style=Bold text_class=tizen color=#3B73B6 ellipsis=1.0 font_size=56";
+ }
+ style {
+ name: "baseinfo_subname_textblock_style";
+ base: "font=Tizen:style=Medium text_class=tizen color=#000000 ellipsis=1.0 font_size=32";
+ }
+ style {
+ name: "activity_textblock_style";
+ base: "font=Tizen:style=Medium text_class=tizen color=#000000 ellipsis=0.0 font_size=32 wrap=char";
+ }
+ style {
+ name: "detail_fieldtitle_textblock_style";
+ base: "font=Tizen:style=Bold text_class=tizen color=#3B73B6 ellipsis=1.0 font_size=32";
+ }
+ style {
+ name: "detail_field_textblock_style";
+ base: "font=Tizen:style=Regular text_class=tizen color=#000000 ellipsis=1.0 font_size=44";
+ }
+ style {
+ name: "detail_fieldtype_textblock_style";
+ base: "font=Tizen:style=Bold text_class=tizen color=#808080 ellipsis=1.0 font_size=32";
+ }
+}
+collections
+{
+ group {
+ name: "elm/genlist/item/baseinfo.1text/default";
+ alias: "elm/genlist/item_odd/baseinfo.1text/default";
+ alias: "elm/genlist/item_compress/baseinfo.1text/default";
+ alias: "elm/genlist/item_compress_odd/baseinfo.1text/default";
+ alias: "elm/genlist/tree/baseinfo.1text/default";
+ alias: "elm/genlist/tree_odd/baseinfo.1text/default";
+ alias: "elm/genlist/tree_compress/baseinfo.1text/default";
+ alias: "elm/genlist/tree_compress_odd/baseinfo.1text/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+
+ parts {
+ GENLIST_BASEINFO_PART_BASE(50)
+ part {
+ name: "elm.text";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 1.0 1.0; offset: -26 0 ; to: "base"; }
+ text { style: "baseinfo_defaultnumber_textblock_style";}
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/detail.fieldtitle.1text/default";
+ alias: "elm/genlist/item_odd/detail.fieldtitle.1text/default";
+ alias: "elm/genlist/item_compress/detail.fieldtitle.1text/default";
+ alias: "elm/genlist/item_compress_odd/detail.fieldtitle.1text/default";
+ alias: "elm/genlist/tree/detail.fieldtitle.1text/default";
+ alias: "elm/genlist/tree_odd/detail.fieldtitle.1text/default";
+ alias: "elm/genlist/tree_compress/detail.fieldtitle.1text/default";
+ alias: "elm/genlist/tree_compress_odd/detail.fieldtitle.1text/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+
+ parts {
+ GENLIST_BASEINFO_PART_BASE(32)
+ part {
+ name: "elm.text";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 1.0 1.0; offset: -26 0 ; to: "base"; }
+ text { style: "detail_fieldtitle_textblock_style";}
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/detail.field.2text/default";
+ alias: "elm/genlist/item_odd/detail.field.2text/default";
+ alias: "elm/genlist/item_compress/detail.field.2text/default";
+ alias: "elm/genlist/item_compress_odd/detail.field.2text/default";
+ alias: "elm/genlist/tree/detail.field.2text/default";
+ alias: "elm/genlist/tree_odd/detail.field.2text/default";
+ alias: "elm/genlist/tree_compress/detail.field.2text/default";
+ alias: "elm/genlist/tree_compress_odd/detail.field.2text/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.1 elm.text.2";
+
+ parts {
+ GENLIST_BASEINFO_PART_BASE(113)
+ part {
+ name: "elm.text.2";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 1.0 0.0; offset: -176 0; to: "base"; }
+ rel2 { relative: 1.0 1.0; offset: -26 0 ; to: "base"; }
+ text {
+ style: "detail_fieldtype_textblock_style";
+ }
+ }
+ }
+ part {
+ name: "elm.text.1";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 0.0 1.0; offset: -26 0; to: "elm.text.2"; }
+ text {
+ style: "detail_field_textblock_style";
+ }
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/baseinfo.1text.1icon/default";
+ alias: "elm/genlist/item_odd/baseinfo.1text.1icon/default";
+ alias: "elm/genlist/item_compress/baseinfo.1text.1icon/default";
+ alias: "elm/genlist/item_compress_odd/baseinfo.1text.1icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.name";
+ data.item: "contents" "elm.icon.favorite elm.icon.block";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(110)
+ part {
+ name: "elm.icon.favorite.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ max: 50 50 ;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 55.0/110.0; offset: -76 0; to: "base"; }
+ rel2 { relative: 1.0 105.0/110.0; offset: -26 0; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.icon.favorite";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "elm.icon.favorite.rect";
+ rel2.to: "elm.icon.favorite.rect";
+ }
+ }
+ part {
+ name: "elm.icon.block.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ max: 50 50 ;
+ fixed: 1 0;
+ align: 1.0 1.0;
+ color: 0 0 0 0;
+ rel2 { relative: 0.0 1.0; offset:-1 0; to: "elm.icon.favorite"; }
+ }
+ }
+ part {
+ name: "elm.icon.block";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "elm.icon.block.rect";
+ rel2.to: "elm.icon.block.rect";
+ }
+ }
+ part {
+ name: "elm.text.name";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 42.0/110.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 0.0 110.0/110.0; offset: -16 0 ; to: "elm.icon.block"; }
+ text {
+ style: "baseinfo_name_textblock_style";
+ }
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/baseinfo.1text.2icon/default";
+ alias: "elm/genlist/item_odd/baseinfo.1text.2icon/default";
+ alias: "elm/genlist/item_compress/baseinfo.1text.2icon/default";
+ alias: "elm/genlist/item_compress_odd/baseinfo.1text.2icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.name";
+ data.item: "contents" "elm.icon.image elm.icon.favorite elm.icon.block";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(520)
+ part {
+ name: "elm.icon.image.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 180 0;
+ max: 360 360;
+ fixed: 1 0;
+ align: 0.5 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; offset: 0 50; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.icon.image";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "elm.icon.image.rect";
+ rel2.to: "elm.icon.image.rect";
+ }
+ }
+ part {
+ name: "elm.icon.favorite.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ max: 50 50 ;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 465.0/520.0; offset: -76 0; to: "base"; }
+ rel2 { relative: 1.0 515.0/520.0; offset: -26 0; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.icon.favorite";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "elm.icon.favorite.rect";
+ rel2.to: "elm.icon.favorite.rect";
+ }
+ }
+ part {
+ name: "elm.icon.block.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ max: 50 50 ;
+ fixed: 1 0;
+ align: 1.0 1.0;
+ color: 0 0 0 0;
+ rel2 { relative: 0.0 1.0; offset:-1 0; to: "elm.icon.favorite"; }
+ }
+ }
+ part {
+ name: "elm.icon.block";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "elm.icon.block.rect";
+ rel2.to: "elm.icon.block.rect";
+ }
+ }
+ part {
+ name: "elm.text.name";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 452.0/520.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 0.0 1.0; offset: -16 0 ; to: "elm.icon.block"; }
+ text {
+ style: "baseinfo_name_textblock_style";
+ }
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/baseinfo.2text.1icon/default";
+ alias: "elm/genlist/item_odd/baseinfo.2text.1icon/default";
+ alias: "elm/genlist/item_compress/baseinfo.2text.1icon/default";
+ alias: "elm/genlist/item_compress_odd/baseinfo.2text.1icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.name elm.text.subname";
+ data.item: "contents" "elm.icon.favorite elm.icon.block";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(160)
+ part {
+ name: "elm.icon.favorite.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ max: 50 50 ;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 55.0/160.0; offset: -76 0; to: "base"; }
+ rel2 { relative: 1.0 105.0/160.0; offset: -26 0; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.icon.favorite";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "elm.icon.favorite.rect";
+ rel2.to: "elm.icon.favorite.rect";
+ }
+ }
+ part {
+ name: "elm.icon.block.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ max: 50 50 ;
+ fixed: 1 0;
+ align: 1.0 1.0;
+ color: 0 0 0 0;
+ rel2 { relative: 0.0 1.0; offset:-1 0; to: "elm.icon.favorite"; }
+ }
+ }
+ part {
+ name: "elm.icon.block";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "elm.icon.block.rect";
+ rel2.to: "elm.icon.block.rect";
+ }
+ }
+ part {
+ name: "elm.text.name";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 42.0/160.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 0.0 1.0; offset: -16 0 ; to: "elm.icon.block"; }
+ text {
+ style: "baseinfo_name_textblock_style";
+ }
+ }
+ }
+ part {
+ name: "elm.text.subname";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 120.0/160.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 1.0 160.0/160.0; offset: -26 0; to: "base"; }
+ text {
+ style: "baseinfo_subname_textblock_style";
+ }
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/baseinfo.2text.2icon/default";
+ alias: "elm/genlist/item_odd/baseinfo.2text.2icon/default";
+ alias: "elm/genlist/item_compress/baseinfo.2text.2icon/default";
+ alias: "elm/genlist/item_compress_odd/baseinfo.2text.2icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.name elm.text.subname";
+ data.item: "contents" "elm.icon.image elm.icon.favorite elm.icon.block";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(570)
+ part {
+ name: "elm.icon.image.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 180 0;
+ max: 360 360;
+ fixed: 1 0;
+ align: 0.5 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; offset: 0 50; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.icon.image";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "elm.icon.image.rect";
+ rel2.to: "elm.icon.image.rect";
+ }
+ }
+ part {
+ name: "elm.icon.favorite.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ max: 50 50 ;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 465.0/570.0; offset: -76 0; to: "base"; }
+ rel2 { relative: 1.0 515.0/570.0; offset: -26 0; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.icon.favorite";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "elm.icon.favorite.rect";
+ rel2.to: "elm.icon.favorite.rect";
+ }
+ }
+ part {
+ name: "elm.icon.block.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ max: 50 50 ;
+ fixed: 1 0;
+ align: 1.0 1.0;
+ color: 0 0 0 0;
+ rel2 { relative: 0.0 1.0; offset:-1 0; to: "elm.icon.favorite"; }
+ }
+ }
+ part {
+ name: "elm.icon.block";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "elm.icon.block.rect";
+ rel2.to: "elm.icon.block.rect";
+ }
+ }
+ part {
+ name: "elm.text.name";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 452.0/570.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 0.0 1.0; offset: -16 0 ; to: "elm.icon.block"; }
+ text {
+ style: "baseinfo_name_textblock_style";
+ }
+ }
+ }
+ part {
+ name: "elm.text.subname";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 530.0/570.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 1.0 570.0/570.0; offset: -26 0; to: "base"; }
+ text {
+ style: "baseinfo_subname_textblock_style";
+ }
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/baseinfo.3text.1icon/default";
+ alias: "elm/genlist/item_odd/baseinfo.3text.1icon/default";
+ alias: "elm/genlist/item_compress/baseinfo.3text.1icon/default";
+ alias: "elm/genlist/item_compress_odd/baseinfo.3text.1icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.name elm.text.subname elm.text.subname2";
+ data.item: "contents" "elm.icon.favorite elm.icon.block";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(210)
+ part {
+ name: "elm.icon.favorite.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ max: 50 50 ;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 55.0/210.0; offset: -76 0; to: "base"; }
+ rel2 { relative: 1.0 105.0/210.0; offset: -26 0; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.icon.favorite";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "elm.icon.favorite.rect";
+ rel2.to: "elm.icon.favorite.rect";
+ }
+ }
+ part {
+ name: "elm.icon.block.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ max: 50 50 ;
+ fixed: 1 0;
+ align: 1.0 1.0;
+ color: 0 0 0 0;
+ rel2 { relative: 0.0 1.0; offset:-1 0; to: "elm.icon.favorite"; }
+ }
+ }
+ part {
+ name: "elm.icon.block";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "elm.icon.block.rect";
+ rel2.to: "elm.icon.block.rect";
+ }
+ }
+ part {
+ name: "elm.text.name";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 42.0/210.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 0.0 1.0; offset: -16 0 ; to: "elm.icon.block"; }
+ text {
+ style: "baseinfo_name_textblock_style";
+ }
+ }
+ }
+ part {
+ name: "elm.text.subname";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 120.0/210.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 1.0 160.0/210.0; offset: -26 0; to: "base"; }
+ text {
+ style: "baseinfo_subname_textblock_style";
+ }
+ }
+ }
+ part {
+ name: "elm.text.subname2";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 160.0/210.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 1.0 210.0/210.0; offset: -26 0; to: "base"; }
+ text {
+ style: "baseinfo_subname_textblock_style";
+ }
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/baseinfo.3text.2icon/default";
+ alias: "elm/genlist/item_odd/baseinfo.3text.2icon/default";
+ alias: "elm/genlist/item_compress/baseinfo.3text.2icon/default";
+ alias: "elm/genlist/item_compress_odd/baseinfo.3text.2icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.name elm.text.subname elm.text.subname2";
+ data.item: "contents" "elm.icon.image elm.icon.favorite elm.icon.block";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(620)
+ part {
+ name: "elm.icon.image.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 180 0;
+ max: 360 360;
+ fixed: 1 0;
+ align: 0.5 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; offset: 0 50; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.icon.image";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "elm.icon.image.rect";
+ rel2.to: "elm.icon.image.rect";
+ }
+ }
+ part {
+ name: "elm.icon.favorite.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ max: 50 50 ;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 465.0/620.0; offset: -76 0; to: "base"; }
+ rel2 { relative: 1.0 515.0/620.0; offset: -26 0; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.icon.favorite";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "elm.icon.favorite.rect";
+ rel2.to: "elm.icon.favorite.rect";
+ }
+ }
+ part {
+ name: "elm.icon.block.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ max: 50 50 ;
+ fixed: 1 0;
+ align: 1.0 1.0;
+ color: 0 0 0 0;
+ rel2 { relative: 0.0 1.0; offset:-1 0; to: "elm.icon.favorite"; }
+ }
+ }
+ part {
+ name: "elm.icon.block";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1.to: "elm.icon.block.rect";
+ rel2.to: "elm.icon.block.rect";
+ }
+ }
+ part {
+ name: "elm.text.name";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 452.0/620.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 0.0 1.0; offset: -16 0 ; to: "elm.icon.block"; }
+ text {
+ style: "baseinfo_name_textblock_style";
+ }
+ }
+ }
+ part {
+ name: "elm.text.subname";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 530.0/620.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 1.0 570.0/620.0; offset: -26 0; to: "base"; }
+ text {
+ style: "baseinfo_subname_textblock_style";
+ }
+ }
+ }
+ part {
+ name: "elm.text.subname2";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 570.0/620.0; offset: 26 0; to: "base"; }
+ rel2 { relative: 1.0 620.0/620.0; offset: -26 0; to: "base"; }
+ text {
+ style: "baseinfo_subname_textblock_style";
+ }
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/detail.title/default";
+ alias: "elm/genlist/item_odd/detail.title/default";
+ alias: "elm/genlist/item_compress/detail.title/default";
+ alias: "elm/genlist/item_compress_odd/detail.title/default";
+ data.item: "stacking" "above";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(77);
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GENLIST_DIALOGUE_FONT_SUB_TITLE_COLOR_INC;
+ text {
+ font: "Tizen:style=Medium";
+ text_class: "tizen";
+ size: 28;
+ min: 0 1;
+ align: 0.0 1.0;
+ }
+ rel1 { offset: 10 0; }
+ rel2 { offset: -10 -10; }
+ }
+ }
+ }
+ }
+
+ group {
+ name: "elm/genlist/item/detail.3icon/default";
+ alias: "elm/genlist/item_odd/detail.3icon/default";
+ alias: "elm/genlist/item_compress/detail.3icon/default";
+ alias: "elm/genlist/item_compress_odd/detail.3icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "contents" "elm.icon.1.bg elm.icon.2.bg elm.icon.3.bg elm.icon.1 elm.icon.2 elm.icon.3";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(222);
+ part {
+ name: "elm.icon.1.bg";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min:0 0;
+ max:138 138;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0; offset: 38 0; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.icon.2.bg";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 69 0;
+ max:138 138;
+ fixed: 1 0;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; offset: 0 0; to: "base"; }
+ }
+ }
+ part {
+ type: SWALLOW;
+ name: "elm.icon.3.bg";
+ scale:1 ;
+ description {
+ state: "default" 0.0;
+ max: 138 138;
+ fixed:1 0;
+ align: 1.0 0.0;
+ rel1 { relative: 1.0 42.0/222.0; offset: -176 0; to: "base"; }
+ rel2 { relative: 1.0 180.0/222.0; offset: -38 0; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.icon.1";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min:138 138;
+ max:138 138;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 1.0;to: "elm.icon.1.bg"; }
+ rel2 { relative: 1.0 1.0;to: "elm.icon.1.bg"; }
+ }
+ }
+ part {
+ name: "elm.icon.2";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min:138 138;
+ max:138 138;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 1.0;to: "elm.icon.2.bg"; }
+ rel2 { relative: 1.0 1.0;to: "elm.icon.2.bg"; }
+ }
+ }
+ part {
+ type: SWALLOW;
+ name: "elm.icon.3";
+ scale:1 ;
+ description {
+ state: "default" 0.0;
+ min:138 138;
+ max:138 138;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 1.0;to: "elm.icon.3.bg"; }
+ rel2 { relative: 1.0 1.0;to: "elm.icon.3.bg"; }
+ }
+ }
+ }
+ }
+
+ group {
+ name: "elm/genlist/item/history_list/default";
+ alias: "elm/genlist/item_odd/history_list/default";
+ alias: "elm/genlist/item_compress/history_list/default";
+ alias: "elm/genlist/item_compress_odd/history_list/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
+ data.item: "contents" "elm.icon.1 elm.icon.2";
+ data.item: "flips" "elm.flip.content";
+ parts {
+ GENLIST_PART_BASE(128)
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_TOP(10)
+ GENLIST_PART_PADDING_BOTTOM(10)
+ GENLIST_PART_PADDING_LEFT(16)
+ GENLIST_PART_PADDING_RIGHT(16)
+ part {
+ name: "elm.icon.1";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.bottom";
+ }
+ align: 0.0 0.5;
+ }
+ }
+ part {
+ name: "elm.padding.icon1.right";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 16 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.icon.1";
+ }
+ rel2.to_x: "elm.icon.1";
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.icon.2";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.text.1";
+ }
+ align: 1.0 0.5;
+ }
+ }
+ part {
+ name: "elm.padding.icon2.left";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 16 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "elm.icon.2";
+ }
+ rel2.to_x: "elm.icon.2";
+ align: 1.0 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.text.1";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 60;
+ fixed: 0 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.icon2.left";
+ to_y: "elm.padding.top";
+ }
+ align: 0.0 0.0;
+ color: GENLIST_PART_LIST_TEXT_DEFAULT;
+ text {
+ font: "Tizen:style=Roman";
+ size: 44;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ }
+ part {
+ name: "elm.text.2";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon1.right";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.8 0.0;
+ to_x: "elm.text.1";
+ to_y: "elm.padding.bottom";
+ }
+ color: 68 68 68 255;
+ text {
+ font: "Tizen:style=Medium";
+ size: 32;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "tizen";
+ }
+ }
+ }
+ part {
+ name: "elm.text.3";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.text.2";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ offset: 5 0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ color: 68 68 68 255;
+ text {
+ font: "Tizen:style=Medium";
+ size: 32;
+ min: 0 1;
+ align: 1.0 0.5;
+ text_class: "tizen";
+ }
+ }
+ }
+ part {
+ name: "disclip";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/activity_list/default";
+ alias: "elm/genlist/item_odd/activity_list/default";
+ alias: "elm/genlist/item_compress/activity_list/default";
+ alias: "elm/genlist/item_compress_odd/activity_list/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.1 elm.text.2";
+ data.item: "contents" "elm.icon.1 elm.icon.2";
+ data.item: "flips" "elm.flip.content";
+ parts {
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_TOP(10)
+ GENLIST_PART_PADDING_BOTTOM(10)
+ GENLIST_PART_PADDING_LEFT(16)
+ GENLIST_PART_PADDING_RIGHT(16)
+ part {
+ name: "elm.icon.1";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.bottom";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.bottom";
+ }
+ align: 0.0 1.0;
+ }
+ }
+ part {
+ name: "elm.padding.icon1.right";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 16 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.icon.1";
+ }
+ rel2.to_x: "elm.icon.1";
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.padding.icon1.top";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 16;
+ fixed: 0 1;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ }
+ rel2.to_y: "elm.icon.1";
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.icon.2";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 321 321;
+ max: 321 321;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part {
+ name: "elm.text.2";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon1.right";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ color: 68 68 68 255;
+ text {
+ font: "Tizen:style=Medium";
+ size: 32;
+ min: 0 1;
+ align: 0.0 1.0;
+ text_class: "tizen";
+ }
+ }
+ }
+ part {
+ name: "elm.text.1";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.icon.2";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.icon.2";
+ }
+ align: 0.0 0.0;
+ color: GENLIST_PART_LIST_TEXT_DEFAULT;
+ text {
+ style: "activity_textblock_style";
+ min: 0 1;
+ align: 0.0 1.0;
+ }
+ }
+ }
+ part {
+ name: "disclip";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/activity_list_no_img/default";
+ alias: "elm/genlist/item_odd/activity_list_no_img/default";
+ alias: "elm/genlist/item_compress/activity_list_no_img/default";
+ alias: "elm/genlist/item_compress_odd/activity_list_no_img/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.1 elm.text.2";
+ data.item: "contents" "elm.icon.1";
+ data.item: "flips" "elm.flip.content";
+ parts {
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_TOP(10)
+ GENLIST_PART_PADDING_BOTTOM(10)
+ GENLIST_PART_PADDING_LEFT(16)
+ GENLIST_PART_PADDING_RIGHT(16)
+ part {
+ name: "elm.icon.1";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.bottom";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.bottom";
+ }
+ align: 0.0 1.0;
+ }
+ }
+ part {
+ name: "elm.padding.icon1.right";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 16 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.icon.1";
+ }
+ rel2.to_x: "elm.icon.1";
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.text.2";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon1.right";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ color: 68 68 68 255;
+ text {
+ font: "Tizen:style=Medium";
+ size: 32;
+ min: 0 1;
+ align: 0.0 1.0;
+ text_class: "tizen";
+ }
+ }
+ }
+ part {
+ name: "elm.text.1";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.icon.1";
+ }
+ color: GENLIST_PART_LIST_TEXT_DEFAULT;
+ text {
+ style: "activity_textblock_style";
+ min: 0 1;
+ align: 0.0 1.0;
+ }
+ }
+ }
+ part {
+ name: "disclip";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/detail.5icon/default";
+ alias: "elm/genlist/item_odd/detail.5icon/default";
+ alias: "elm/genlist/item_compress/detail.5icon/default";
+ alias: "elm/genlist/item_compress_odd/detail.5icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "contents" "elm.icon.1 elm.icon.2 elm.icon.3 elm.icon.4 elm.icon.5";
+
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ repeat_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 112;
+ }
+ }
+ part {
+ name: "elm.icon.1";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min:0 74;
+ fixed: 0 1;
+ rel1.relative: 0.021 0.5;
+ rel2.relative: 0.196 0.5;
+ align: 0.5 0.5;
+ }
+ }
+
+ part {
+ name: "elm.icon.2";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 74;
+ fixed: 0 1;
+ rel1.relative: 0.218 0.5;
+ rel2.relative: 0.392 0.5;
+ align: 0.5 0.5;
+ }
+ }
+
+ part {
+ name: "elm.icon.3";
+ type: SWALLOW;
+ scale:1 ;
+ description {
+ state: "default" 0.0;
+ min: 0 74;
+ fixed: 0 1;
+ rel1.relative: 0.414 0.5;
+ rel2.relative: 0.588 0.5;
+ align: 0.5 0.5;
+ }
+ }
+ part {
+ name: "elm.icon.4";
+ type: SWALLOW;
+ scale:1 ;
+ description {
+ state: "default" 0.0;
+ min: 0 74;
+ fixed: 0 1;
+ rel1.relative: 0.61 0.5;
+ rel2.relative: 0.783 0.5;
+ align: 0.5 0.5;
+ }
+ }
+ part {
+ name: "elm.icon.5";
+ type: SWALLOW;
+ scale:1 ;
+ description {
+ state: "default" 0.0;
+ min: 0 74;
+ fixed: 0 1;
+ rel1.relative: 0.806 0.5;
+ rel2.relative: 0.979 0.5;
+ align: 0.5 0.5;
+ }
+ }
+ }
+ }
+ group { name: "elm/button/base/detail.circle/empty";
+ alias: "elm/button/base/detail.circle/empty";
+ images {
+ image: IMAGE_PATH"C02_circle_button.png" COMP;
+ image: IMAGE_PATH"C02_circle_button_press.png" COMP;
+ }
+ parts {
+ part { name: "button_image";
+ scale: 1;
+ description { state: "default" 0.0;
+ min: BUTTON_CIRCLE_STYLE_BG_MIN_MAX_INC;
+ max: BUTTON_CIRCLE_STYLE_BG_MIN_MAX_INC;
+ fixed: 1 1;
+ image.normal: IMAGE_PATH"C02_circle_button.png";
+ }
+ description { state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: IMAGE_PATH"C02_circle_button_press.png";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: IMAGE_PATH"C02_circle_button.png";
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ clip_to: "icon_clipper";
+ scale: 1;
+ description { state: "default" 0.0;
+ min: BUTTON_CIRCLE_STYLE_CONTENT_MIN_MAX_INC;
+ max: BUTTON_CIRCLE_STYLE_CONTENT_MIN_MAX_INC;
+ fixed: 1 1;
+ visible: 0;
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "visible" 0.0;
+ }
+ }
+ part { name: "icon_clipper";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ }
+ description { state: "visible" 0.0;
+ }
+ description { state: "disabled" 0.0;
+ }
+ }
+ part { name: "over1";
+ type: RECT;
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "over2";
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "disabler";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ visible: 0;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ program { name: "button_click";
+ signal: "mouse,down,1";
+ source: "over1";
+ action: SIGNAL_EMIT "elm,action,press" "";
+ after: "button_click_anim";
+ }
+ program { name: "button_click_anim";
+ action: STATE_SET "clicked" 0.0;
+ target: "button_image";
+ target: "icon_clipper";
+ }
+ program { name: "touch_snd";
+ signal: "mouse,clicked,1";
+ source: "over1";
+// action: PLAY_SAMPLE "touch_sound" 1.0;
+ after: button_unclick2;
+ }
+ program { name: "button_unclick2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ program { name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ after: "button_unclick_anim";
+ }
+ program { name: "button_unclick_anim";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "icon_clipper";
+ }
+ program { name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disabler";
+ target: "button_image";
+ target: "icon_clipper";
+ }
+ program { name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disabler";
+ target: "button_image";
+ target: "icon_clipper";
+ }
+ program { name: "icon_show";
+ signal: "elm,state,icon,visible";
+ source: "elm";
+ action: STATE_SET "visible" 0.0;
+ target: "elm.swallow.content";
+ }
+ program { name: "icon_hide";
+ signal: "elm,state,icon,hidden";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ }
+ }
+ }
+}
diff --git a/lib/edc/dialer.edc b/lib/edc/dialer.edc
new file mode 100755
index 0000000..a6ed9fa
--- /dev/null
+++ b/lib/edc/dialer.edc
@@ -0,0 +1,1744 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#define MAIN_H (1280)
+#define MAIN_W (720)
+
+#define INDICATOR_H (50)
+#define TABBAR_H (121)
+#define MAIN_H_PURE (MAIN_H-INDICATOR_H-TABBAR_H)
+
+#define KEYPAD_H (785)
+#define KEYPAD_START (MAIN_H_PURE-KEYPAD_H)
+
+#define TEXT_AREA_H (KEYPAD_START)
+#define TEXT_AREA_W (630)
+#define TEXT_ENTRY_H (156)
+
+#define PSEARCH_ITEM_H (140)
+
+#define BUTTON_W (218)
+#define BUTTON_W_PAD (19)
+#define BUTTON_H (130)
+#define BUTTON_H_PRESSED (150)
+#define BUTTON_H_PAD (24)
+#define BTN_1_COL_X (10)
+#define BTN_2_COL_X (BTN_1_COL_X+BUTTON_W+BUTTON_W_PAD)
+#define BTN_3_COL_X (BTN_1_COL_X+(BUTTON_W*2)+(BUTTON_W_PAD*2))
+#define BTN_1_ROW_Y (43)
+#define BTN_2_ROW_Y (BTN_1_ROW_Y+BUTTON_H+BUTTON_H_PAD)
+#define BTN_3_ROW_Y (BTN_2_ROW_Y+BUTTON_H+BUTTON_H_PAD)
+#define BTN_4_ROW_Y (BTN_3_ROW_Y+BUTTON_H+BUTTON_H_PAD)
+#define BTN_5_ROW_Y (BTN_4_ROW_Y+BUTTON_H+23)
+#define KEYPAD_TOP_ICON_W (218)
+#define KEYPAD_TOP_ICON_H (90)
+#define KEYPAD_BTM_ICON_W (50)
+#define KEYPAD_BTM_ICON_H (40)
+#define SOFTKEY_ICON_W (64)
+#define SOFTKEY_ICON_H (64)
+#define SOFTKEY_BTN_H (104)
+#define SOFTKEY_BTN_PAD (24)
+#define SOFTKEY_BTN1_X (36)
+#define SOFTKEY_BTN1_W (180)
+#define SOFTKEY_BTN_W (160)
+#define SOFTKEY_BTN_OFFSET (10)
+#define SOFTKEY_BTN2_X (SOFTKEY_BTN1_X+SOFTKEY_BTN1_W+SOFTKEY_BTN_PAD+KEYPAD_BTM_ICON_H)
+#define SOFTKEY_BTN2_W (240)
+#define SOFTKEY_BTN3_X (SOFTKEY_BTN1_X+SOFTKEY_BTN1_W+SOFTKEY_BTN_PAD+SOFTKEY_BTN2_W+SOFTKEY_BTN_PAD)
+#define SOFTKEY_BTN3_W (SOFTKEY_BTN1_W)
+
+#define SUGGESTION_PART_NORMAL_BG_COLOR 249 249 249 255
+#define SUGGESTION_PART_PRESSED_BG_COLOR 42 137 194 255
+#define SUGGESTION_PART_PRIMARY_COLOR 0 0 64 255
+#define SUGGESTION_PART_SECONDARY_COLOR 96 96 96 255
+
+#define IMAGE_PATH "../images/dialer_images/"
+#define IMAGES "../images/phoneug_images/"
+#define KEYPAD_ANI_TIME 0.03
+
+#define _DBG_OPA (30)
+
+images {
+//NUMBER KEY BUTTON
+ image: IMAGE_PATH"keypad/C01-3_keypad_number_00.png" COMP;
+ image: IMAGE_PATH"keypad/C01-3_keypad_number_01.png" COMP;
+ image: IMAGE_PATH"keypad/C01-3_keypad_number_02.png" COMP;
+ image: IMAGE_PATH"keypad/C01-3_keypad_number_03.png" COMP;
+ image: IMAGE_PATH"keypad/C01-3_keypad_number_04.png" COMP;
+ image: IMAGE_PATH"keypad/C01-3_keypad_number_05.png" COMP;
+ image: IMAGE_PATH"keypad/C01-3_keypad_number_06.png" COMP;
+ image: IMAGE_PATH"keypad/C01-3_keypad_number_07.png" COMP;
+ image: IMAGE_PATH"keypad/C01-3_keypad_number_08.png" COMP;
+ image: IMAGE_PATH"keypad/C01-3_keypad_number_09.png" COMP;
+ image: IMAGE_PATH"keypad/C01-3_keypad_number_asterisk.png" COMP;
+ image: IMAGE_PATH"keypad/C01-3_keypad_number_auto_answer.png" COMP;
+ image: IMAGE_PATH"keypad/C01-3_keypad_number_mute.png" COMP;
+ image: IMAGE_PATH"keypad/C01-3_keypad_number_sharp.png" COMP;
+ image: IMAGE_PATH"C01-3_keypad_bg.png" COMP;
+ image: IMAGE_PATH"C01-3_keypad_press.png" COMP;
+ image: IMAGE_PATH"C01-3_keypad_bg_reduction.png" COMP;
+
+//SOFT KEY BUTTON
+ image: IMAGE_PATH"C01-3_button_01.png" COMP;
+ image: IMAGE_PATH"C01-3_button_01_dim.png" COMP;
+ image: IMAGE_PATH"C01-3_button_02.png" COMP;
+ image: IMAGE_PATH"C01-3_button_02_dim.png" COMP;
+ image: IMAGE_PATH"C01-3_dialer_button_01_press.png" COMP;
+ image: IMAGE_PATH"C01-3_icon_call.png" COMP;
+ image: IMAGE_PATH"C01-3_icon_call_dim.png" COMP;
+ image: IMAGE_PATH"C01-3_icon_call_press.png" COMP;
+ image: IMAGE_PATH"C01-3_icon_delete.png" COMP;
+ image: IMAGE_PATH"C01-3_icon_expand_01.png" COMP;
+ image: IMAGE_PATH"C01-3_icon_expand_02.png" COMP;
+ image: IMAGE_PATH"C01-3_icon_message.png" COMP;
+ image: IMAGE_PATH"C01-3_icon_message_dim.png" COMP;
+ image: IMAGE_PATH"C01-3_icon_message_press.png" COMP;
+ image: IMAGE_PATH"C01-3_icon_video_call.png" COMP;
+ image: IMAGE_PATH"C01-3_icon_video_call_dim.png" COMP;
+ image: IMAGE_PATH"C01-3_icon_video_call_press.png" COMP;
+
+//SEARCH BAR
+ image: IMAGE_PATH"C01-3_search_bg_01.png" COMP;
+ image: IMAGE_PATH"C01-3_search_bg_02.png" COMP;
+ image: IMAGE_PATH"C01-3_search_field.png" COMP;
+ image: IMAGE_PATH"C01-3_search_icon.png" COMP;
+
+// image: IMAGE_PATH"C01-3_thumbnail_bg.png" COMP; //CONTACT SEARCH LIST
+// image: IMAGE_PATH"C01-3_title_divider.png" COMP; //TABBAR DIVIDER
+
+//SUGGESTION BOX
+ image: IMAGE_PATH"C01-3_icon_expand_01.png" COMP;
+ image: IMAGES"caller_ID_default_70x70_man.png" COMP;
+ image: IMAGE_PATH"C01-3_title_divider.png" COMP;
+}
+
+color_classes {
+ color_class {
+ name: "color/textblock/bg";
+ color: 177 164 150 255;
+ }
+}
+
+collections {
+ #include "dialer_btn.edc"
+ /*****************************************************************************
+ * dialer main edc group
+ *****************************************************************************/
+ group {
+ name: "dialer/main";
+ styles {
+ style
+ {
+ name: "chapter_text_style";
+ base: "style=Regular font="Tizen" linesize=40 font_size=32 color=#81796D valign=top wrap=word";
+ tag: "mark" "+ font_weight=Bold color=#0000ff";
+ }
+ }
+
+ parts {
+ /*****************************************************************************
+ * Main background
+ *****************************************************************************/
+ part {
+ name: "background";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ color_class: "color/textblock/bg"; //right below input_field to the end
+ }
+ }
+
+ /*****************************************************************************
+ * Entry area
+ *****************************************************************************/
+ part {
+ name: "entry/bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "background";}
+ rel2 { relative: 1.0 KEYPAD_START/MAIN_H_PURE; to: "background";}
+ }
+ }
+ part {
+ name: "entry/bg/image";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "entry/bg";}
+ rel2 { relative: 1.0 1.0; to: "entry/bg";}
+ image.normal: IMAGE_PATH"C01-3_search_bg_01.png";
+ }
+ }
+
+ /*****************************************************************************
+ * Number Keypad bg
+ *****************************************************************************/
+ part {
+ name: "keypad/bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 KEYPAD_START/MAIN_H_PURE; to: "background";}
+ rel2 { relative: 1.0 1.0; to: "background";}
+ }
+ }
+ part {
+ name: "keypad/bg/image";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "keypad/bg";}
+ rel2 { relative: 1.0 1.0; to: "keypad/bg";}
+ image.normal: IMAGE_PATH"C01-3_keypad_bg.png";
+ }
+ }
+ //Number Keypad swallow
+ part {
+ name: "keypad/swallow";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "keypad/bg"; }
+ rel2 { relative: 1.0 1.0; to: "keypad/bg"; }
+ }
+ }
+
+
+ /*****************************************************************************
+ * Softkey button
+ *****************************************************************************/
+/***************/
+/**** call btn ****/
+/***************/
+ part {
+ name: "normal/call";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: (SOFTKEY_BTN2_X-SOFTKEY_BTN_OFFSET)/MAIN_W BTN_5_ROW_Y/KEYPAD_H; to:"keypad/bg";}
+ rel2 { relative: (SOFTKEY_BTN2_X+SOFTKEY_BTN_W)/MAIN_W (BTN_5_ROW_Y+SOFTKEY_BTN_H)/KEYPAD_H; to:"keypad/bg";}
+ image {
+ normal: IMAGE_PATH"C01-3_button_01.png";
+ border: 52 52 52 52;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image.normal: IMAGE_PATH"C01-3_dialer_button_01_press.png";
+ }
+ description {
+ state: "expand_R" 0.0;
+ rel1 { relative: (SOFTKEY_BTN2_X-SOFTKEY_BTN_OFFSET)/MAIN_W BTN_5_ROW_Y/KEYPAD_H; to:"keypad/bg";}
+ rel2 { relative: (SOFTKEY_BTN2_X+SOFTKEY_BTN_W)/MAIN_W (BTN_5_ROW_Y+SOFTKEY_BTN_H)/KEYPAD_H; to:"keypad/bg";}
+ image {
+ normal: IMAGE_PATH"C01-3_button_01.png";
+ border: 52 52 52 52;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "expand_R_pressed" 0.0;
+ inherit: "expand_R" 0.0;
+ image.normal: IMAGE_PATH"C01-3_dialer_button_01_press.png";
+ }
+ description {
+ state: "expand_L" 0.0;
+ rel1 { relative: (SOFTKEY_BTN2_X-SOFTKEY_BTN_OFFSET)/MAIN_W BTN_5_ROW_Y/KEYPAD_H; to:"keypad/bg";}
+ rel2 { relative: (SOFTKEY_BTN2_X+SOFTKEY_BTN_W)/MAIN_W (BTN_5_ROW_Y+SOFTKEY_BTN_H)/KEYPAD_H; to:"keypad/bg";}
+ image {
+ normal: IMAGE_PATH"C01-3_button_01.png";
+ border: 52 52 52 52;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "expand_L_pressed" 0.0;
+ inherit: "expand_L" 0.0;
+ image.normal: IMAGE_PATH"C01-3_dialer_button_01_press.png";
+ }
+ }
+ part {
+ name: "normal/call_icon";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: SOFTKEY_ICON_W SOFTKEY_ICON_H;
+ fixed: 1 1;
+ rel1 { relative: 0.5 0.5; to: "normal/call";}
+ rel2 { relative: 0.5 0.5; to: "normal/call";}
+ align: 0.5 0.5;
+ image.normal: IMAGE_PATH"C01-3_icon_call.png";
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image.normal: IMAGE_PATH"C01-3_icon_call_press.png";
+ }
+ }
+/********************/
+/**** MESSAGE btn ****/
+/********************/
+ part {
+ name: "normal/message";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: (INDICATOR_H)/MAIN_W BTN_5_ROW_Y/KEYPAD_H; to:"keypad/bg";}
+ rel2 { relative: (SOFTKEY_BTN2_W-SOFTKEY_BTN_OFFSET-SOFTKEY_BTN_OFFSET)/MAIN_W (BTN_5_ROW_Y+SOFTKEY_BTN_H)/KEYPAD_H; to:"keypad/bg";}
+ image {
+ normal: IMAGE_PATH"C01-3_button_02.png";
+ border: 52 52 52 52;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image.normal: IMAGE_PATH"C01-3_dialer_button_01_press.png";
+ }
+ description {
+ state: "hide" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "normal/message_icon";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: SOFTKEY_ICON_W SOFTKEY_ICON_H;
+ fixed: 1 1;
+ rel1 { relative: 0.5 0.5; to: "normal/message";}
+ rel2 { relative: 0.5 0.5; to: "normal/message";}
+ align: 0.5 0.5;
+ image.normal: IMAGE_PATH"C01-3_icon_message.png";
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image.normal: IMAGE_PATH"C01-3_icon_message_press.png";
+ }
+ description {
+ state: "hide" 0.0;
+ visible: 0;
+ }
+ }
+/********************/
+/**** EMERGENCY btn ****/
+/********************/
+ part {
+ name: "normal/emergency";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: (INDICATOR_H)/MAIN_W BTN_5_ROW_Y/KEYPAD_H; to:"keypad/bg";}
+ rel2 { relative: (SOFTKEY_BTN2_W-SOFTKEY_BTN_OFFSET-SOFTKEY_BTN_OFFSET)/MAIN_W (BTN_5_ROW_Y+SOFTKEY_BTN_H)/KEYPAD_H; to:"keypad/bg";}
+ image {
+ normal: IMAGE_PATH"C01-3_button_02.png";
+ border: 52 52 52 52;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image.normal: IMAGE_PATH"C01-3_dialer_button_01_press.png";
+ }
+ description {
+ state: "hide" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "normal/emergency_icon";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: SOFTKEY_ICON_W SOFTKEY_ICON_H;
+ fixed: 1 1;
+ rel1 { relative: 0.5 0.5; to: "normal/emergency";}
+ rel2 { relative: 0.5 0.5; to: "normal/emergency";}
+ align: 0.5 0.5;
+ image.normal: IMAGE_PATH"C01-3_icon_message.png";
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image.normal: IMAGE_PATH"C01-3_icon_message_press.png";
+ }
+ description {
+ state: "hide" 0.0;
+ visible: 0;
+ }
+ }
+/*******************/
+/**** BackSpace btn ****/
+/*******************/
+ part {
+ name: "normal/backspace";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: SOFTKEY_BTN3_X/MAIN_W BTN_5_ROW_Y/KEYPAD_H; to:"keypad/bg";}
+ rel2 { relative: (SOFTKEY_BTN3_X+SOFTKEY_BTN_W)/MAIN_W (BTN_5_ROW_Y+SOFTKEY_BTN_H)/KEYPAD_H; to:"keypad/bg";}
+ image {
+ normal: IMAGE_PATH"C01-3_button_02.png";
+ border: 52 52 52 52;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image.normal: IMAGE_PATH"C01-3_dialer_button_01_press.png";
+ }
+ description {
+ state: "hide" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "normal/backspace_icon";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: SOFTKEY_ICON_W 40;
+ fixed: 1 1;
+ rel1 { relative: 0.5 0.5; to: "normal/backspace";}
+ rel2 { relative: 0.5 0.5; to: "normal/backspace";}
+ align: 0.5 0.5;
+ image.normal: IMAGE_PATH"C01-3_icon_delete.png";
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image.normal: IMAGE_PATH"C01-3_icon_delete.png";
+ }
+ description {
+ state: "hide" 0.0;
+ visible: 0;
+ }
+ }
+/*****************************************************************************
+* Number Keypad button
+*****************************************************************************/
+#define PART_KEYPAD_TWO_ICON(_TXT, _X_POS, _Y_POS, _TOP_ICON, _BOTTOM_ICON) \
+ part { \
+ name: _TXT; \
+ type: RECT; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ rel1 { relative: _X_POS/MAIN_W _Y_POS/KEYPAD_H; to:"keypad/bg";} \
+ rel2 { relative: (_X_POS+BUTTON_W)/MAIN_W (_Y_POS+BUTTON_H)/KEYPAD_H; to:"keypad/bg"; } \
+ fixed: 1 1; \
+ align: 0.5 0.5; \
+ color: 255 0 0 0; \
+ visible: 1; \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ } \
+ } \
+ part { \
+ name: _TXT"_TOP"; \
+ type: IMAGE; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ min: 218 90; \
+ fixed: 1 1; \
+ rel1 { relative: 0.0 0.0; to: _TXT;} \
+ rel2 { relative: 1.0 90/BUTTON_H; to: _TXT;} \
+ align: 0.5 0.5; \
+ image.normal: _TOP_ICON; \
+ } \
+ description { \
+ state: "pressed" 0.0; \
+ inherit: "default" 0.0; \
+ image.normal: _TOP_ICON; \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ visible: 0; \
+ } \
+ } \
+ part { \
+ name: _TXT"_BOTTOM"; \
+ type: IMAGE; \
+ scale: 0; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ min: 50 40; \
+ fixed: 1 1; \
+ rel1 { relative: 0.5 90/BUTTON_H; to: _TXT;} \
+ rel2 { relative: 0.5 1.0; to: _TXT;} \
+ align: 0.5 0.5; \
+ image.normal: _BOTTOM_ICON; \
+ } \
+ description { \
+ state: "pressed" 0.0; \
+ inherit: "default" 0.0; \
+ image.normal: _BOTTOM_ICON; \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ visible: 0; \
+ } \
+ } \
+ part { \
+ name: _TXT"_BG"; \
+ type: IMAGE; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ min: BUTTON_W BUTTON_H_PRESSED; \
+ fixed: 1 1; \
+ align: 0.5 0.5; \
+ rel1 { relative: 0.5 0.5; to:_TXT;} \
+ rel2 { relative: 0.5 0.5; to:_TXT;} \
+ image { \
+ normal: IMAGE_PATH"C01-3_keypad_press.png"; \
+ } \
+ visible: 0; \
+ } \
+ description { \
+ state: "pressed" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ visible: 0; \
+ } \
+ }
+
+#define PART_KEYPAD_ONE_ICON_ONE_LABEL(_TXT, _X_POS, _Y_POS, _TOP_ICON, _BOTTOM_TEXT) \
+ part { \
+ name: _TXT; \
+ type: RECT; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ fixed: 1 1; \
+ rel1 { relative: _X_POS/MAIN_W _Y_POS/KEYPAD_H; to:"keypad/bg";} \
+ rel2 { relative: (_X_POS+BUTTON_W)/MAIN_W (_Y_POS+BUTTON_H)/KEYPAD_H; to:"keypad/bg"; } \
+ align: 0.5 0.5; \
+ color: 0 255 0 0; \
+ visible: 1; \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ } \
+ } \
+ part { \
+ name: _TXT"_TOP"; \
+ type: IMAGE; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ min: 218 90; \
+ fixed: 1 1; \
+ rel1 { relative: 0.0 0.0; to: _TXT;} \
+ rel2 { relative: 1.0 90/BUTTON_H; to: _TXT;} \
+ align: 0.5 0.5; \
+ image.normal: _TOP_ICON; \
+ } \
+ description { \
+ state: "pressed" 0.0; \
+ inherit: "default" 0.0; \
+ image.normal: _TOP_ICON; \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ visible: 0; \
+ } \
+ } \
+ part { \
+ name: _TXT"_BOTTOM"; \
+ type: TEXT; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ fixed: 1 1; \
+ rel1 { relative: 0.0 90/BUTTON_H; to: _TXT;} \
+ rel2 { relative: 1.0 1.0; to: _TXT;} \
+ align: 0.5 0.5; \
+ color: 145 135 114 255; \
+ text { \
+ text: _BOTTOM_TEXT; \
+ font: "Tizen:style=Regular"; \
+ text_class: "tizen"; \
+ size: 28; \
+ min: 1 1; \
+ fit: 1 1; \
+ } \
+ visible: 1; \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ } \
+ } \
+ part { \
+ name: _TXT"_BG"; \
+ type: IMAGE; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ min: BUTTON_W BUTTON_H_PRESSED; \
+ fixed: 1 1; \
+ align: 0.5 0.5; \
+ rel1 { relative: 0.5 0.5; to:_TXT;} \
+ rel2 { relative: 0.5 0.5; to:_TXT;} \
+ image { \
+ normal: IMAGE_PATH"C01-3_keypad_press.png"; \
+ } \
+ visible: 0; \
+ } \
+ description { \
+ state: "pressed" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ visible: 0; \
+ } \
+ }
+
+ PART_KEYPAD_TWO_ICON("1",BTN_1_COL_X, BTN_1_ROW_Y, IMAGE_PATH"keypad/C01-3_keypad_number_01.png", IMAGE_PATH"keypad/C01-3_keypad_number_auto_answer.png")
+ PART_KEYPAD_ONE_ICON_ONE_LABEL("2",BTN_2_COL_X, BTN_1_ROW_Y, IMAGE_PATH"keypad/C01-3_keypad_number_02.png", "ABC")
+ PART_KEYPAD_ONE_ICON_ONE_LABEL("3",BTN_3_COL_X, BTN_1_ROW_Y, IMAGE_PATH"keypad/C01-3_keypad_number_03.png", "DEF")
+
+ PART_KEYPAD_ONE_ICON_ONE_LABEL("4",BTN_1_COL_X, BTN_2_ROW_Y, IMAGE_PATH"keypad/C01-3_keypad_number_04.png", "GHI")
+ PART_KEYPAD_ONE_ICON_ONE_LABEL("5",BTN_2_COL_X, BTN_2_ROW_Y, IMAGE_PATH"keypad/C01-3_keypad_number_05.png", "JKL")
+ PART_KEYPAD_ONE_ICON_ONE_LABEL("6",BTN_3_COL_X, BTN_2_ROW_Y, IMAGE_PATH"keypad/C01-3_keypad_number_06.png", "MNO")
+
+ PART_KEYPAD_ONE_ICON_ONE_LABEL("7",BTN_1_COL_X, BTN_3_ROW_Y, IMAGE_PATH"keypad/C01-3_keypad_number_07.png", "PQRS")
+ PART_KEYPAD_ONE_ICON_ONE_LABEL("8",BTN_2_COL_X, BTN_3_ROW_Y, IMAGE_PATH"keypad/C01-3_keypad_number_08.png", "TUV")
+ PART_KEYPAD_ONE_ICON_ONE_LABEL("9",BTN_3_COL_X, BTN_3_ROW_Y, IMAGE_PATH"keypad/C01-3_keypad_number_09.png", "WXYZ")
+
+ PART_KEYPAD_ONE_ICON_ONE_LABEL("star", BTN_1_COL_X, BTN_4_ROW_Y, IMAGE_PATH"keypad/C01-3_keypad_number_asterisk.png", "P")
+ PART_KEYPAD_ONE_ICON_ONE_LABEL("0", BTN_2_COL_X, BTN_4_ROW_Y, IMAGE_PATH"keypad/C01-3_keypad_number_00.png", "+")
+ PART_KEYPAD_TWO_ICON("sharp",BTN_3_COL_X, BTN_4_ROW_Y, IMAGE_PATH"keypad/C01-3_keypad_number_sharp.png", IMAGE_PATH"keypad/C01-3_keypad_number_mute.png")
+
+
+/*****************************************************************************
+* "Contact Search" input field
+*****************************************************************************/
+ part {
+ name: "search/bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "entry/bg";}
+ rel2 { relative: 1.0 TEXT_ENTRY_H/TEXT_AREA_H; to: "entry/bg";}
+ align: 0.5 1.0;
+ color: 255 0 0 0;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "search/inputarea/image";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 66;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.5; offset: 26+74+10 0; to: "search/bg"; }
+ rel2 { relative: 1.0 0.5; offset: -26 0; to: "search/bg"; }
+ image{
+ border: 8 8 33 33;
+ border_scale: 1;
+ normal: IMAGE_PATH"C01-3_search_field.png";
+ }
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+/* part {
+ name: "search/inputarea";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "search/inputarea/image"; }
+ rel2 { relative: 1.0 1.0; to: "search/inputarea/image"; }
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+*/
+ part {
+ name: "search/icon";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 74 74;
+ fixed: 1 1;
+ rel1 { relative: 26/MAIN_W 0.5; to: "search/bg";}
+ rel2 { relative: (26+74)/MAIN_W 0.5; to: "search/bg";}
+ image.normal: IMAGE_PATH"C01-3_search_icon.png";
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "search/defaulttext";
+ type: TEXT;
+ scale: 1;
+ effect: SHADOW;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; offset: 16 0; to: "search/inputarea/image";}
+ rel2 { relative: 1.0 1.0; offset: -16 0; to: "search/inputarea/image";}
+ fixed: 1 1;
+ align: 0.0 0.5;
+ color: 156 159 162 153;
+ text {
+ text: "Contact Search";
+ font: "Tizen:style=Regular";
+ text_class: "tizen";
+ size: 36;
+ min: 1 1;
+ fit: 1 1;
+ align: 0.0 0.5;
+ }
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+
+/*****************************************************************************
+* Entry area
+*****************************************************************************/
+ part {
+ name: "textblock/bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "entry/bg";}
+ rel2 { relative: 1.0 TEXT_ENTRY_H/TEXT_AREA_H; to: "entry/bg";}
+ align: 0.5 1.0;
+ color: 0 255 0 0;
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "textblock/bg/image";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "textblock/bg";}
+ rel2 { relative: 1.0 1.0; to: "textblock/bg";}
+ image.normal: IMAGE_PATH"C01-3_search_bg_02.png";
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "textblock/textarea";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.5; offset: 26 0; to: "textblock/bg"; }
+ rel2 { relative: 1.0 0.5; offset: -26 0; to: "textblock/bg"; }
+ color: 0 0 255 100;
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+/*****************************************************************************
+* Suggestion box
+*****************************************************************************/
+ part {
+ name: "suggestion";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.05 TEXT_ENTRY_H/TEXT_AREA_H; to: "entry/bg";}
+ rel2 { relative: 0.95 0.9; to: "entry/bg";}
+ color: SUGGESTION_PART_NORMAL_BG_COLOR;
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "show" 0.0;
+ color: SUGGESTION_PART_PRESSED_BG_COLOR;
+ }
+ }
+ part {
+ name: "suggestionListTopItem";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.05 TEXT_ENTRY_H/TEXT_AREA_H; to: "entry/bg";}
+ rel2 { relative: 0.95 0.9; to: "entry/bg";}
+ color: SUGGESTION_PART_NORMAL_BG_COLOR;
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "show" 0.0;
+ color: SUGGESTION_PART_PRESSED_BG_COLOR;
+ }
+ }
+ part {
+ name: "icon";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 12 12;
+ to: "suggestion";
+ }
+ rel2 {
+ relative: 0.2 1.0;
+ offset: -12 -12;
+ to: "suggestion";
+ }
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "textName";
+ type: TEXT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: SUGGESTION_PART_PRIMARY_COLOR;
+ rel1 {
+ relative: 1.0 0.1;
+ offset: 18 2;
+ to_x: "icon";
+ to_y: "suggestion";
+ }
+ rel2 {
+ relative: 1.0 0.5;
+ offset: -2 -2;
+ to: "suggestion";
+ }
+ text {
+ font: "Tizen:style=Bold";
+ text_class: "tizen";
+ size: 25;
+ align: 0.0 0.5;
+ }
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "textNumber";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: SUGGESTION_PART_SECONDARY_COLOR;
+ align: 0 0;
+ rel1 {
+ relative: 1.0 0.5;
+ offset: 18 0;
+ to_x: "icon";
+ to_y: "suggestion";
+ }
+ rel2 {
+ relative: 1.0 0.9;
+ offset: -2 -2;
+ to: "suggestion";
+ }
+ text {
+ style: "chapter_text_style";
+ font: "Tizen:style=Bold";
+ text_class: "tizen";
+ size: 21;
+ align: 0.0 0.5;
+ }
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "delimeter";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.8 0.0;
+ offset: 0 0;
+ to: "suggestion";
+ }
+ rel2 {
+ relative: 0.8 1.0;
+ offset: 2 -1;
+ to: "suggestion";
+ }
+ image.normal: IMAGE_PATH"C01-3_title_divider.png";
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "suggestionListButton";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.8 0.0;
+ offset: 2 0;
+ to: "suggestion";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "suggestion";
+ }
+ color: SUGGESTION_PART_NORMAL_BG_COLOR;
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "show" 0.0;
+ color: SUGGESTION_PART_PRESSED_BG_COLOR;
+ }
+ }
+ part {
+ name: "textNumberOfMatches";
+ type: TEXT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: SUGGESTION_PART_PRIMARY_COLOR;
+ rel1 {
+ relative: 0.8 0.1;
+ to: "suggestion";
+ }
+ rel2 {
+ relative: 1.0 0.6;
+ to: "suggestion";
+ }
+ text {
+ font: "Tizen:style=Bold";
+ text_class: "tizen";
+ size: 28;
+ min: 1 1;
+ fit: 1 1;
+ align: 0.5 1.0;
+ }
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "arrow";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.88 0.6;
+ offset: 0 5;
+ to: "suggestion";
+ }
+ rel2 {
+ relative: 0.92 0.75;
+ to: "suggestion";
+ }
+ image.normal: IMAGE_PATH"C01-3_icon_expand_01.png";
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: "textAddToContacts";
+ type: TEXT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: SUGGESTION_PART_SECONDARY_COLOR;
+ align: 0 0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "suggestion";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "suggestion";
+ }
+ text {
+ font: "Tizen:style=Bold";
+ text_class: "tizen";
+ size: 28;
+ align: 0.5 0.5;
+ }
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ /*****************************************************************************
+ * Programs
+ *****************************************************************************/
+ programs {
+ program {
+ name: "click_exit";
+ source: "background";
+ signal: "mouse,clicked,1";
+ action: SIGNAL_EMIT "EXIT" "EDJ";
+ }
+ program {
+ name: "prog/viewobject/entry/hide";
+ source: "viewobject/entry";
+ signal: "viewobject/entry/hide";
+ script {
+ set_state (PART:"textblock/bg", "default", 0.0);
+ set_state (PART:"textblock/bg/image", "default", 0.0);
+ set_state (PART:"textblock/textarea", "default", 0.0);
+ set_state (PART:"search/bg", "default", 0.0);
+ set_state (PART:"search/inputarea/image", "default", 0.0);
+// set_state (PART:"search/inputarea", "default", 0.0);
+ set_state (PART:"search/icon", "default", 0.0);
+ set_state (PART:"search/defaulttext", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "prog/viewobject/entry/show";
+ source: "viewobject/entry";
+ signal: "viewobject/entry/show";
+ script {
+ set_state (PART:"search/bg", "hide", 0.0);
+ set_state (PART:"search/inputarea/image", "hide", 0.0);
+// set_state (PART:"search/inputarea", "hide", 0.0);
+ set_state (PART:"search/icon", "hide", 0.0);
+ set_state (PART:"search/defaulttext", "hide", 0.0);
+ set_state (PART:"textblock/bg", "show", 0.0);
+ set_state (PART:"textblock/bg/image", "show", 0.0);
+ set_state (PART:"textblock/textarea", "show", 0.0);
+ }
+ }
+
+ // suggestion box ////////////////////////////////////////////////
+ program {
+ name: "prog/suggestion/hide";
+ source: "suggestion";
+ signal: "suggestion/hide";
+ script {
+ set_state (PART:"suggestion", "default", 0.0);
+ set_state (PART:"suggestionListTopItem", "default", 0.0);
+ set_state (PART:"icon", "default", 0.0);
+ set_state (PART:"textName", "default", 0.0);
+ set_state (PART:"textNumber", "default", 0.0);
+ set_state (PART:"delimeter", "default", 0.0);
+ set_state (PART:"suggestionListButton", "default", 0.0);
+ set_state (PART:"textNumberOfMatches", "default", 0.0);
+ set_state (PART:"arrow", "default", 0.0);
+ set_state (PART:"textAddToContacts", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "prog/suggestion/showSingleItemView";
+ source: "suggestion";
+ signal: "suggestion/showSingleItemView";
+ script {
+ set_state (PART:"suggestion", "default", 0.0);
+ set_state (PART:"suggestionListTopItem", "show", 0.0);
+ set_state (PART:"icon", "show", 0.0);
+ set_state (PART:"textName", "show", 0.0);
+ set_state (PART:"textNumber", "show", 0.0);
+ set_state (PART:"delimeter", "default", 0.0);
+ set_state (PART:"suggestionListButton", "default", 0.0);
+ set_state (PART:"textNumberOfMatches", "default", 0.0);
+ set_state (PART:"arrow", "default", 0.0);
+ set_state (PART:"textAddToContacts", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "prog/suggestion/showMultiItemView";
+ source: "suggestion";
+ signal: "suggestion/showMultiItemView";
+ script {
+ set_state (PART:"suggestion", "default", 0.0);
+ set_state (PART:"suggestionListTopItem", "show", 0.0);
+ set_state (PART:"icon", "show", 0.0);
+ set_state (PART:"textName", "show", 0.0);
+ set_state (PART:"textNumber", "show", 0.0);
+ set_state (PART:"delimeter", "show", 0.0);
+ set_state (PART:"suggestionListButton", "show", 0.0);
+ set_state (PART:"textNumberOfMatches", "show", 0.0);
+ set_state (PART:"arrow", "show", 0.0);
+ set_state (PART:"textAddToContacts", "default", 0.0);
+ }
+ }
+
+ program {
+ name: "prog/suggestion/showAddToContacts";
+ source: "suggestion";
+ signal: "suggestion/showAddToContacts";
+ script {
+ set_state (PART:"suggestion", "show", 0.0);
+ set_state (PART:"suggestionListTopItem", "default", 0.0);
+ set_state (PART:"icon", "default", 0.0);
+ set_state (PART:"textName", "default", 0.0);
+ set_state (PART:"textNumber", "default", 0.0);
+ set_state (PART:"delimeter", "default", 0.0);
+ set_state (PART:"suggestionListButton", "default", 0.0);
+ set_state (PART:"textNumberOfMatches", "default", 0.0);
+ set_state (PART:"arrow", "default", 0.0);
+ set_state (PART:"arrow", "default", 0.0);
+ set_state (PART:"textAddToContacts", "show", 0.0);
+ }
+ }
+
+ program {
+ name: "down_suggestion";
+ signal: "mouse,down,*";
+ source: "suggestion";
+ script {
+ set_state(PART:"suggestion", "pressed", 0.0);
+ emit("softkey_down", "suggestion");
+ }
+ }
+ program {
+ name: "up_suggestion";
+ signal: "mouse,up,1";
+ source: "suggestion";
+ script {
+ set_state(PART:"suggestion", "show", 0.0);
+ emit("softkey_up", "suggestion");
+ }
+ }
+
+ program {
+ name: "clicked_suggestion";
+ signal: "mouse,clicked,1";
+ source: "suggestion";
+ script {
+ emit("softkey_clicked", "suggestion");
+ }
+ }
+
+ program {
+ name: "down_suggestionListTopItem";
+ signal: "mouse,down,*";
+ source: "suggestionListTopItem";
+ script {
+ set_state(PART:"suggestionListTopItem", "pressed", 0.0);
+ emit("softkey_down", "suggestionListTopItem");
+ }
+ }
+ program {
+ name: "up_suggestionListTopItem";
+ signal: "mouse,up,1";
+ source: "suggestionListTopItem";
+ script {
+ set_state(PART:"suggestionListTopItem", "show", 0.0);
+ emit("softkey_up", "suggestionListTopItem");
+ }
+ }
+
+ program {
+ name: "clicked_suggestionListTopItem";
+ signal: "mouse,clicked,1";
+ source: "suggestionListTopItem";
+ script {
+ emit("softkey_clicked", "suggestionListTopItem");
+ }
+ }
+
+ program {
+ name: "down_suggestionListButton";
+ signal: "mouse,down,*";
+ source: "suggestionListButton";
+ script {
+ set_state(PART:"suggestionListButton", "pressed", 0.0);
+ emit("softkey_down", "suggestionListButton");
+ }
+ }
+ program {
+ name: "up_suggestionListButton";
+ signal: "mouse,up,1";
+ source: "suggestionListButton";
+ script {
+ set_state(PART:"suggestionListButton", "show", 0.0);
+ emit("softkey_up", "suggestionListButton");
+ }
+ }
+
+ program {
+ name: "clicked_suggestionListButton";
+ signal: "mouse,clicked,1";
+ source: "suggestionListButton";
+ script {
+ emit("softkey_clicked", "suggestionListButton");
+ }
+ }
+
+ /*****************************************************************************
+ * Program: Keypad button
+ *****************************************************************************/
+#define PROG_KEYPAD(txt) \
+ program { \
+ name: "down_"txt; \
+ signal: "mouse,down,*"; \
+ source: txt; \
+ script { \
+ set_state(PART:txt"_BG", "pressed", 0.0); \
+ emit("pad_down", txt); \
+ } \
+ } \
+ program { \
+ name: "ani_"txt; \
+ signal: "ani"; \
+ source: txt; \
+ action: STATE_SET "default" 0.0; \
+ transition: SINUSOIDAL KEYPAD_ANI_TIME; \
+ target: txt; \
+ } \
+ program { \
+ name: "up_"txt; \
+ signal: "mouse,up,1"; \
+ source: txt; \
+ script { \
+ emit("pad_up", txt); \
+ emit("ani", txt); \
+ set_state(PART:txt"_BG", "default", 0.0); \
+ } \
+ } \
+ program { \
+ name: "clicked_"txt; \
+ signal: "mouse,clicked,1"; \
+ source: txt; \
+ script { \
+ emit("pad_clicked", txt); \
+ } \
+ } \
+ program { \
+ name: "hide_"txt; \
+ signal: "hide_"txt; \
+ source: txt; \
+ script { \
+ set_state(PART:txt"_TOP", "hide", 0.0); \
+ set_state(PART:txt"_BOTTOM", "hide", 0.0); \
+ set_state(PART:txt, "hide", 0.0); \
+ } \
+ } \
+ program { \
+ name: "show_"txt; \
+ signal: "show_"txt; \
+ source: txt; \
+ script { \
+ set_state(PART:txt"_TOP", "default", 0.0); \
+ set_state(PART:txt"_BOTTOM", "default", 0.0); \
+ set_state(PART:txt, "default", 0.0); \
+ } \
+ }
+
+#define PROG_KEYPAD_BOTTOM_EFFECT(txt) \
+ program { \
+ name: "down_"txt; \
+ signal: "mouse,down,*"; \
+ source: txt; \
+ script { \
+ set_state(PART:txt, "pressed", 0.0); \
+ set_state(PART:txt"_BOTTOM", "pressed", 0.0); \
+ emit("pad_down", txt); \
+ } \
+ } \
+ program { \
+ name: "ani_"txt; \
+ signal: "ani"; \
+ source: txt; \
+ action: STATE_SET "default" 0.0; \
+ transition: SINUSOIDAL KEYPAD_ANI_TIME; \
+ target: txt; \
+ } \
+ program { \
+ name: "up_"txt; \
+ signal: "mouse,up,1"; \
+ source: txt; \
+ script { \
+ emit("pad_up", txt); \
+ emit("ani", txt); \
+ set_state(PART:txt"_BOTTOM", "default", 0.0); \
+ } \
+ } \
+ program { \
+ name: "clicked_"txt; \
+ signal: "mouse,clicked,1"; \
+ source: txt; \
+ script { \
+ emit("pad_clicked", txt); \
+ } \
+ } \
+ program { \
+ name: "hide_"txt; \
+ signal: "hide_"txt; \
+ source: txt; \
+ script { \
+ set_state(PART:txt"_TOP", "hide", 0.0); \
+ set_state(PART:txt"_BOTTOM", "hide", 0.0); \
+ set_state(PART:txt, "hide", 0.0); \
+ } \
+ } \
+ program { \
+ name: "show_"txt; \
+ signal: "show_"txt; \
+ source: txt; \
+ script { \
+ set_state(PART:txt"_TOP", "default", 0.0); \
+ set_state(PART:txt"_BOTTOM", "default", 0.0); \
+ set_state(PART:txt, "default", 0.0); \
+ } \
+ }
+
+#define PROG_KEYPAD_TOP_EFFECT(txt) \
+ program { \
+ name: "down_"txt; \
+ signal: "mouse,down,*"; \
+ source: txt; \
+ script { \
+ set_state(PART:txt, "pressed", 0.0); \
+ set_state(PART:txt"_TOP", "pressed", 0.0); \
+ set_state(PART:txt"_BOTTOM", "pressed", 0.0); \
+ emit("pad_down", txt); \
+ } \
+ } \
+ program { \
+ name: "ani_"txt; \
+ signal: "ani"; \
+ source: txt; \
+ action: STATE_SET "default" 0.0; \
+ transition: SINUSOIDAL KEYPAD_ANI_TIME; \
+ target: txt; \
+ } \
+ program { \
+ name: "up_"txt; \
+ signal: "mouse,up,1"; \
+ source: txt; \
+ script { \
+ emit("pad_up", txt); \
+ emit("ani", txt); \
+ set_state(PART:txt"_TOP", "default", 0.0); \
+ set_state(PART:txt"_BOTTOM", "default", 0.0); \
+ } \
+ } \
+ program { \
+ name: "clicked_"txt; \
+ signal: "mouse,clicked,1"; \
+ source: txt; \
+ script { \
+ emit("pad_clicked", txt); \
+ } \
+ } \
+ program { \
+ name: "hide_"txt; \
+ signal: "hide_"txt; \
+ source: txt; \
+ script { \
+ set_state(PART:txt"_TOP", "hide", 0.0); \
+ set_state(PART:txt"_BOTTOM", "hide", 0.0); \
+ set_state(PART:txt, "hide", 0.0); \
+ } \
+ } \
+ program { \
+ name: "show_"txt; \
+ signal: "show_"txt; \
+ source: txt; \
+ script { \
+ set_state(PART:txt"_TOP", "default", 0.0); \
+ set_state(PART:txt"_BOTTOM", "default", 0.0); \
+ set_state(PART:txt, "default", 0.0); \
+ } \
+ }
+
+ PROG_KEYPAD("1")
+ PROG_KEYPAD("2")
+ PROG_KEYPAD("3")
+ PROG_KEYPAD("4")
+ PROG_KEYPAD("5")
+ PROG_KEYPAD("6")
+ PROG_KEYPAD("7")
+ PROG_KEYPAD("8")
+ PROG_KEYPAD("9")
+ PROG_KEYPAD("star")
+ PROG_KEYPAD("0")
+ PROG_KEYPAD("sharp")
+
+ /*****************************************************************************
+ * Program: Softkey button
+ *****************************************************************************/
+ // call //////////////////////////////////////////////////////////////////////////
+ program {
+ name: "down_normal/call";
+ signal: "mouse,down,*";
+ source: "normal/call";
+ script {
+ new st[30];
+ new Float:vl;
+ get_state (PART:"normal/call", st, 30, vl);
+ if (strcmp(st, "default") == 0) {
+ set_state(PART:"normal/call", "pressed", 0.0);
+ emit("softkey_down", "normal/call");
+ }
+ else if (strcmp(st, "expand_R") == 0) {
+ set_state(PART:"normal/call", "expand_R_pressed", 0.0);
+ emit("softkey_down", "normal/call");
+ }
+ else if (strcmp(st, "expand_L") == 0) {
+ set_state(PART:"normal/call", "expand_L_pressed", 0.0);
+ emit("softkey_down", "normal/call");
+ }
+ set_state(PART:"normal/call_icon", "pressed", 0.0);
+ }
+ }
+ program {
+ name: "up_normal/call";
+ signal: "mouse,up,1";
+ source: "normal/call";
+ script {
+ new st[30];
+ new Float:vl;
+ get_state (PART:"normal/call", st, 30, vl);
+ if (strcmp(st, "pressed") == 0) {
+ set_state(PART:"normal/call", "default", 0.0);
+ emit("softkey_up", "normal/call");
+ }
+ else if (strcmp(st, "expand_R_pressed") == 0) {
+ set_state(PART:"normal/call", "expand_R", 0.0);
+ emit("softkey_up", "normal/call");
+ }
+ else if (strcmp(st, "expand_L_pressed") == 0) {
+ set_state(PART:"normal/call", "expand_L", 0.0);
+ emit("softkey_up", "normal/call");
+ }
+ set_state(PART:"normal/call_icon", "default", 0.0);
+ }
+ }
+ program {
+ name: "clicked_normal/call";
+ signal: "mouse,clicked,1";
+ source: "normal/call";
+ script {
+ emit ("viewobject/entry/show", "viewobject/entry");
+ emit("softkey_clicked", "normal/call");
+ }
+ }
+
+ // message //////////////////////////////////////////////////////////////////////////
+ program {
+ name: "down_normal/message";
+ signal: "mouse,down,*";
+ source: "normal/message";
+ script {
+ set_state(PART:"normal/message", "pressed", 0.0);
+ set_state(PART:"normal/message_icon", "pressed", 0.0);
+ emit("softkey_down", "normal/message");
+ }
+ }
+ program {
+ name: "up_normal/message";
+ signal: "mouse,up,1";
+ source: "normal/message";
+ script {
+ set_state(PART:"normal/message", "default", 0.0);
+ set_state(PART:"normal/message_icon", "default", 0.0);
+ emit("softkey_up", "normal/message");
+ }
+ }
+ program {
+ name: "clicked_normal/message";
+ signal: "mouse,clicked,1";
+ source: "normal/message";
+ script {
+ emit("softkey_clicked", "normal/message");
+ }
+ }
+ // emergency //////////////////////////////////////////////////////////////////////////
+ program {
+ name: "down_normal/emergency";
+ signal: "mouse,down,*";
+ source: "normal/emergency";
+ script {
+ set_state(PART:"normal/emergency", "pressed", 0.0);
+ set_state(PART:"normal/emergency_icon", "pressed", 0.0);
+ emit("softkey_down", "normal/emergency");
+ }
+ }
+ program {
+ name: "up_normal/emergency";
+ signal: "mouse,up,1";
+ source: "normal/emergency";
+ script {
+ set_state(PART:"normal/emergency", "default", 0.0);
+ set_state(PART:"normal/emergency_icon", "default", 0.0);
+ emit("softkey_up", "normal/emergency");
+ }
+ }
+ program {
+ name: "clicked_normal/emergency";
+ signal: "mouse,clicked,1";
+ source: "normal/emergency";
+ script {
+ emit("softkey_clicked", "normal/emergency");
+ }
+ }
+
+ // backspace //////////////////////////////////////////////////////////////////////////
+ program {
+ name: "down_normal/backspace";
+ signal: "mouse,down,*";
+ source: "normal/backspace";
+ script {
+ set_state(PART:"normal/backspace", "pressed", 0.0);
+ set_state(PART:"normal/backspace_icon", "pressed", 0.0);
+ emit("softkey_down", "normal/backspace");
+ }
+ }
+ program {
+ name: "up_normal/backspace";
+ signal: "mouse,up,1";
+ source: "normal/backspace";
+ script {
+ set_state(PART:"normal/backspace", "default", 0.0);
+ set_state(PART:"normal/backspace_icon", "default", 0.0);
+ emit("softkey_up", "normal/backspace");
+ }
+ }
+ program {
+ name: "clicked_normal/backspace";
+ signal: "mouse,clicked,1";
+ source: "normal/backspace";
+ script {
+ emit("softkey_clicked", "normal/backspace");
+ }
+ }
+
+
+
+ // PROG: contactsearch input field ////////////////////////////////////////////////////
+ program {
+ name: "clicked_contactsearch";
+ signal: "mouse,clicked,1";
+ source: "search/inputarea/image";
+ script {
+ emit("softkey_clicked", "search/inputarea/image");
+ }
+ }
+
+ /*****************************************************************************
+ * Program: Softkey - normal mode
+ *****************************************************************************/
+ program {
+ name: "prog_softkey_normal";
+ source: "softkey";
+ signal: "softkey/normal";
+ script {
+ set_state (PART:"normal/call", "expand_L", 0.0);
+ set_state (PART:"normal/call_icon", "default", 0.0);
+ set_state (PART:"normal/message", "default", 0.0);
+ set_state (PART:"normal/message_icon", "default", 0.0);
+ set_state (PART:"normal/backspace", "default", 0.0);
+ set_state (PART:"normal/backspace_icon", "default", 0.0);
+ }
+ }
+
+ /*****************************************************************************
+ * Program: Softkey - during call mode
+ *****************************************************************************/
+ program {
+ name: "prog_softkey_dc";
+ source: "softkey";
+ signal: "softkey/dc";
+ script {
+ set_state (PART:"normal/call", "default", 0.0);
+ set_state (PART:"normal/call_icon", "default", 0.0);
+ set_state (PART:"normal/message", "default", 0.0);
+ set_state (PART:"normal/message_icon", "default", 0.0);
+ set_state (PART:"normal/backspace", "default", 0.0);
+ set_state (PART:"normal/backspace_icon", "default", 0.0);
+ }
+ }
+
+ /*****************************************************************************
+ * Program: Softkey - emergency mode
+ *****************************************************************************/
+ program {
+ name: "prog_softkey_emergency";
+ source: "softkey";
+ signal: "softkey/emergency";
+ script {
+ set_state (PART:"normal/emergency", "hide", 0.0);
+ set_state (PART:"normal/emergency_icon", "hide", 0.0);
+ set_state (PART:"normal/call", "expand_R", 0.0);
+ set_state (PART:"normal/call_icon", "default", 0.0);
+ set_state (PART:"normal/message", "hide", 0.0);
+ set_state (PART:"normal/message_icon", "hide", 0.0);
+ }
+ }
+
+ /*****************************************************************************
+ * Program: Dialer default
+ *****************************************************************************/
+ program {
+ name: "prog/main";
+ source: "main";
+ signal: "main/default";
+ script {
+ emit ("viewcontrol/button", "viewcontrol");
+// emit ("viewobject/entry/hide", "viewobject/entry");
+ }
+ }
+ } // programs end
+ } // end of group
+}
diff --git a/lib/edc/dialer_btn.edc b/lib/edc/dialer_btn.edc
new file mode 100755
index 0000000..d3cf950
--- /dev/null
+++ b/lib/edc/dialer_btn.edc
@@ -0,0 +1,113 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+group {
+ name: "dialer/btn_style";
+ styles {
+ style {
+ name: "Expand_text";
+ base: "font=Tizen:style=Regular text_class=tizen font_size=38 color=#999999 align=center";
+ }
+ }
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "btn_style/number";
+ type: TEXTBLOCK;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "base"; }
+ rel2 { relative: 1.0 0.5; to: "base"; }
+ text {
+ style: "Expand_text";
+ align: 0.5 1.0;
+ }
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "btn_style/icon";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ min: 38 26;
+ fixed: 1 1;
+ rel1 { relative: 0.5 0.75; to: "base"; }
+ rel2 { relative: 0.5 0.75; to: "base"; }
+ image.normal : IMAGE_PATH"C01-3_icon_expand_01.png";
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ image.normal: IMAGE_PATH"C01-3_icon_expand_02.png";
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "prog/dialer/count_button/opened";
+ source: "count_button";
+ signal: "count_button/opened";
+ script {
+ set_state (PART:"btn_style/icon", "default", 0.0);
+ }
+ }
+ program {
+ name: "prog/dialer/count_button/closed";
+ source: "count_button";
+ signal: "count_button/closed";
+ script {
+ set_state (PART:"btn_style/icon", "pressed", 0.0);
+ }
+ }
+ program {
+ name: "prog/dialer/count_button/hide";
+ source: "count_button";
+ signal: "count_button/hide";
+ script {
+ set_state (PART:"btn_style/icon", "hide", 0.0);
+ }
+ }
+ }
+}
diff --git a/lib/edc/dialer_theme.edc b/lib/edc/dialer_theme.edc
new file mode 100755
index 0000000..ed25e17
--- /dev/null
+++ b/lib/edc/dialer_theme.edc
@@ -0,0 +1,387 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+#define MAIN_W (720)
+#define ITEM_H (140)
+#define DIALER_TEXTBLOCK_TEXT_SIZE_MAIN (44)
+#define DIALER_TEXTBLOCK_TEXT_SIZE_SUB (32)
+
+
+collections {
+ styles {
+ style {
+ name: "dialer_textblock_style_main";
+ base: "font=Tizen:style=Roman text_class=list_item font_size=44 align=left color=#000000 wrap=word ellipsis=1.0";
+ tag: "match" "+ color=#3b73b6";
+ }
+ style {
+ name: "dialer_textblock_style_main_selected";
+ base: "font=Tizen:style=Roman text_class=list_item font_size=44 align=left color=#F9F9F9FF wrap=word ellipsis=1.0";
+ tag: "match" "+ color=#F9F9F9FF";
+ }
+ style {
+ name: "dialer_textblock_style_sub";
+ base: "font=Tizen:style=Roman text_class=list_item font_size=32 align=left color=#999999 wrap=word ellipsis=1.0";
+ tag: "match" "+ color=#3b73b6";
+ }
+ style {
+ name: "dialer_textblock_style_sub_selected";
+ base: "font=Tizen:style=Roman text_class=list_item font_size=32 align=left color=#F9F9F9FF wrap=word ellipsis=1.0";
+ tag: "match" "+ color=#F9F9F9FF";
+ }
+ }
+
+#define COMMON_BASE_STYLE\
+ part { \
+ name: "base"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 ITEM_H; \
+ color: 31 31 31 255; \
+ rel1 { relative: 0.0 0.0; } \
+ rel2 { relative: 1.0 1.0; } \
+ } \
+ }
+
+#define COMMON_BG \
+ part { \
+ name: "bg"; \
+ clip_to: "disclip"; \
+ type: RECT; \
+ description { \
+ state: "default" 0.0; \
+ visible: 1; \
+ rel1 { relative: 0.0 0.0; } \
+ rel2 { relative: 1.0 1.0; } \
+ color: 255 255 255 255; \
+ } \
+ description { \
+ state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 1; \
+ rel1 { relative: 0.0 0.0; } \
+ rel2 { relative: 1.0 1.0; } \
+ color: 73 137 174 255; \
+ } \
+ }
+
+#define COMMON_BOTTOM_LINE \
+ part { \
+ name: "bottom_line"; \
+ type: RECT; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 1; \
+ fixed: 0 1; \
+ visible: 1; \
+ color: 81 81 81 255; \
+ rel1 { relative: 0.0 1.0; to: "base";} \
+ rel2 { relative: 1.0 1.0; to: "base";} \
+ align: 0.5 1.0; \
+ } \
+ }
+
+#define COMMON_DISCLIP \
+ part { \
+ name: "disclip"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ rel1 { to: "bg"; } \
+ rel2 { to: "bg"; } \
+ } \
+ description { \
+ state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: 255 255 255 64; \
+ } \
+ }
+
+#define COMMON_NAME_TEXTBLOCK\
+ part { \
+ name: "elm.text.left.name"; \
+ type: TEXTBLOCK; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ rel1 { relative: 0.0 0.0; offset: 26 22; to: "bg"; } \
+ rel2 { relative: 1.0 76/ITEM_H; offset: -26 0; to: "bg"; } \
+ fixed: 1 1; \
+ color: 255 255 255 255; \
+ text { min: 0 1; style: "dialer_textblock_style_main"; } \
+ } \
+ description { \
+ state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: 255 255 255 255; \
+ text.style: "dialer_textblock_style_main_selected"; \
+ } \
+ } \
+ part { \
+ name: "elm.text.left.number"; \
+ type: TEXT; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ rel1 { relative: 0.0 76/ITEM_H; offset: 26 0; to: "bg"; } \
+ rel2 { relative: 1.0 1.0; offset: -26 -22; to: "bg"; } \
+ color: 153 153 153 255; \
+ text { \
+ font: "SLP:style=Regular"; \
+ text_class: "slp"; \
+ size: DIALER_TEXTBLOCK_TEXT_SIZE_SUB; \
+ min: 0 1; \
+ align: 0.0 0.5; \
+ } \
+ } \
+ description { \
+ state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: 255 255 255 255; \
+ } \
+ }
+
+#define COMMON_NUM_TEXTBLOCK\
+ part { \
+ name: "elm.text.left.name"; \
+ type: TEXT; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ rel1 { relative: 0.0 0.0; offset: 26 22; to: "bg"; } \
+ rel2 { relative: 1.0 76/ITEM_H; offset: -26 0; to: "bg"; } \
+ fixed: 1 1; \
+ color: 0 0 0 255; \
+ text { \
+ font: "SLP:style=Regular"; \
+ text_class: "slp"; \
+ size: DIALER_TEXTBLOCK_TEXT_SIZE_MAIN; \
+ min: 0 1; \
+ align: 0.0 0.5; \
+ } \
+ } \
+ description { \
+ state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: 255 255 255 255; \
+ } \
+ } \
+ part { \
+ name: "elm.text.left.number"; \
+ type: TEXTBLOCK; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ rel1 { relative: 0.0 76/ITEM_H; offset: 26 0; to: "bg"; } \
+ rel2 { relative: 1.0 1.0; offset: -26 -22; to: "bg"; } \
+ color: 255 255 255 255; \
+ text { min: 0 1; style: "dialer_textblock_style_sub"; } \
+ } \
+ description { \
+ state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "dialer_textblock_style_sub_selected"; \
+ } \
+ }
+
+#define COMMON_CALLERID_ICON\
+ part { \
+ name: "elm.icon.1"; \
+ type: SWALLOW; \
+ clip_to: "disclip"; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 96 96; \
+ max: 96 96; \
+ fixed: 1 1; \
+ rel1 { \
+ relative: 1.0 0.0; offset: -16 16; \
+ to_x: "bg"; \
+ } \
+ rel2 { \
+ relative: 1.0 1.0; offset: -16 -16; \
+ to_x: "bg"; \
+ } \
+ align: 1.0 0.5; \
+ } \
+ }
+
+#define COMMON_NONAME_TEXTBLOCK\
+ part { \
+ name: "elm.text.left.number"; \
+ type: TEXTBLOCK; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ rel1 { relative: 0.0 0.25; offset: 26 0; to: "bg"; } \
+ rel2 { relative: 1.0 0.75; offset: -26 0; to: "bg"; } \
+ color: 255 255 255 255; \
+ text { min: 0 1; style: "dialer_textblock_style_main"; } \
+ } \
+ description { \
+ state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ text.style: "dialer_textblock_style_main_selected"; \
+ } \
+ }
+
+#define NAME_PROGRAM \
+ program { \
+ name: "name_selected"; \
+ signal: "elm,state,selected"; \
+ source: "elm"; \
+ action: STATE_SET "selected" 0.0; \
+ target: "elm.text.left.name"; \
+ } \
+ program { \
+ name: "name_unselected"; \
+ signal: "elm,state,unselected"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.left.name"; \
+ transition: LINEAR 0.1; \
+ }
+
+
+#define NUMBER_PROGRAM \
+ program { \
+ name: "number_selected"; \
+ signal: "elm,state,selected"; \
+ source: "elm"; \
+ action: STATE_SET "selected" 0.0; \
+ target: "elm.text.left.number"; \
+ } \
+ program { \
+ name: "number_unselected"; \
+ signal: "elm,state,unselected"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "elm.text.left.number"; \
+ transition: LINEAR 0.1; \
+ }
+
+#define COMMON_PROGRAM \
+ program { \
+ name: "go_active"; \
+ signal: "elm,state,selected"; \
+ source: "elm"; \
+ action: STATE_SET "selected" 0.0; \
+ target: "bg"; \
+ } \
+ program { \
+ name: "go_passive"; \
+ signal: "elm,state,unselected"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "bg"; \
+ transition: LINEAR 0.1; \
+ } \
+ program { \
+ name: "go_disabled"; \
+ signal: "elm,state,disabled"; \
+ source: "elm"; \
+ action: STATE_SET "disabled" 0.0; \
+ target: "disclip"; \
+ } \
+ program { \
+ name: "go_enabled"; \
+ signal: "elm,state,enabled"; \
+ source: "elm"; \
+ action: STATE_SET "default" 0.0; \
+ target: "disclip"; \
+ }
+
+
+ /* Genlist */
+ group {
+ name: "elm/genlist/item/number_textblock/default";
+ alias: "elm/genlist/item_odd/number_textblock/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.left.name elm.text.left.number";
+ data.item: "contents" "elm.icon.1";
+ data.item: "treesize" "20";
+ parts {
+ COMMON_BASE_STYLE
+ COMMON_BG
+ COMMON_NUM_TEXTBLOCK
+// COMMON_CALLERID_ICON
+ COMMON_DISCLIP
+ COMMON_BOTTOM_LINE
+ }
+ programs {
+ COMMON_PROGRAM
+ NAME_PROGRAM
+ NUMBER_PROGRAM
+ }
+ }
+
+ /* Genlist */
+ group {
+ name: "elm/genlist/item/name_textblock/default";
+ alias: "elm/genlist/item_odd/name_textblock/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.left.name elm.text.left.number";
+ data.item: "contents" "elm.icon.1";
+ data.item: "treesize" "20";
+ parts {
+ COMMON_BASE_STYLE
+ COMMON_BG
+ COMMON_NAME_TEXTBLOCK
+// COMMON_CALLERID_ICON
+ COMMON_DISCLIP
+ COMMON_BOTTOM_LINE
+ }
+ programs {
+ COMMON_PROGRAM
+ NAME_PROGRAM
+ NUMBER_PROGRAM
+ }
+ }
+
+ /* Genlist */
+ group {
+ name: "elm/genlist/item/noname_textblock/default";
+ alias: "elm/genlist/item_odd/noname_textblock/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.left.number";
+ data.item: "treesize" "20";
+ parts {
+ COMMON_BASE_STYLE
+ COMMON_BG
+ COMMON_NONAME_TEXTBLOCK
+ COMMON_DISCLIP
+ COMMON_BOTTOM_LINE
+ }
+ programs {
+ COMMON_PROGRAM
+ NUMBER_PROGRAM
+ }
+ }
+}
+
diff --git a/lib/edc/favorites_theme.edc b/lib/edc/favorites_theme.edc
new file mode 100755
index 0000000..2e48e0b
--- /dev/null
+++ b/lib/edc/favorites_theme.edc
@@ -0,0 +1,570 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+#define WIDTH 720
+#define MIN_SIZE (WIDTH/3)
+#define FAVORITE_ITEM_BG_COLOR 151 151 151 255
+#define FAVORITE_INDEX_TEXT_COLOR 255 255 255 255
+
+// Group Index
+#define GENLIST_INDEX_LIST_SIZE 32
+#define GENLIST_INDEX_LIST_COLOR 59 115 182 255
+#define GENLIST_INDEX_LIST_FOCUS_COLOR 255 255 255 255
+
+#define GENLIST_INDEX_LIST_BG_COLOR 248 246 239 255
+#define GENLIST_INDEX_LIST_PRESS_COLOR 87 135 194 255
+#define GENLIST_INDEX_LINE_COLOR 59 115 182 255
+#define GENLIST_INDEX_LINE_FOCUS_COLOR 255 255 255 255
+
+#define GENLIST_PADDING_SIZE_RIGHT 26
+#define DIALOGUE_PADDING_SIZE_RIGHT 36
+#define GENLIST_ICON_BIG_SIZE 74
+
+
+#define GENLIST_PART_PERSPECTIVE_POINT \
+ part { name: "point"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ color: 0 0 0 0; \
+ rel1 { relative: 0.0 0.0; } \
+ rel2 { relative: 1.0 0.0; } \
+ } \
+ }
+
+#define GENLIST_PART_BASE \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ align: 0.5 0.5; \
+ color: 0 0 0 0; \
+ } \
+ } \
+ GENLIST_PART_PERSPECTIVE_POINT
+
+#define GENLIST_PART_INDEX_BG_IMAGE \
+ part { name: "bg_image"; \
+ type: RECT; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ color: GENLIST_INDEX_LIST_BG_COLOR; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_INDEX_LIST_PRESS_COLOR; \
+ } \
+ GENLIST_DESCRIPTION_FADEOUT \
+ }
+
+#define GENLIST_PART_EXPANDED_PAD \
+ part { name: "elm.swallow.pad"; \
+ type: SWALLOW; \
+ scale: 1; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ visible: 0; \
+ min: 0 0; \
+ fixed: 1 0; \
+ align: 0.0 0.5; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel2.relative: 0.0 1.0; \
+ } \
+ }
+
+
+#define GENLIST_PART_SPACER(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ mouse_events: 0; \
+ type: SPACER; \
+ DESCRIPION \
+ }
+
+#define GENLIST_DESCRIPTION_L( left, param ) \
+ description { state: "default" 0.0; \
+ align: 0 0.5; \
+ fixed: 1 0; \
+ rel1 { \
+ relative: 1 0; \
+ to_x: left; \
+ to_y: "base"; \
+ }\
+ rel2 { \
+ relative: 1 1;\
+ to_x: left; \
+ to_y: "base"; \
+ }\
+ param \
+ }
+
+#define GENLIST_PART_PADDING_LEFT_SIZE( SIZE ) \
+ GENLIST_PART_EXPANDED_PAD \
+ GENLIST_PART_SPACER("elm.padding.left", \
+ GENLIST_DESCRIPTION_L("elm.swallow.pad", \
+ min: SIZE 0; \
+ max: SIZE 0; \
+ fixed: 1 0; \
+ ) \
+ )
+
+#define GENLIST_PART_PADDING_RIGHT \
+ GENLIST_PART_SPACER("elm.padding.right", \
+ description { state: "default" 0.0; \
+ min: GENLIST_PADDING_SIZE_RIGHT 0; \
+ max: GENLIST_PADDING_SIZE_RIGHT -1; \
+ fixed: 1 0; \
+ align: 1.0 0.5; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 1 0; \
+ } \
+ description { state: "decorate" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 0; \
+ max: 0 0; \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_TOP_SIZE( SIZE ) \
+ GENLIST_PART_SPACER("elm.padding.top", \
+ description { \
+ state: "default" 0.0; \
+ min: 0 SIZE; \
+ max: -1 SIZE; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.5 0.0; \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_RIGHT_SIZE( SIZE ) \
+ GENLIST_PART_SPACER("elm.padding.right", \
+ description { state: "default" 0.0; \
+ min: SIZE 0; \
+ max: SIZE -1; \
+ fixed: 1 0; \
+ align: 1.0 0.5; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 1 0; \
+ } \
+ description { state: "decorate" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 0; \
+ max: 0 0; \
+ } \
+ )
+
+#define GENLIST_PART_PADDING_BOTTOM_SIZE( SIZE ) \
+ GENLIST_PART_SPACER("elm.padding.bottom", \
+ description { state: "default" 0.0; \
+ min: 0 SIZE; \
+ max: -1 SIZE; \
+ fixed: 0 1; \
+ rel1.to: "base"; \
+ rel2.to: "base"; \
+ rel1.relative: 0.0 1.0; \
+ align: 0.5 1.0; \
+ } \
+ )
+
+#define GENLIST_DESCRIPTION( left, right, top, bottom, param ) \
+ description { state: "default" 0.0;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 0;\
+ to_x: right;\
+ to_y: bottom;\
+ }\
+ param\
+ }
+
+#define GENLIST_DESCRIPTION_FADEOUT \
+ description { state: "fadeout" 0.0; \
+ inherit: "default" 0.0; \
+ color: 255 255 255 50; \
+ visible: 0; \
+ } \
+ description { state: "fadein" 0.0; \
+ inherit: "default" 0.0; \
+ } \
+
+#define GENLIST_DESCRIPTION_INDEX_LIST \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_INDEX_LIST_FOCUS_COLOR; \
+ }
+
+#define GENLIST_PARAM_INDEX_LIST \
+ color: GENLIST_INDEX_LIST_COLOR; \
+ align: 0 0.5; \
+ text { \
+ align: 0 0.5; \
+ min: 0 1; \
+ max: 1 0; \
+ font: "Tizen:style=Bold"; \
+ size: GENLIST_INDEX_LIST_SIZE; \
+ text_class: "list_item"; \
+ }
+
+#define GENLIST_DESCRIPTION_LRT( left, right, top, param ) \
+ description { state: "default" 0.0;\
+ align: 0.5 0;\
+ rel1 { \
+ relative: 1 1; \
+ to_x: left; \
+ to_y: top; \
+ }\
+ rel2 {\
+ relative: 0 1;\
+ to_x: right;\
+ to_y: top;\
+ }\
+ param\
+ }
+
+#define GENLIST_PART_TEXT(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ mouse_events: 0; \
+ type: TEXT; \
+ DESCRIPION \
+ GENLIST_DESCRIPTION_FADEOUT \
+ }
+
+#define GENLIST_DESCRIPTION_FADEOUT_RECT \
+ description { state: "fadeout" 0.0; \
+ inherit: "default" 0.0; \
+ color: 0 0 0 50; \
+ visible: 0; \
+ } \
+ description { state: "fadein" 0.0; \
+ inherit: "default" 0.0; \
+ } \
+
+#define GENLIST_PART_RECT(NAME, DESCRIPION) \
+ part { name: NAME; \
+ scale: 1; \
+ type: RECT; \
+ DESCRIPION \
+ GENLIST_DESCRIPTION_FADEOUT_RECT \
+ }
+
+#define GENLIST_PART_INDEX_LINE(LEFT, RIGHT, TOP, BOTTOM) \
+ GENLIST_PART_RECT("index_line", \
+ GENLIST_DESCRIPTION(LEFT, RIGHT, TOP, BOTTOM, \
+ color: GENLIST_INDEX_LINE_COLOR; \
+ min: 0 4; \
+ max: -1 4;) \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_INDEX_LINE_FOCUS_COLOR; \
+ } \
+ )
+
+styles {
+ style {
+ name: "gengrid_textblock_style";
+ base: "font=Tizen:style=Medium text_class=tizen font_size=24 color=#F9F9F9 wrap=char ellipsis=1.0";
+ }
+ style {
+ name: "gengrid_noid_textblock_style";
+ base: "font=Tizen:style=Medium text_class=tizen font_size=40 color=#FFFFFF wrap=char align=center ellipsis=0.0";
+ }
+}
+
+collections {
+ group {
+ name: "elm/gengrid/item/group_index/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ parts {
+ GENLIST_PART_BASE
+ GENLIST_PART_INDEX_BG_IMAGE
+ GENLIST_PART_PADDING_LEFT_SIZE(26)
+ GENLIST_PART_PADDING_RIGHT_SIZE(26)
+ GENLIST_PART_PADDING_TOP_SIZE(20)
+ GENLIST_PART_PADDING_BOTTOM_SIZE(14)
+ GENLIST_PART_TEXT("elm.text",
+ GENLIST_DESCRIPTION_LRT("elm.padding.left", "elm.padding.right", "elm.padding.top",
+ GENLIST_PARAM_INDEX_LIST
+ min: 0 38; fixed: 1 1;)
+ GENLIST_DESCRIPTION_INDEX_LIST
+ )
+ GENLIST_PART_INDEX_LINE("elm.padding.left", "elm.padding.right", "elm.text", "elm.padding.bottom")
+ }
+ }
+
+ group{
+ name: "elm/gengrid/item/gridtext_favorites/default";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.expand.icon elm.swallow.end";
+
+ parts{
+ part{
+ name: "bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 248 246 239 255;
+ }
+ }
+ part {
+ name: "item_bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 248 246 239 255;
+ min: MIN_SIZE MIN_SIZE;
+ fixed: 1 1;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ }
+ part {
+ name: "elm.icon.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 248 246 239 255;
+ rel1 { relative: 0.0 0.0; to: "item_bg"; }
+ rel2 { relative: 1.0 1.0; offset: -2 -2; to: "item_bg"; }
+ }
+ description {
+ state: "edit" 0.0;
+ color: 248 246 239 255;
+ rel1 { relative: 0.05 0.05; to: "item_bg"; }
+ rel2 { relative: 0.95 0.95; offset: -2 -2; to: "item_bg"; }
+ }
+ }
+ part{
+ name: "elm.swallow.icon";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "elm.icon.bg"; }
+ rel2 { relative: 1.0 1.0; to: "elm.icon.bg"; }
+ }
+ }
+ part {
+ name: "label_bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 78;
+ min: 0 72;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ rel1 { relative: 0.0 1.0; to: "elm.icon.bg"; }
+ rel2 { relative: 1.0 1.0; to: "elm.icon.bg"; }
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; offset: 16 6; to: "label_bg"; }
+ rel2 { relative: 0.75 1.0; offset: -20 0; to: "label_bg"; }
+ text {
+ style: "gengrid_textblock_style";
+ align: 0.5 0.5;
+ }
+ }
+ description {
+ state: "edit" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.0 0.0; offset: 18 6; to: "label_bg"; }
+ rel2 { relative: 0.75 1.0; offset: -22 0; to: "label_bg"; }
+ }
+ }
+ part {
+ name: "elm.swallow.expand.icon";
+ type: SWALLOW;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ min: 50 40;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.5; to: "label_bg"; }
+ rel2 { relative: 1.0 0.5; to: "label_bg"; }
+ align: 1.0 0.5;
+ }
+ }
+ part {
+ name: "elm.swallow.end";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.icon"; }
+ rel2 { relative: 0.0 0.0; to: "elm.swallow.icon"; }
+ }
+ }
+ }
+ programs {
+ program {
+ name: "prog/favorites_theme/edit";
+ source: "favorites_theme";
+ signal: "favorites_theme/edit";
+ action: STATE_SET "edit" 0.0;
+ transition: DECELERATE 0.7;
+ target: "elm.icon.bg";
+ target: "elm.text";
+ }
+ program {
+ name: "prog/favorites_theme/edit_no_effect";
+ source: "favorites_theme";
+ signal: "favorites_theme/edit_no_effect";
+ action: STATE_SET "edit" 0.0;
+ target: "elm.icon.bg";
+ target: "elm.text";
+ }
+ }
+ }
+ group{
+ name: "elm/gengrid/item/gridtext_favorites_no_id/default";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.expand.icon elm.swallow.end";
+
+ parts{
+ part {
+ name: "item_bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 248 246 239 255;
+ min: MIN_SIZE MIN_SIZE;
+ fixed: 1 1;
+ }
+ }
+ part {
+ name: "item_icon_bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: FAVORITE_ITEM_BG_COLOR;
+ rel1 { relative: 0.0 0.0; to: "item_bg"; }
+ rel2 { relative: 1.0 1.0; offset: -2 -2; to: "item_bg"; }
+ }
+ description {
+ state: "edit" 0.0;
+ color: FAVORITE_ITEM_BG_COLOR;
+ rel1 { relative: 0.05 0.05; to: "item_bg"; }
+ rel2 { relative: 0.95 0.95; offset: -2 -2; to: "item_bg"; }
+ }
+ }
+ part {
+ name: "label_bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 90;
+ rel1 { relative: 0.0 64/240; to: "item_icon_bg"; }
+ rel2 { relative: 1.0 176/240; to: "item_icon_bg"; }
+ }
+ description {
+ state: "edit" 0.0;
+ color: 0 0 0 90;
+ rel1 { relative: 0.0 52/216; to: "item_icon_bg"; }
+ rel2 { relative: 1.0 164/216; to: "item_icon_bg"; }
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 96;
+ fixed: 0 1;
+ rel1 { relative: 0.0 64/240; offset: 20 0; to: "label_bg"; }
+ rel2 { relative: 1.0 176/240; offset: -20 0; to: "label_bg"; }
+ text {
+ style: "gengrid_noid_textblock_style";
+ align: 0.5 0.5;
+ }
+ }
+ description {
+ state: "edit" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: 0.0 52/216; offset: 18 0; to: "label_bg"; }
+ rel2 { relative: 1.0 164/216; offset: -22 0; to: "label_bg"; }
+ }
+ }
+ part {
+ name: "elm.swallow.expand.icon";
+ type: SWALLOW;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ min: 54 64;
+ fixed: 1 1;
+ rel1 { relative: 1.0 1.0; to: "item_icon_bg"; }
+ rel2 { relative: 1.0 1.0; to: "item_icon_bg"; }
+ align: 1.0 1.0;
+ }
+ }
+ part {
+ name: "elm.swallow.end";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "item_icon_bg"; }
+ rel2 { relative: 0.0 0.0; to: "item_icon_bg"; }
+ }
+ }
+ }
+ programs {
+ program {
+ name: "prog/favorites_theme/edit";
+ source: "favorites_theme";
+ signal: "favorites_theme/edit";
+ action: STATE_SET "edit" 0.0;
+ transition: DECELERATE 0.7;
+ target: "item_icon_bg";
+ target: "elm.text";
+ }
+ program {
+ name: "prog/favorites_theme/edit_no_effect";
+ source: "favorites_theme";
+ signal: "favorites_theme/edit_no_effect";
+ action: STATE_SET "edit" 0.0;
+ target: "item_icon_bg";
+ target: "elm.text";
+ }
+ }
+ }
+}
diff --git a/lib/edc/group_theme.edc b/lib/edc/group_theme.edc
new file mode 100755
index 0000000..3d99fd1
--- /dev/null
+++ b/lib/edc/group_theme.edc
@@ -0,0 +1,962 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#define GROUP_TITLE_BG_COLOR 74 119 149 255
+#define GROUP_BG_COLOR 209 209 209 255
+#define GROUP_TEXT_COLOR 255 255 255 255
+#define GROUP_INDEX_TEXT_COLOR 49 49 49 255
+
+#define WIDTH 330
+#define HEIGHT 312
+#define INFO_HEIGHT 90
+
+#define PADDING 3
+#define ITEM_SIZE 110
+#define CT_SIZE 106
+
+#define PART_BG(NAME) \
+
+#define PART_SWALLOW(NAME) \
+part { \
+ name: "rect."NAME".bg"; \
+ type: RECT; \
+ description { \
+ state: "default" 0.0; \
+ color: GROUP_BG_COLOR; \
+ rel1.to: "rect."NAME; \
+ rel2.to: "rect."NAME; \
+ } \
+}\
+part { \
+ name: "disclip."NAME; \
+ type: RECT; \
+ description { \
+ state: "default" 0.0; \
+ color: GROUP_TEXT_COLOR; \
+ rel1.to: "rect."NAME; \
+ rel2.to: "rect."NAME; \
+ } \
+}\
+part { \
+ name: "swallow."NAME; \
+ type: SWALLOW; \
+ clip_to: "disclip."NAME; \
+ description { \
+ state: "default" 0.0; \
+ rel1.to: "rect."NAME; \
+ rel2.to: "rect."NAME; \
+ }\
+}
+
+#define PART_TEXT(NAME) \
+part { \
+ name: "text."NAME; \
+ type: TEXT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ align: 0.0 0.5; \
+ color: GROUP_TEXT_COLOR; \
+ rel1 { relative: 0.0 0.0; to: "rect."NAME".bg"; } \
+ rel2 { relative: 1.0 1.0; to: "rect."NAME".bg"; } \
+ text { \
+ font: "Tizen:style=Medium"; \
+ text_class: "tizen"; \
+ size: 30; \
+ align: 0.0 0.5; \
+ ellipsis: 0.0; \
+ } \
+ } \
+}
+
+collections {
+ group {
+ name: "elm/gengrid/item/group_index/default";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ min: 0 80;
+ fixed: 0 1;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GROUP_INDEX_TEXT_COLOR;
+ rel1 { offset: 24 0; }
+ align: 0.0 1.0;
+ text {
+ font: "Tizen:style=Medium";
+ size: 32;
+ min: 0 1;
+ align: 0.0 1.0;
+ text_class: "tizen";
+ }
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/gengrid/item/groupitem.1image/default";
+ data.item: "texts" "text.name text.count text.edit.name text.edit.count";
+ data.item: "contents" "swallow.content1 swallow.icon swallow.edit.icon quick.menu.button";
+
+ parts{
+ part {
+ name: "base";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "rect.bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GROUP_BG_COLOR;
+ min: WIDTH HEIGHT;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "base"; offset: 15 15; }
+ rel2 { relative: 0.0 0.0; to: "base"; offset: 15 15; }
+ }
+ }
+ part {
+ name: "rect.info";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 INFO_HEIGHT-PADDING;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ color: GROUP_TITLE_BG_COLOR;
+ rel1 { relative: 0.0 0.0; to: "rect.bg"; offset: PADDING PADDING; }
+ rel2 { relative: 1.0 0.0; to: "rect.bg"; offset: -PADDING PADDING; }
+ }
+ }
+ part {
+ name: "rect.icon";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: INFO_HEIGHT-(PADDING*2) INFO_HEIGHT-(PADDING*2);
+ fixed: 1 1;
+ align: 1.0 0.5;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "rect.info"; offset: -PADDING*3 PADDING; }
+ rel2 { relative: 1.0 1.0; to: "rect.info"; offset: -PADDING*3 -PADDING*2; }
+ }
+ }
+ part {
+ name: "rect.icon.quick";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: INFO_HEIGHT-(PADDING*2) INFO_HEIGHT-(PADDING*2);
+ fixed: 1 1;
+ align: 1.0 0.5;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "rect.info";}
+ rel2 { relative: 1.0 1.0; to: "rect.info";}
+ }
+ }
+ part {
+ name: "delimeter.line";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1 { relative: 1.0 0.0; to: "rect.info";}
+ rel2 { relative: 1.0 1.0; to: "rect.info";}
+ }
+ }
+ part {
+ name: "rect.name.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to: "rect.info"; offset: 10 PADDING; }
+ rel2 { relative: 0.0 0.5; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING 0; }
+ }
+ }
+ part {
+ name: "rect.count.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.5; to: "rect.info"; offset: 10 0; }
+ rel2 { relative: 0.0 1.0; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING -PADDING; }
+ }
+ }
+ part {
+ name: "rect.edit.icon";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: INFO_HEIGHT-(PADDING*2) INFO_HEIGHT-(PADDING*2);
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to: "rect.info"; offset: PADDING PADDING; }
+ rel2 { relative: 0.0 0.0; to: "rect.info"; offset: PADDING PADDING; }
+ }
+ }
+ part {
+ name: "rect.edit.image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: ITEM_SIZE ITEM_SIZE);
+ fixed: 1 1;
+ align: 1.0 1.0;
+ color: 255 0 0 0;
+ rel1 { relative: 1.0 1.0; to: "rect.bg"; offset: -PADDING -PADDING; }
+ rel2 { relative: 1.0 1.0; to: "rect.bg"; offset: -PADDING -PADDING; }
+ }
+ }
+ part {
+ name: "rect.edit.name.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "rect.edit.icon"; offset: 0 PADDING; }
+ rel2 { relative: 0.0 0.5; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING 0; }
+ }
+ }
+ part {
+ name: "rect.edit.count.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.5; to: "rect.edit.icon"; offset: 0 0; }
+ rel2 { relative: 0.0 1.0; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING -PADDING; }
+ }
+ }
+ part {
+ name: "rect.content1";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: (CT_SIZE*3)+(PADDING*2) (CT_SIZE*2)+(PADDING*2);
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 1.0; to: "rect.info"; offset: 0 PADDING; }
+ rel2 { relative: 0.0 1.0; to: "rect.info"; offset: 0 PADDING; }
+ }
+ }
+ PART_SWALLOW("content1")
+ part {
+ name: "swallow.icon";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "rect.icon";
+ rel2.to: "rect.icon";
+ }
+ }
+ part {
+ name: "quick.menu.button";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "rect.icon";
+ rel2.to: "rect.icon";
+ }
+ }
+ part {
+ name: "swallow.edit.icon";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ min: 60 60;
+ fixed: 1 1;
+ rel1 { relative: 0.5 0.5; to: "rect.edit.icon"; }
+ rel2 { relative: 0.5 0.5; to: "rect.edit.icon"; }
+ }
+ }
+ PART_TEXT("name")
+ PART_TEXT("count")
+ PART_TEXT("edit.name")
+ PART_TEXT("edit.count")
+ }
+ }
+ group {
+ name: "elm/gengrid/item/groupitem.2image/default";
+ data.item: "texts" "text.name text.count text.edit.name text.edit.count";
+ data.item: "contents" "swallow.content1 swallow.content2 swallow.icon swallow.edit.icon quick.menu.button";
+ parts{
+ part {
+ name: "base";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "rect.bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GROUP_BG_COLOR;
+ min: WIDTH HEIGHT;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "base"; offset: 15 15; }
+ rel2 { relative: 0.0 0.0; to: "base"; offset: 15 15; }
+ }
+ }
+ part {
+ name: "rect.info";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 INFO_HEIGHT-PADDING;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ color: GROUP_TITLE_BG_COLOR;
+ rel1 { relative: 0.0 0.0; to: "rect.bg"; offset: PADDING PADDING; }
+ rel2 { relative: 1.0 0.0; to: "rect.bg"; offset: -PADDING PADDING; }
+ }
+ }
+ part {
+ name: "rect.icon";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: INFO_HEIGHT-(PADDING*2) INFO_HEIGHT-(PADDING*2);
+ fixed: 1 1;
+ align: 1.0 0.5;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "rect.info"; offset: -PADDING*3 PADDING; }
+ rel2 { relative: 1.0 1.0; to: "rect.info"; offset: -PADDING*3 -PADDING*2; }
+ }
+ }
+ part {
+ name: "rect.name.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to: "rect.info"; offset: 10 PADDING; }
+ rel2 { relative: 0.0 0.5; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING 0; }
+ }
+ }
+ part {
+ name: "rect.count.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.5; to: "rect.info"; offset: 10 0; }
+ rel2 { relative: 0.0 1.0; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING -PADDING; }
+ }
+ }
+ part {
+ name: "rect.edit.icon";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: INFO_HEIGHT-(PADDING*2) INFO_HEIGHT-(PADDING*2);
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to: "rect.info"; offset: PADDING PADDING; }
+ rel2 { relative: 0.0 0.0; to: "rect.info"; offset: PADDING PADDING; }
+ }
+ }
+ part {
+ name: "rect.edit.image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: ITEM_SIZE ITEM_SIZE);
+ fixed: 1 1;
+ align: 1.0 1.0;
+ color: 255 0 0 0;
+ rel1 { relative: 1.0 1.0; to: "rect.bg"; offset: -PADDING -PADDING; }
+ rel2 { relative: 1.0 1.0; to: "rect.bg"; offset: -PADDING -PADDING; }
+ }
+ }
+ part {
+ name: "rect.edit.name.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "rect.edit.icon"; offset: 0 PADDING; }
+ rel2 { relative: 0.0 0.5; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING 0; }
+ }
+ }
+ part {
+ name: "rect.edit.count.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.5; to: "rect.edit.icon"; offset: 0 0; }
+ rel2 { relative: 0.0 1.0; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING -PADDING; }
+ }
+ }
+ part {
+ name: "rect.content1";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: (CT_SIZE*2)+PADDING (CT_SIZE*2)+PADDING;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 1.0; to: "rect.info"; offset: 0 PADDING; }
+ rel2 { relative: 0.0 1.0; to: "rect.info"; offset: 0 PADDING; }
+ }
+ }
+ part {
+ name: "rect.content2";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: CT_SIZE (CT_SIZE*2)+PADDING;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "rect.content1.bg"; offset: PADDING 0; }
+ rel2 { relative: 1.0 0.0; to: "rect.content1.bg"; offset: PADDING 0; }
+ }
+ }
+ PART_SWALLOW("content1")
+ PART_SWALLOW("content2")
+ part {
+ name: "swallow.icon";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "rect.icon";
+ rel2.to: "rect.icon";
+ }
+ }
+ part {
+ name: "quick.menu.button";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "rect.icon";
+ rel2.to: "rect.icon";
+ }
+ }
+ part {
+ name: "swallow.edit.icon";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ min: 60 60;
+ fixed: 1 1;
+ rel1 { relative: 0.5 0.5; to: "rect.edit.icon"; }
+ rel2 { relative: 0.5 0.5; to: "rect.edit.icon"; }
+ }
+ }
+ PART_TEXT("name")
+ PART_TEXT("count")
+ PART_TEXT("edit.name")
+ PART_TEXT("edit.count")
+ }
+ }
+ group {
+ name: "elm/gengrid/item/groupitem.3image/default";
+ data.item: "texts" "text.name text.count text.edit.name text.edit.count";
+ data.item: "contents" "swallow.content1 swallow.content2 swallow.content3 swallow.icon swallow.edit.icon quick.menu.button";
+
+ parts{
+ part {
+ name: "base";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "rect.bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GROUP_BG_COLOR;
+ min: WIDTH HEIGHT;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "base"; offset: 15 15; }
+ rel2 { relative: 0.0 0.0; to: "base"; offset: 15 15; }
+ }
+ }
+ part {
+ name: "rect.info";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 INFO_HEIGHT-PADDING;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ color: GROUP_TITLE_BG_COLOR;
+ rel1 { relative: 0.0 0.0; to: "rect.bg"; offset: PADDING PADDING; }
+ rel2 { relative: 1.0 0.0; to: "rect.bg"; offset: -PADDING PADDING; }
+ }
+ }
+ part {
+ name: "rect.icon";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: INFO_HEIGHT-(PADDING*2) INFO_HEIGHT-(PADDING*2);
+ fixed: 1 1;
+ align: 1.0 0.5;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "rect.info"; offset: -PADDING*3 PADDING; }
+ rel2 { relative: 1.0 1.0; to: "rect.info"; offset: -PADDING*3 -PADDING*2; }
+ }
+ }
+ part {
+ name: "rect.name.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to: "rect.info"; offset: 10 PADDING; }
+ rel2 { relative: 0.0 0.5; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING 0; }
+ }
+ }
+ part {
+ name: "rect.count.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.5; to: "rect.info"; offset: 10 0; }
+ rel2 { relative: 0.0 1.0; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING -PADDING; }
+ }
+ }
+ part {
+ name: "rect.edit.icon";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: INFO_HEIGHT-(PADDING*2) INFO_HEIGHT-(PADDING*2);
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to: "rect.info"; offset: PADDING PADDING; }
+ rel2 { relative: 0.0 0.0; to: "rect.info"; offset: PADDING PADDING; }
+ }
+ }
+ part {
+ name: "rect.edit.image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: ITEM_SIZE ITEM_SIZE);
+ fixed: 1 1;
+ align: 1.0 1.0;
+ color: 255 0 0 0;
+ rel1 { relative: 1.0 1.0; to: "rect.bg"; offset: -PADDING -PADDING; }
+ rel2 { relative: 1.0 1.0; to: "rect.bg"; offset: -PADDING -PADDING; }
+ }
+ }
+ part {
+ name: "rect.edit.name.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "rect.edit.icon"; offset: 0 PADDING; }
+ rel2 { relative: 0.0 0.5; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING 0; }
+ }
+ }
+ part {
+ name: "rect.edit.count.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.5; to: "rect.edit.icon"; offset: 0 0; }
+ rel2 { relative: 0.0 1.0; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING -PADDING; }
+ }
+ }
+ part {
+ name: "rect.content1";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: (CT_SIZE*2)+PADDING (CT_SIZE*2)+PADDING;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 1.0; to: "rect.info"; offset: 0 PADDING; }
+ rel2 { relative: 0.0 1.0; to: "rect.info"; offset: 0 PADDING; }
+ }
+ }
+ part {
+ name: "rect.content2";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: CT_SIZE CT_SIZE;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "rect.content1.bg"; offset: PADDING 0; }
+ rel2 { relative: 1.0 0.0; to: "rect.content1.bg"; offset: PADDING 0; }
+ }
+ }
+ part {
+ name: "rect.content3";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: CT_SIZE CT_SIZE;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 1.0; to: "rect.content2.bg"; offset: 0 PADDING; }
+ rel2 { relative: 0.0 1.0; to: "rect.content2.bg"; offset: 0 PADDING; }
+ }
+ }
+ PART_SWALLOW("content1")
+ PART_SWALLOW("content2")
+ PART_SWALLOW("content3")
+ part {
+ name: "swallow.icon";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "rect.icon";
+ rel2.to: "rect.icon";
+ }
+ }
+ part {
+ name: "quick.menu.button";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "rect.icon";
+ rel2.to: "rect.icon";
+ }
+ }
+ part {
+ name: "swallow.edit.icon";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ min: 60 60;
+ fixed: 1 1;
+ rel1 { relative: 0.5 0.5; to: "rect.edit.icon"; }
+ rel2 { relative: 0.5 0.5; to: "rect.edit.icon"; }
+ }
+ }
+ PART_TEXT("name")
+ PART_TEXT("count")
+ PART_TEXT("edit.name")
+ PART_TEXT("edit.count")
+ }
+ }
+ group {
+ name: "elm/gengrid/item/groupitem.6image/default";
+ data.item: "texts" "text.name text.count text.edit.name text.edit.count";
+ data.item: "contents" "swallow.content0 swallow.content1 swallow.content2 swallow.content3 swallow.content4 swallow.content5 swallow.content6 swallow.icon swallow.edit.icon quick.menu.button";
+
+ parts{
+ part {
+ name: "base";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "rect.bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GROUP_BG_COLOR;
+ min: WIDTH HEIGHT;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "base"; offset: 15 15; }
+ rel2 { relative: 0.0 0.0; to: "base"; offset: 15 15; }
+ }
+ }
+ part {
+ name: "rect.info";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 INFO_HEIGHT-PADDING;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ color: GROUP_TITLE_BG_COLOR;
+ rel1 { relative: 0.0 0.0; to: "rect.bg"; offset: PADDING PADDING; }
+ rel2 { relative: 1.0 0.0; to: "rect.bg"; offset: -PADDING PADDING; }
+ }
+ }
+ part {
+ name: "rect.icon";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: INFO_HEIGHT-(PADDING*2) INFO_HEIGHT-(PADDING*2);
+ fixed: 1 1;
+ align: 1.0 0.5;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "rect.info"; offset: -PADDING*3 PADDING; }
+ rel2 { relative: 1.0 1.0; to: "rect.info"; offset: -PADDING*3 -PADDING*2; }
+ }
+ }
+ part {
+ name: "rect.name.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to: "rect.info"; offset: 10 PADDING; }
+ rel2 { relative: 0.0 0.5; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING 0; }
+ }
+ }
+ part {
+ name: "rect.count.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.5; to: "rect.info"; offset: 10 0; }
+ rel2 { relative: 0.0 1.0; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING -PADDING; }
+ }
+ }
+ part {
+ name: "rect.edit.icon";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: INFO_HEIGHT-(PADDING*2) INFO_HEIGHT-(PADDING*2);
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to: "rect.info"; offset: PADDING PADDING; }
+ rel2 { relative: 0.0 0.0; to: "rect.info"; offset: PADDING PADDING; }
+ }
+ }
+ part {
+ name: "rect.edit.image";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: ITEM_SIZE ITEM_SIZE);
+ fixed: 1 1;
+ align: 1.0 1.0;
+ color: 255 0 0 0;
+ rel1 { relative: 1.0 1.0; to: "rect.bg"; offset: -PADDING -PADDING; }
+ rel2 { relative: 1.0 1.0; to: "rect.bg"; offset: -PADDING -PADDING; }
+ }
+ }
+ part {
+ name: "rect.edit.name.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "rect.edit.icon"; offset: 0 PADDING; }
+ rel2 { relative: 0.0 0.5; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING 0; }
+ }
+ }
+ part {
+ name: "rect.edit.count.bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.5; to: "rect.edit.icon"; offset: 0 0; }
+ rel2 { relative: 0.0 1.0; to_x: "rect.icon"; to_y: "rect.info"; offset: -PADDING -PADDING; }
+ }
+ }
+ part {
+ name: "rect.content1";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: CT_SIZE CT_SIZE;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 1.0; to: "rect.info"; offset: 0 PADDING; }
+ rel2 { relative: 0.0 1.0; to: "rect.info"; offset: 0 PADDING; }
+ }
+ }
+ part {
+ name: "rect.content2";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: CT_SIZE CT_SIZE;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "rect.content1.bg"; offset: PADDING 0; }
+ rel2 { relative: 1.0 0.0; to: "rect.content1.bg"; offset: PADDING 0; }
+ }
+ }
+ part {
+ name: "rect.content3";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: CT_SIZE CT_SIZE;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "rect.content2.bg"; offset: PADDING 0; }
+ rel2 { relative: 1.0 0.0; to: "rect.content2.bg"; offset: PADDING 0; }
+ }
+ }
+ part {
+ name: "rect.content4";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: CT_SIZE CT_SIZE;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 1.0; to: "rect.content1.bg"; offset: 0 PADDING; }
+ rel2 { relative: 0.0 1.0; to: "rect.content1.bg"; offset: 0 PADDING; }
+ }
+ }
+ part {
+ name: "rect.content5";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: CT_SIZE CT_SIZE;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 1.0; to: "rect.content2.bg"; offset: 0 PADDING; }
+ rel2 { relative: 0.0 1.0; to: "rect.content2.bg"; offset: 0 PADDING; }
+ }
+ }
+ part {
+ name: "rect.content6";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: CT_SIZE CT_SIZE;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 1.0; to: "rect.content3.bg"; offset: 0 PADDING; }
+ rel2 { relative: 0.0 1.0; to: "rect.content3.bg"; offset: 0 PADDING; }
+ }
+ }
+ PART_SWALLOW("content1")
+ PART_SWALLOW("content2")
+ PART_SWALLOW("content3")
+ PART_SWALLOW("content4")
+ PART_SWALLOW("content5")
+ PART_SWALLOW("content6")
+ part {
+ name: "swallow.icon";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "rect.icon";
+ rel2.to: "rect.icon";
+ }
+ }
+ part {
+ name: "quick.menu.button";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "rect.icon";
+ rel2.to: "rect.icon";
+ }
+ }
+ part {
+ name: "swallow.edit.icon";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ min: 60 60;
+ fixed: 1 1;
+ rel1 { relative: 0.5 0.5; to: "rect.edit.icon"; }
+ rel2 { relative: 0.5 0.5; to: "rect.edit.icon"; }
+ }
+ }
+ PART_TEXT("name")
+ PART_TEXT("count")
+ PART_TEXT("edit.name")
+ PART_TEXT("edit.count")
+ }
+ }
+}
diff --git a/lib/edc/image_layout.edc b/lib/edc/image_layout.edc
new file mode 100755
index 0000000..40ae728
--- /dev/null
+++ b/lib/edc/image_layout.edc
@@ -0,0 +1,115 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+ collections {
+ group {
+ name: "elm/genlist/item/image_layout/default";
+ alias: "elm/genlist/item_odd/image_layout/default";
+ alias: "dialogue/image_layout";
+ data.item: "selectraise" "on";
+ data.item: "stacking" "above";
+ data.item: "contents" "elm.icon elm.icon2 elm.icon3 elm.icon4";
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 479;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "elm.rect.icon";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 360 360;
+ max: 360 360;
+ fixed: 1 1;
+ color: 239 237 229 255;
+ rel1 { relative: 0.0 417.0/479.0; }
+ rel2 { relative: 1.0 417.0/479.0; }
+ }
+ }
+ part {
+ name: "elm.icon";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 360 360;
+ max: 360 360;
+ fixed: 1 1;
+ rel1 { relative: 0.0 417.0/479.0; }
+ rel2 { relative: 1.0 417.0/479.0; }
+ }
+ }
+ part {
+ name: "elm.icon2";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ min: 128 128;
+ max: 128 128;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "elm.icon"; }
+ rel2 { relative: 1.0 417.0/479.0; to: "elm.icon"; }
+ }
+ }
+ part {
+ name: "elm.icon3";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 1.0;
+ min: 128 128;
+ max: 128 128;
+ fixed: 1 1;
+ rel1 { relative: 1.0 1.0; to: "elm.icon"; offset: 16 0; }
+ rel2 { relative: 1.0 1.0; to: "elm.icon"; offset: 16 0; }
+ }
+ }
+ part {
+ name: "elm.icon4";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ min: 45 45;
+ max: 45 45;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: "elm.icon"; }
+ rel2 { relative: 0.0 0.0; to: "elm.icon"; }
+ }
+ }
+ }
+ }
+}
diff --git a/lib/edc/input_theme.edc b/lib/edc/input_theme.edc
new file mode 100755
index 0000000..1b9a460
--- /dev/null
+++ b/lib/edc/input_theme.edc
@@ -0,0 +1,767 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+#define GENLIST_HEIGHT_1LINE 112
+#define GENLIST_LIST_LINE1_COLOR 211 209 203 255
+#define GENLIST_PADDING_32_INC 32
+#define GENLIST_PART_BG_COLOR 249 249 249 255
+#define INPUT_DIALOGUE_COLOR 108 168 199 255
+#define INPUT_DIALOGUE_BG_COLOR 236 240 242 255
+#define GENLIST_INDEX_LIST_BG_COLOR 0 0 0 255
+
+#define GENLIST_FONT_32_INC 32
+#define GENLIST_FONT_44_INC 44
+#define GENLIST_PADDING_12_INC 12
+#define GENLIST_PADDING_16_INC 16
+#define GENLIST_PADDING_27_INC 27
+#define GENLIST_SIZE_163_INC 163
+#define GENLIST_PART_LIST_LINE_COLOR_INC 169 169 169 255
+#define GENLIST_DIALOGUE_FONT_EDIT_MODE_TEXT_01_COLOR_INC 100 100 100 255
+#define GENLIST_PART_FONT_LIST_MAIN_TEXT_UNREAD_COLOR_INC 0 0 0 255
+#define GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC 108 168 199 255
+#define GENLIST_PART_DISCLIP_COLOR_INC 255 255 255 10
+#define GENLIST_PART_BG_COLOR_INC 236 240 242 255
+#define GENLIST_DIALOGUE_BG_IMAGE_COLOR_INC 236 240 242 255
+#define GENLIST_PART_LIST_PRESS_COLOR_INC 42 137 194 255
+
+
+#define GENLIST_PART_BASE( param_item_height ) \
+ part { name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: GENLIST_PART_BG_COLOR_INC; \
+ } \
+ }
+
+#define GENLIST_PART_DIALOGUE_BG_IMAGE \
+ part { name: "bg_image"; \
+ type: RECT; \
+ clip_to: "disclip"; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ color: GENLIST_DIALOGUE_BG_IMAGE_COLOR_INC; \
+ } \
+ description { state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_PART_LIST_PRESS_COLOR_INC; \
+ } \
+ }
+
+#define GENLIST_PART_BOTTOM_LINE \
+part { name: "bottom_line"; \
+ type: RECT; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ min: 0 1; \
+ fixed: 0 1; \
+ visible: 1; \
+ color: GENLIST_PART_LIST_LINE_COLOR_INC; \
+ rel1 { \
+ relative: 0.0 1.0; \
+ offset: 0 -1; \
+ } \
+ } \
+}
+
+#define GENLIST_PART_PADDING_LEFT( param_padding_size ) \
+part { name: "elm.padding.left"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: param_padding_size 0; \
+ fixed: 1 0; \
+ visible: 0; \
+ rel2.relative: 0.0 1.0; \
+ align: 0.0 0.0; \
+ } \
+}
+
+#define GENLIST_PART_PADDING_RIGHT( param_padding_size ) \
+part { name: "elm.padding.right"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: param_padding_size 0; \
+ fixed: 1 0; \
+ visible: 0; \
+ rel1.relative: 1.0 0.0; \
+ align: 1.0 0.0; \
+ } \
+}
+
+#define GENLIST_PART_DIALOGUE_ITEM \
+part { name: "elm.rect.dialogue"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: GENLIST_PADDING_12_INC 0; \
+ fixed: 1 0; \
+ color: GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC; \
+ rel2.relative: 0.0 1.0; \
+ align: 0.0 0.0; \
+ } \
+}
+
+#define GENLIST_PART_DIALOGUE_RIGHT_LINE \
+part { name: "elm.rect.dialogue.right.line"; \
+ type: RECT; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 1 0; \
+ fixed: 1 0; \
+ visible: 1; \
+ rel1.relative: 1.0 0.0; \
+ align: 1.0 0.0; \
+ color: GENLIST_PART_LIST_LINE_COLOR_INC; \
+ } \
+}
+
+#define GENLIST_PART_DISCLIP \
+part { name: "disclip"; \
+ type: RECT; \
+ description { state: "default" 0.0; \
+ } \
+ description { state: "disabled" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_PART_DISCLIP_COLOR_INC; \
+ } \
+}
+
+#define GENLIST_DESCRIPTION_FLIP_ENABLED \
+description { state: "flip_enabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+}
+
+collections
+{
+ /* Genlist Item */
+ group {
+ name: "dialogue/baseinfo.3icon";
+ data.item: "contents" "elm.icon.name1 elm.icon.name2 elm.icon.image";
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 267;
+ }
+ }
+ part {
+ name: "bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: GENLIST_PART_BG_COLOR;
+ }
+ }
+ part {
+ name: "elm.rect.top_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 40;
+ fixed: 0 1;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ }
+ }
+ part {
+ name: "elm.icon.image.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.0;
+ min: 141 141;
+ fixed: 1 1;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 1.0; to: "elm.rect.top_padding"; }
+ rel2 { relative: 1.0 1.0; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.icon.expand.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 1.0 1.0;
+ min: 74 74;
+ fixed: 1 1;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 1.0; to: "base"; }
+ rel2 { relative: 1.0 1.0; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.rect.right_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.0;
+ min: 15 0;
+ fixed: 1 0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to: "elm.icon.image.rect"; }
+ rel2 { relative: 0.0 1.0; to: "elm.icon.image.rect"; }
+ }
+ }
+ part {
+ name: "elm.rect.top_line";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ min: 0 1;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ color: GENLIST_PART_LIST_LINE_COLOR_INC;
+ rel1 { relative: 0.0 1.0; to: "elm.rect.top_padding"; }
+ rel2 { relative: 0.0 0.0; to: "elm.rect.right_padding"; }
+ }
+ }
+ part {
+ name: "elm.rect.dialogue";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 12 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ color: INPUT_DIALOGUE_COLOR;
+ rel1 { relative: 0.0 1.0; to: "elm.rect.top_padding"; }
+ rel2 { relative: 0.0 1.0; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.icon.name1.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ color: INPUT_DIALOGUE_BG_COLOR;
+ rel1 { relative: 1.0 1.0; to_x: "elm.rect.dialogue"; to_y: "elm.rect.top_line"; }
+ rel2 { relative: 1.0 0.0; to: "elm.rect.middle_line"; }
+ }
+ }
+ part {
+ name: "elm.rect.middle_line";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ min: 0 1;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ color: GENLIST_PART_LIST_LINE_COLOR_INC;
+ rel1 { relative: 0.0 0.5; to: "elm.rect.dialogue"; }
+ rel2 { relative: 0.0 0.5 ; to_x: "elm.rect.right_padding"; to_y: "elm.rect.dialogue"; }
+ }
+ }
+ part {
+ name: "elm.icon.name2.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ color: INPUT_DIALOGUE_BG_COLOR;
+ rel1 { relative: 1.0 1.0; to_x: "elm.rect.dialogue"; to_y: "elm.rect.middle_line"; }
+ rel2 { relative: 1.0 0.0; to: "elm.rect.bottom_line"; }
+ }
+ }
+ part {
+ name: "elm.rect.bottom_line";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ min: 0 1;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ color: GENLIST_PART_LIST_LINE_COLOR_INC;
+ rel1 { relative: 0.0 1.0; to: "elm.rect.dialogue"; to_y: "base" ;}
+ rel2 { relative: 0.0 1.0; to_x: "elm.rect.right_padding"; to_y: "base"; }
+ }
+ }
+ part {
+ name: "elm.rect.right_line";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ min: 1 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ color: GENLIST_PART_LIST_LINE_COLOR_INC;
+ rel1 { relative: 1.0 1.0; to: "elm.rect.top_line"; }
+ rel2 { relative: 0.0 1.0; to: "elm.rect.bottom_line"; }
+ }
+ }
+ part {
+ name: "elm.icon.name1";
+ type: SWALLOW;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0; offset: 16 0; to: "elm.icon.name1.rect"; }
+ rel2 { relative: 1.0 1.0; offset: -16 0; to: "elm.icon.name1.rect"; }
+ }
+ }
+ part {
+ name: "elm.icon.name2";
+ type: SWALLOW;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0; offset: 16 0; to: "elm.icon.name2.rect"; }
+ rel2 { relative: 1.0 1.0; offset: -16 0; to: "elm.icon.name2.rect"; }
+ }
+ }
+ part {
+ name: "elm.icon.image";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ fixed: 1 1;
+ rel1.to: "elm.icon.image.rect";
+ rel2.to: "elm.icon.image.rect";
+ }
+ }
+ part {
+ name: "elm.icon.expand";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ fixed: 1 1;
+ rel1.to: "elm.icon.expand.rect";
+ rel2.to: "elm.icon.expand.rect";
+ }
+ }
+ }
+ }
+ /* Genlist Item */
+ group {
+ name: "dialogue/baseinfo.expand.1icon";
+ data.item: "contents" "elm.icon.name elm.icon.expand";
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 113;
+ }
+ }
+ part {
+ name: "bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: GENLIST_PART_BG_COLOR;
+ }
+ }
+ part {
+ name: "elm.rect.right_padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.0;
+ min: 156 0;
+ fixed: 1 0;
+ color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "base"; }
+ rel2 { relative: 1.0 1.0; to: "base"; }
+ }
+ }
+ part {
+ name: "elm.rect.dialogue";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 12 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ color: INPUT_DIALOGUE_COLOR;
+ rel2.relative: 0.0 1.0;
+ }
+ }
+ part {
+ name: "elm.icon.name.rect";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ color: INPUT_DIALOGUE_BG_COLOR;
+ rel1 { relative: 1.0 0.0; to_x: "elm.rect.dialogue"; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.rect.right_padding"; }
+ }
+ }
+ part {
+ name: "elm.rect.bottom_line";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ min: 0 1;
+ fixed: 0 1;
+ align: 0.0 0.0;
+ color: GENLIST_PART_LIST_LINE_COLOR_INC;
+ rel1 { relative: 0.0 1.0; offset: 0 -1; to: "elm.icon.name.rect"; }
+ rel2 { relative: 1.0 1.0; offset: 0 -1; to: "elm.icon.name.rect"; }
+ }
+ }
+ part {
+ name: "elm.rect.right_line";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ min: 1 0;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ color: GENLIST_PART_LIST_LINE_COLOR_INC;
+ rel1 { relative: 0.0 0.0; to: "elm.rect.right_padding"; }
+ rel2 { relative: 0.0 1.0; to: "elm.rect.right_padding"; }
+ }
+ }
+ part {
+ name: "elm.icon.name";
+ type: SWALLOW;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ rel1 { relative: 0.0 0.0; offset: 16 0; to: "elm.icon.name.rect"; }
+ rel2 { relative: 1.0 1.0; offset: -16 0; to: "elm.icon.name.rect"; }
+ }
+ }
+ }
+ }
+ group {
+ name: "dialogue/1icon.1type.1edit";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "contents" "elm.icon elm.icon.type elm.icon.edit";
+ images {
+ image: "00_list_group_bg.png" COMP;
+ }
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GENLIST_INDEX_LIST_BG_COLOR;
+ min: 0 113;
+ }
+ }
+ part {
+ name: "elm.icon.bg_image";
+ type: IMAGE;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 93 97 118 127;
+ rel1 { relative: 0.0 0.0; offset: 16 0; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.icon.type"; }
+ image {
+ normal: "00_list_group_bg.png";
+ border: 14 14 10 10;
+ border_scale: 1;
+ }
+ }
+ }
+ part {
+ name: "elm.icon";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; offset: 36 0; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.icon.type"; offset: -20 0; }
+ }
+ }
+ part {
+ name: "elm.icon.type";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ min: 160 74;
+ max: 160 74;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "elm.icon.edit"; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.icon.edit"; }
+ }
+ }
+ part {
+ name: "elm.icon.edit";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ min: 106 74;
+ max: 106 74;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+ }
+ }
+ group {
+ name: "dialogue/7icon.1type.1edit";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "contents" "elm.icon.1 elm.icon.2 elm.icon.3 elm.icon.4 elm.icon.5 elm.icon.6 elm.icon.7 elm.icon.type elm.icon.edit";
+ images {
+ image: "00_list_group_bg.png" COMP;
+ }
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GENLIST_INDEX_LIST_BG_COLOR;
+ min: 0 784;
+ }
+ }
+ part {
+ name: "elm.icon.bg_image";
+ type: IMAGE;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ rel1 { relative: 0.0 0.0; offset: 16 0; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.icon.type"; }
+ image {
+ normal: "00_list_group_bg.png";
+ border: 14 14 10 10;
+ border_scale: 1;
+ }
+ }
+ }
+ part {
+ name: "elm.rect.icon";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; offset: 16 0; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.icon.type"; }
+ }
+ }
+ part {
+ name: "elm.rect.icon.line1";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GENLIST_LIST_LINE1_COLOR;
+ min: 0 1;
+ max: -1 1;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1/7; to: "elm.rect.icon"; }
+ rel2 { relative: 1.0 1/7; to: "elm.rect.icon"; }
+ }
+ }
+ part {
+ name: "elm.rect.icon.line2";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GENLIST_LIST_LINE1_COLOR;
+ min: 0 1;
+ max: -1 1;
+ fixed: 0 1;
+ rel1 { relative: 0.0 2/7; to: "elm.rect.icon"; }
+ rel2 { relative: 1.0 2/7; to: "elm.rect.icon"; }
+ }
+ }
+ part {
+ name: "elm.rect.icon.line3";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GENLIST_LIST_LINE1_COLOR;
+ min: 0 1;
+ max: -1 1;
+ fixed: 0 1;
+ rel1 { relative: 0.0 3/7; to: "elm.rect.icon"; }
+ rel2 { relative: 1.0 3/7; to: "elm.rect.icon"; }
+ }
+ }
+ part {
+ name: "elm.rect.icon.line4";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GENLIST_LIST_LINE1_COLOR;
+ min: 0 1;
+ max: -1 1;
+ fixed: 0 1;
+ rel1 { relative: 0.0 4/7; to: "elm.rect.icon"; }
+ rel2 { relative: 1.0 4/7; to: "elm.rect.icon"; }
+ }
+ }
+ part {
+ name: "elm.rect.icon.line5";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GENLIST_LIST_LINE1_COLOR;
+ min: 0 1;
+ max: -1 1;
+ fixed: 0 1;
+ rel1 { relative: 0.0 5/7; to: "elm.rect.icon"; }
+ rel2 { relative: 1.0 5/7; to: "elm.rect.icon"; }
+ }
+ }
+ part {
+ name: "elm.rect.icon.line6";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GENLIST_LIST_LINE1_COLOR;
+ min: 0 1;
+ max: -1 1;
+ fixed: 0 1;
+ rel1 { relative: 0.0 6/7; to: "elm.rect.icon"; }
+ rel2 { relative: 1.0 6/7; to: "elm.rect.icon"; }
+ }
+ }
+ part {
+ name: "elm.icon.1";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; offset: 20 0; to: "elm.rect.icon"; }
+ rel2 { relative: 1.0 1/7; offset: -20 0; to: "elm.rect.icon"; }
+ }
+ }
+ part {
+ name: "elm.icon.2";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 1/7; offset: 20 0; to: "elm.rect.icon"; }
+ rel2 { relative: 1.0 2/7; offset: -20 0; to: "elm.rect.icon"; }
+ }
+ }
+ part {
+ name: "elm.icon.3";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 2/7; offset: 20 0; to: "elm.rect.icon"; }
+ rel2 { relative: 1.0 3/7; offset: -20 0; to: "elm.rect.icon"; }
+ }
+ }
+ part {
+ name: "elm.icon.4";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 3/7; offset: 20 0; to: "elm.rect.icon"; }
+ rel2 { relative: 1.0 4/7; offset: -20 0; to: "elm.rect.icon"; }
+ }
+ }
+ part {
+ name: "elm.icon.5";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 4/7; offset: 20 0; to: "elm.rect.icon"; }
+ rel2 { relative: 1.0 5/7; offset: -20 0; to: "elm.rect.icon"; }
+ }
+ }
+ part {
+ name: "elm.icon.6";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 5/7; offset: 20 0; to: "elm.rect.icon"; }
+ rel2 { relative: 1.0 6/7; offset: -20 0; to: "elm.rect.icon"; }
+ }
+ }
+ part {
+ name: "elm.icon.7";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 6/7; offset: 20 0; to: "elm.rect.icon"; }
+ rel2 { relative: 1.0 1.0; offset: -20 0; to: "elm.rect.icon"; }
+ }
+ }
+ part {
+ name: "elm.icon.type";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ min: 160 74;
+ max: 160 74;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "elm.icon.edit"; }
+ rel2 { relative: 0.0 1.0; to_x: "elm.icon.edit"; }
+ }
+ }
+ part {
+ name: "elm.icon.edit";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ min: 106 74;
+ max: 106 74;
+ fixed: 1 1;
+ align: 1.0 0.5;
+ rel1 { relative: 1.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+ }
+ }
+}
diff --git a/lib/edc/list.edc b/lib/edc/list.edc
new file mode 100755
index 0000000..7ebc5b0
--- /dev/null
+++ b/lib/edc/list.edc
@@ -0,0 +1,170 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+collections
+{
+ group
+ {
+ name: "search_layout_list";
+ parts
+ {
+ part
+ {
+ name: "bg_search";
+ type: RECT;
+ mouse_events: 1;
+ description
+ {
+ state: "default" 0.0;
+ color: 255 0 0 0;
+ }
+ }
+ part
+ {
+ name: "add_button_show_swall_search";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ align: 0.0 0.0;
+ min: 0 90;
+ fixed: 0 1;
+ rel1 { relative: 0.13 0.0; to: "bg_search"; }
+ rel2 { relative: 1.0 1.0; to: "bg_search"; }
+ }
+ }
+ part
+ {
+ name: "add_button_hide_swall_search";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ align: 0.0 0.0;
+ min: 0 90;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0; to: "bg_search"; }
+ rel2 { relative: 1.0 1.0; to: "bg_search"; }
+ }
+ }
+ part {
+ name: "button_add";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ align: 0.0 0.0;
+ min: 40 40;
+ max: 40 40;
+ fixed: 0 1;
+ rel1 { relative: 0.02 0.1; to: "bg_search"; }
+ rel2 { relative: 0.0 0.85; to: "add_button_show_swall_search"; }
+ }
+ }
+ }
+ }
+ group {
+ name: "genlist";
+ parts
+ {
+ part {
+ name: "bg";
+ type: RECT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "searchbar_layout";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ align: 0.0 0.0;
+ min: 0 90;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0; to: "bg"; }
+ rel2 { relative: 1.0 0.0; to: "bg"; }
+ }
+ }
+ part {
+ name: "content";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 1.0; to: "searchbar_layout"; }
+ rel2.to: "bg";
+ }
+ }
+ part {
+ name: "fastscroll";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ rel1.to: "content";
+ rel2.to: "content";
+ }
+ }
+ }
+ }
+ group {
+ name: "genlist_no_searchbar";
+ parts
+ {
+ part {
+ name: "bg";
+ type: RECT;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "content";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ }
+ part {
+ name: "fastscroll";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ rel1.to: "content";
+ rel2.to: "content";
+ }
+ }
+ }
+ }
+}
diff --git a/lib/edc/list_theme.edc b/lib/edc/list_theme.edc
new file mode 100755
index 0000000..51da8d1
--- /dev/null
+++ b/lib/edc/list_theme.edc
@@ -0,0 +1,766 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+#define GENLIST_PART_BG_COLOR_INC 248 246 239 255
+#define GENLIST_PART_LIST_LINE_COLOR_INC 211 209 203 255
+#define GENLIST_PART_LIST_PRESS_COLOR_INC 87 135 194 255
+#define GENLIST_PART_LIST_COUNT_COLOR_INC 124 124 124 255
+#define GENLIST_PART_LIST_TEXT_DEFAULT 0 0 0 255
+#define GENLIST_PART_TEXT_PRESS_COLOR 250 250 250 255
+#define GENLIST_PART_LIST_TEXT_SUB_DEFAULT 0 0 0 128
+
+#define GENLIST_PART_BASE( param_item_height ) \
+part { \
+ name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: GENLIST_PART_BG_COLOR_INC; \
+ } \
+}
+
+#define GENLIST_PART_BOTTOM_LINE \
+part { name: "bottom_line"; \
+ type: RECT; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ min: 0 1; \
+ fixed: 0 1; \
+ visible: 1; \
+ color: GENLIST_PART_LIST_LINE_COLOR_INC; \
+ rel1 { \
+ relative: 0.0 1.0; \
+ offset: 0 -1; \
+ } \
+ } \
+}
+
+#define GENLIST_PART_PADDING_LEFT( param_padding_size ) \
+part { \
+ name: "elm.padding.left"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: param_padding_size 0; \
+ fixed: 1 0; \
+ visible: 0; \
+ rel2.relative: 0.0 1.0; \
+ align: 0.0 0.0; \
+ } \
+}
+
+#define GENLIST_PART_PADDING_RIGHT( param_padding_size ) \
+part { \
+ name: "elm.padding.right"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: param_padding_size 0; \
+ fixed: 1 0; \
+ visible: 0; \
+ rel1.relative: 1.0 0.0; \
+ align: 1.0 0.0; \
+ } \
+}
+
+#define GENLIST_PART_BG_IMAGE \
+part { \
+ name: "bg_image"; \
+ type: RECT; \
+ clip_to: "disclip"; \
+ mouse_events: 0; \
+ description { \
+ state: "default" 0.0; \
+ color: GENLIST_PART_BG_COLOR_INC; \
+ } \
+ description { \
+ state: "selected" 0.0; \
+ inherit: "default" 0.0; \
+ color: GENLIST_PART_LIST_PRESS_COLOR_INC; \
+ } \
+}
+
+#define GENLIST_DESCRIPTION_FLIP_ENABLED \
+description { \
+ state: "flip_enabled" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+}
+
+collections
+{
+ styles {
+ style {
+ name: "genlist_default_textblock_style";
+ base: "font=Tizen:style=Roman text_class=list_item font_size=44 align=left color=#000000FF wrap=word ellipsis=1.0";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "tab" "\t";
+ tag: "b" "+ font=Tizen:style=Bold";
+ tag: "match" "+ color=#2A89C2";
+ }
+ style {
+ name: "genlist_default_textblock_selected_style";
+ base: "font=Tizen:style=Roman text_class=list_item font_size=44 align=left color=#F9F9F9FF wrap=word ellipsis=1.0";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "tab" "\t";
+ tag: "b" "+ font=Tizen:style=Bold";
+ tag: "match" "+ color=#F9F9F9FF";
+ }
+ }
+ /* Genlist Item */
+ group {
+ name: "elm/genlist/item/1text_center/default";
+ alias: "elm/genlist/item_odd/1text_center/default";
+ alias: "elm/genlist/item_compress/1text_center/default";
+ alias: "elm/genlist/item_compress_odd/1text_center/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ parts {
+ GENLIST_PART_BASE(130);
+ GENLIST_PART_BOTTOM_LINE
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "disclip";
+ description {
+ state: "default" 0.0;
+ color: GENLIST_PART_LIST_COUNT_COLOR_INC;
+ text {
+ font: "Tizen:style=Roman";
+ text_class: "tizen";
+ size: 44;
+ min: 0 1;
+ align: 0.5 0.5;
+ text_class: "tizen";
+ }
+ }
+ }
+ part {
+ name: "disclip";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 248 246 239 255;
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/link_list/default";
+ alias: "elm/genlist/item_odd/link_list/default";
+ alias: "elm/genlist/item_compress/link_list/default";
+ alias: "elm/genlist/item_compress_odd/link_list/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.1 elm.text.2";
+ data.item: "contents" "elm.icon.1";
+ data.item: "flips" "elm.flip.content";
+ parts {
+ GENLIST_PART_BASE(130)
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_LEFT(26)
+ GENLIST_PART_PADDING_RIGHT(24)
+ part {
+ name: "elm.icon.1";
+ type: SWALLOW;
+ clip_to: "disclip";
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 104 104;
+ max: 104 104;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ }
+ align: 1.0 0.5;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part {
+ name: "elm.padding.icon1.text1right";
+ type: RECT;
+ clip_to: "disclip";
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 4 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1.to_x: "elm.icon.1";
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.icon.1";
+ }
+ align: 1.0 0.0;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ clip_to: "disclip";
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.icon1.text1right";
+ }
+ align: 0.0 0.5;
+ color: GENLIST_PART_LIST_TEXT_DEFAULT;
+ text {
+ font: "Tizen:style=Roman";
+ size: 44;
+ min: 0 1;
+ max: 1 0;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: GENLIST_PART_TEXT_PRESS_COLOR;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part {
+ name: "elm.text.1";
+ type: TEXT;
+ clip_to: "disclip";
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ }
+ rel2 {
+ relative: 0.0 0.7;
+ to_x: "elm.padding.icon1.text1right";
+ }
+ align: 0.0 0.5;
+ color: GENLIST_PART_LIST_TEXT_DEFAULT;
+ text {
+ font: "Tizen:style=Roman";
+ size: 44;
+ min: 0 1;
+ max: 1 0;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: GENLIST_PART_TEXT_PRESS_COLOR;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part {
+ name: "elm.text.2";
+ type: TEXT;
+ clip_to: "disclip";
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 0.5;
+ to_x: "elm.padding.left";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.icon1.text1right";
+ }
+ align: 0.0 0.5;
+ color: GENLIST_PART_LIST_TEXT_DEFAULT;
+ text {
+ font: "Tizen:style=Roman";
+ size: 32;
+ min: 0 1;
+ max: 1 0;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: GENLIST_PART_TEXT_PRESS_COLOR;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part {
+ name: "elm.padding.text.right";
+ type: RECT;
+ clip_to: "disclip";
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 16 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.text";
+ }
+ rel2.to_x: "elm.text";
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "disclip";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 110;
+ }
+ }
+ part {
+ name: "elm.flip.content";
+ clip_to: "disclip";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 0.5;
+ to_x: "elm.padding.left";
+ }
+ rel2 {
+ relative: 0.0 0.5;
+ to_x: "elm.padding.right";
+ }
+ }
+ description {
+ state: "flip_enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg_image";
+ target: "elm.text";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_image";
+ target: "elm.text";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "flip_enabled";
+ signal: "elm,state,flip,enabled";
+ source: "elm";
+ action: STATE_SET "flip_enabled" 0.0;
+ target: "elm.text";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ target: "elm.icon.1";
+ target: "elm.flip.content";
+ }
+ program {
+ name: "flip_disabled";
+ signal: "elm,state,flip,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.text";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ target: "elm.icon.1";
+ target: "elm.flip.content";
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item_compress/link_list.tb/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.1 elm.text.2";
+ data.item: "contents" "elm.icon.1";
+ data.item: "flips" "elm.flip.content";
+ parts {
+ GENLIST_PART_BASE(130)
+ GENLIST_PART_BG_IMAGE
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_LEFT(26)
+ GENLIST_PART_PADDING_RIGHT(24)
+ part {
+ name: "elm.icon.1";
+ type: SWALLOW;
+ clip_to: "disclip";
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 104 104;
+ max: 104 104;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ }
+ align: 1.0 0.5;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part {
+ name: "elm.padding.icon1.left";
+ type: RECT;
+ clip_to: "disclip";
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 64 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1.to_x: "elm.icon.1";
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.icon.1";
+ }
+ align: 1.0 0.0;
+ }
+ }
+ part {
+ name: "elm.padding.icon1.left2";
+ type: RECT;
+ clip_to: "disclip";
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 134 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1.to_x: "elm.icon.1";
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.icon.1";
+ }
+ align: 1.0 0.0;
+ }
+ }
+ part {
+ name: "elm.padding.icon1.left3";
+ type: RECT;
+ clip_to: "disclip";
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 51 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1.to_x: "elm.icon.1";
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.icon.1";
+ }
+ align: 1.0 0.0;
+ }
+ }
+ part {
+ name: "elm.padding.icon1.text1right";
+ type: RECT;
+ clip_to: "disclip";
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 4 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1.to_x: "elm.icon.1";
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.icon.1";
+ }
+ align: 1.0 0.0;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXTBLOCK;
+ clip_to: "disclip";
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.icon1.text1right";
+ }
+ align: 0.0 0.5;
+ text {
+ style: "genlist_default_textblock_style";
+ min: 0 1;
+ max: 1 0;
+ align: 0.0 0.5;
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text.style: "genlist_default_textblock_selected_style";
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part {
+ name: "elm.text.1";
+ type: TEXTBLOCK;
+ clip_to: "disclip";
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ }
+ rel2 {
+ relative: 0.0 0.7;
+ to_x: "elm.padding.icon1.text1right";
+ }
+ align: 0.0 0.5;
+ text {
+ style: "genlist_default_textblock_style";
+ min: 0 1;
+ max: 1 0;
+ align: 0.0 0.5;
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text.style: "genlist_default_textblock_selected_style";
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part {
+ name: "elm.text.2";
+ type: TEXT;
+ clip_to: "disclip";
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 0.5;
+ to_x: "elm.padding.left";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.icon1.text1right";
+ }
+ align: 0.0 0.5;
+ color: GENLIST_PART_LIST_TEXT_SUB_DEFAULT;
+ text {
+ font: "Tizen:style=Roman";
+ size: 32;
+ min: 0 1;
+ max: 1 0;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: GENLIST_PART_TEXT_PRESS_COLOR;
+ }
+ GENLIST_DESCRIPTION_FLIP_ENABLED
+ }
+ part {
+ name: "elm.padding.text.right";
+ type: RECT;
+ clip_to: "disclip";
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 16 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.text";
+ }
+ rel2.to_x: "elm.text";
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "disclip";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 110;
+ }
+ }
+ part {
+ name: "elm.flip.content";
+ clip_to: "disclip";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 0.5;
+ to_x: "elm.padding.left";
+ }
+ rel2 {
+ relative: 0.0 0.5;
+ to_x: "elm.padding.right";
+ }
+ }
+ description {
+ state: "flip_enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg_image";
+ target: "elm.text";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_image";
+ target: "elm.text";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "flip_enabled";
+ signal: "elm,state,flip,enabled";
+ source: "elm";
+ action: STATE_SET "flip_enabled" 0.0;
+ target: "elm.text";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ target: "elm.icon.1";
+ target: "elm.flip.content";
+ }
+ program {
+ name: "flip_disabled";
+ signal: "elm,state,flip,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.text";
+ target: "elm.text.1";
+ target: "elm.text.2";
+ target: "elm.icon.1";
+ target: "elm.flip.content";
+ }
+ }
+ }
+}
diff --git a/lib/edc/log_item_icon.edc b/lib/edc/log_item_icon.edc
new file mode 100644
index 0000000..ac16539
--- /dev/null
+++ b/lib/edc/log_item_icon.edc
@@ -0,0 +1,75 @@
+/*
+* Copyright 2012-2013 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+/**
+* @file log_item_icon.edc
+* @brief Style for icon in log list, combining contact picture and the type of call
+* @author Sergei Kobec (s.kobec@samsung.com)
+* @date Created Nov 29, 2013 10:15
+*/
+
+collections {
+
+ group { name: "elm/layout/log.item.layout/default";
+ parts {
+ part { name: "bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.swallow.icon.1";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "bg";
+ to_y: "bg";
+ }
+ rel2 {
+ relative: 0.5 1.0;
+ to_x: "bg";
+ to_y: "bg";
+ }
+ }
+ }
+ part { name: "elm.swallow.icon.2";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ rel1 {
+ relative: 0.8 0.3;
+ to_x: "elm.swallow.icon.1";
+ to_y: "elm.swallow.icon.1";
+ }
+ rel2 {
+ relative: 1.0 0.7;
+ to_x: "bg";
+ to_y: "bg";
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/lib/edc/logdetail_theme.edc b/lib/edc/logdetail_theme.edc
new file mode 100755
index 0000000..49b8385
--- /dev/null
+++ b/lib/edc/logdetail_theme.edc
@@ -0,0 +1,1485 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#define GENLIST_PART_BG_COLOR_INC 249 249 249 255
+#define GENLIST_PART_LIST_LINE_COLOR_INC 169 169 169 255
+#define GENLIST_DIALOGUE_FONT_SUB_TITLE_COLOR_INC 102 102 102 255
+#define GENLIST_PART_LIST_TEXT_DEFAULT 0 0 0 255
+
+#define PHUG_IMAGES "../images/phoneug_images/"
+#define BUTTON_CIRCLE_STYLE_BG_MIN_MAX_INC 138 138
+#define BUTTON_CIRCLE_STYLE_CONTENT_MIN_MAX_INC 138 138
+
+#define GENLIST_BASEINFO_PART_BASE(height) \
+part { \
+ name: "base"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 height; \
+ } \
+}
+
+#define GENLIST_PART_BASE( param_item_height ) \
+part { \
+ name: "base"; \
+ type: RECT; \
+ repeat_events: 1; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 param_item_height; \
+ color: GENLIST_PART_BG_COLOR_INC; \
+ } \
+}
+#define GENLIST_PART_BOTTOM_LINE \
+part { \
+ name: "bottom_line"; \
+ type: RECT; \
+ mouse_events: 0; \
+ description { state: "default" 0.0; \
+ min: 0 1; \
+ fixed: 0 1; \
+ visible: 1; \
+ color: GENLIST_PART_LIST_LINE_COLOR_INC; \
+ rel1 { \
+ relative: 0.0 1.0; \
+ offset: 0 -1; \
+ } \
+ } \
+}
+
+#define GENLIST_PART_PADDING_TOP( param_padding_size ) \
+part { \
+ name: "elm.padding.top"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 param_padding_size; \
+ fixed: 0 1; \
+ visible: 0; \
+ rel2.relative: 1.0 0.0; \
+ align: 0.0 0.0; \
+ } \
+}
+
+#define GENLIST_PART_PADDING_BOTTOM( param_padding_size ) \
+part { \
+ name: "elm.padding.bottom"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: 0 param_padding_size; \
+ fixed: 0 1; \
+ visible: 0; \
+ rel1.relative: 0.0 1.0; \
+ align: 0.0 1.0; \
+ } \
+}
+
+#define GENLIST_PART_PADDING_LEFT( param_padding_size ) \
+part { \
+ name: "elm.padding.left"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: param_padding_size 0; \
+ fixed: 1 0; \
+ visible: 0; \
+ rel2.relative: 0.0 1.0; \
+ align: 0.0 0.0; \
+ } \
+}
+
+#define GENLIST_PART_PADDING_RIGHT( param_padding_size ) \
+part { \
+ name: "elm.padding.right"; \
+ type: RECT; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: param_padding_size 0; \
+ fixed: 1 0; \
+ visible: 0; \
+ rel1.relative: 1.0 0.0; \
+ align: 1.0 0.0; \
+ } \
+}
+
+styles {
+ style {
+ name: "baseinfo_name_textblock_style";
+ base: "font=Tizen:style=Medium text_class=tizen color=#000000 ellipsis=1.0 font_size=50";
+ }
+ style {
+ name: "baseinfo_subname_textblock_style";
+ base: "font=Tizen:style=Medium text_class=tizen color=#727272 ellipsis=1.0 font_size=32";
+ }
+ style {
+ name: "activity_textblock_style";
+ base: "font=Tizen:style=Medium text_class=tizen color=#000000 ellipsis=0.0 font_size=32 wrap=char";
+ }
+}
+collections
+{
+ group {
+ name: "elm/genlist/item/baseinfo.1text.1icon/default";
+ alias: "elm/genlist/item_odd/baseinfo.1text.1icon/default";
+ alias: "elm/genlist/item_compress/baseinfo.1text.1icon/default";
+ alias: "elm/genlist/item_compress_odd/baseinfo.1text.1icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.name";
+ data.item: "contents" "elm.icon.favorite";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(142)
+ part {
+ name: "elm.icon.image.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 88 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1.relative: 1.0 0.0;
+ }
+ }
+ part {
+ name: "elm.icon.favorite";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 56 56;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "elm.icon.image.rect";
+ rel2.to: "elm.icon.image.rect";
+ }
+ }
+ part {
+ name: "elm.text.name";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.5; offset: 16 0; to: "base"; }
+ rel2 { relative: 0.0 0.5; offset: -16 0; to: "elm.icon.image.rect"; }
+ text {
+ style: "baseinfo_name_textblock_style";
+ min: 0 1;
+ }
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/baseinfo.1text.2icon/default";
+ alias: "elm/genlist/item_odd/baseinfo.1text.2icon/default";
+ alias: "elm/genlist/item_compress/baseinfo.1text.2icon/default";
+ alias: "elm/genlist/item_compress_odd/baseinfo.1text.2icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.name";
+ data.item: "contents" "elm.icon.image elm.icon.favorite";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(142)
+ part {
+ name: "elm.icon.image.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 141 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1.relative: 1.0 0.0;
+ }
+ }
+ part {
+ name: "elm.icon.image";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "elm.icon.image.rect";
+ rel2.to: "elm.icon.image.rect";
+ }
+ }
+ part {
+ name: "elm.icon.favorite.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 88 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to: "elm.icon.image.rect"; }
+ rel2 { relative: 0.0 1.0; to: "elm.icon.image.rect"; }
+ }
+ }
+ part {
+ name: "elm.icon.favorite";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 56 56;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "elm.icon.favorite.rect";
+ rel2.to: "elm.icon.favorite.rect";
+ }
+ }
+ part {
+ name: "elm.text.name";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.5; offset: 16 0; to: "base"; }
+ rel2 { relative: 0.0 0.5; offset: -16 0; to: "elm.icon.favorite.rect"; }
+ text {
+ style: "baseinfo_name_textblock_style";
+ min: 0 1;
+ }
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/baseinfo.2text.1icon/default";
+ alias: "elm/genlist/item_odd/baseinfo.2text.1icon/default";
+ alias: "elm/genlist/item_compress/baseinfo.2text.1icon/default";
+ alias: "elm/genlist/item_compress_odd/baseinfo.2text.1icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.name elm.text.subname";
+ data.item: "contents" "elm.icon.favorite";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(142)
+ part {
+ name: "elm.icon.image.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 88 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1.relative: 1.0 0.0;
+ }
+ }
+ part {
+ name: "elm.icon.favorite";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 56 56;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "elm.icon.image.rect";
+ rel2.to: "elm.icon.image.rect";
+ }
+ }
+ part {
+ name: "elm.text.name";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 50.0/142.0; offset: 16 0; }
+ rel2 { relative: 0.0 50.0/142.0; offset: -16 0; to_x: "elm.icon.image.rect"; }
+ text {
+ style: "baseinfo_name_textblock_style";
+ min: 0 1;
+ }
+ }
+ }
+ part {
+ name: "elm.text.subname";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 101.0/142.0; offset: 16 0; to: "base"; }
+ rel2 { relative: 0.0 101.0/142.0; offset: -16 0; to_x: "elm.icon.image.rect"; }
+ text {
+ style: "baseinfo_subname_textblock_style";
+ min: 0 1;
+ }
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/baseinfo.2text.2icon/default";
+ alias: "elm/genlist/item_odd/baseinfo.2text.2icon/default";
+ alias: "elm/genlist/item_compress/baseinfo.2text.2icon/default";
+ alias: "elm/genlist/item_compress_odd/baseinfo.2text.2icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.name elm.text.subname";
+ data.item: "contents" "elm.icon.image elm.icon.favorite";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(142)
+ part {
+ name: "elm.icon.image.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 141 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1.relative: 1.0 0.0;
+ }
+ }
+ part {
+ name: "elm.icon.image";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "elm.icon.image.rect";
+ rel2.to: "elm.icon.image.rect";
+ }
+ }
+ part {
+ name: "elm.icon.favorite.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 88 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to: "elm.icon.image.rect"; }
+ rel2 { relative: 0.0 1.0; to: "elm.icon.image.rect"; }
+ }
+ }
+ part {
+ name: "elm.icon.favorite";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 56 56;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "elm.icon.favorite.rect";
+ rel2.to: "elm.icon.favorite.rect";
+ }
+ }
+ part {
+ name: "elm.text.name";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 50.0/142.0; offset: 16 0; }
+ rel2 { relative: 0.0 50.0/142.0; offset: -16 0; to_x: "elm.icon.favorite.rect"; }
+ text {
+ style: "baseinfo_name_textblock_style";
+ min: 0 1;
+ }
+ }
+ }
+ part {
+ name: "elm.text.subname";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 101.0/142.0; offset: 16 0; to: "base"; }
+ rel2 { relative: 0.0 101.0/142.0; offset: -16 0; to_x: "elm.icon.favorite.rect"; }
+ text {
+ style: "baseinfo_subname_textblock_style";
+ min: 0 1;
+ }
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/baseinfo.3text.1icon/default";
+ alias: "elm/genlist/item_odd/baseinfo.3text.1icon/default";
+ alias: "elm/genlist/item_compress/baseinfo.3text.1icon/default";
+ alias: "elm/genlist/item_compress_odd/baseinfo.3text.1icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.name elm.text.subname elm.text.subname2";
+ data.item: "contents" "elm.icon.favorite";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(142)
+ part {
+ name: "elm.icon.image.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 88 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1.relative: 1.0 0.0;
+ }
+ }
+ part {
+ name: "elm.icon.favorite";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 56 56;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "elm.icon.image.rect";
+ rel2.to: "elm.icon.image.rect";
+ }
+ }
+ part {
+ name: "elm.text.name";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 34.0/142.0; offset: 16 0; }
+ rel2 { relative: 0.0 34.0/142.0; offset: -16 0; to_x: "elm.icon.image.rect"; }
+ text {
+ style: "baseinfo_name_textblock_style";
+ min: 0 1;
+ }
+ }
+ }
+ part {
+ name: "elm.text.subname";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 79.0/142.0; offset: 16 0; to: "base"; }
+ rel2 { relative: 0.0 79.0/142.0; offset: -16 0; to_x: "elm.icon.image.rect"; }
+ text {
+ style: "baseinfo_subname_textblock_style";
+ min: 0 1;
+ }
+ }
+ }
+ part {
+ name: "elm.text.subname2";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 117.0/142.0; offset: 16 0; to: "base"; }
+ rel2 { relative: 0.0 117.0/142.0; offset: -16 0; to_x: "elm.icon.image.rect"; }
+ text {
+ style: "baseinfo_subname_textblock_style";
+ min: 0 1;
+ }
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/baseinfo.3text.2icon/default";
+ alias: "elm/genlist/item_odd/baseinfo.3text.2icon/default";
+ alias: "elm/genlist/item_compress/baseinfo.3text.2icon/default";
+ alias: "elm/genlist/item_compress_odd/baseinfo.3text.2icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.name elm.text.subname elm.text.subname2";
+ data.item: "contents" "elm.icon.image elm.icon.favorite";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(142)
+ part {
+ name: "elm.icon.image.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 141 0;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1.relative: 1.0 0.0;
+ }
+ }
+ part {
+ name: "elm.icon.image";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "elm.icon.image.rect";
+ rel2.to: "elm.icon.image.rect";
+ }
+ }
+ part {
+ name: "elm.icon.favorite.rect";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 88 0;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to: "elm.icon.image.rect"; }
+ rel2 { relative: 0.0 1.0; to: "elm.icon.image.rect"; }
+ }
+ }
+ part {
+ name: "elm.icon.favorite";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 56 56;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1.to: "elm.icon.favorite.rect";
+ rel2.to: "elm.icon.favorite.rect";
+ }
+ }
+ part {
+ name: "elm.text.name";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 34.0/142.0; offset: 16 0; }
+ rel2 { relative: 0.0 34.0/142.0; offset: -16 0; to_x: "elm.icon.favorite.rect"; }
+ text {
+ style: "baseinfo_name_textblock_style";
+ min: 0 1;
+ }
+ }
+ }
+ part {
+ name: "elm.text.subname";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 79.0/142.0; offset: 16 0; to: "base"; }
+ rel2 { relative: 0.0 79.0/142.0; offset: -16 0; to_x: "elm.icon.favorite.rect"; }
+ text {
+ style: "baseinfo_subname_textblock_style";
+ min: 0 1;
+ }
+ }
+ }
+ part {
+ name: "elm.text.subname2";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 117.0/142.0; offset: 16 0; to: "base"; }
+ rel2 { relative: 0.0 117.0/142.0; offset: -16 0; to_x: "elm.icon.favorite.rect"; }
+ text {
+ style: "baseinfo_subname_textblock_style";
+ min: 0 1;
+ }
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/logdetail.title/default";
+ alias: "elm/genlist/item_odd/logdetail.title/default";
+ alias: "elm/genlist/item_compress/logdetail.title/default";
+ alias: "elm/genlist/item_compress_odd/logdetail.title/default";
+ data.item: "stacking" "above";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ parts {
+ GENLIST_BASEINFO_PART_BASE(77);
+ part {
+ name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: GENLIST_DIALOGUE_FONT_SUB_TITLE_COLOR_INC;
+ text {
+ font: "Tizen:style=Medium";
+ text_class: "tizen";
+ size: 28;
+ min: 0 1;
+ align: 0.0 1.0;
+ }
+ rel1 { offset: 10 0; }
+ rel2 { offset: -10 -10; }
+ }
+ }
+ }
+ }
+
+ group {
+ name: "elm/genlist/item/logdetail.3icon/default";
+ alias: "elm/genlist/item_odd/logdetail.3icon/default";
+ alias: "elm/genlist/item_compress/logdetail.3icon/default";
+ alias: "elm/genlist/item_compress_odd/logdetail.3icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "contents" "elm.icon.1 elm.icon.2 elm.icon.3";
+
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ repeat_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 200;
+ }
+ }
+ part {
+ name: "elm.icon.1";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min:0 138;
+ fixed: 0 1;
+ rel1.relative: 38/720 0.5;
+ rel2.relative: (38+138)/720 0.5;
+ align: 0.5 0.5;
+ }
+ }
+
+ part {
+ name: "elm.icon.2";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 138;
+ fixed: 0 1;
+ rel1.relative: (38+138+115)/720 0.5;
+ rel2.relative: (38+138+115+138)/720 0.5;
+ align: 0.5 0.5;
+ }
+ }
+
+ part {
+ name: "elm.icon.3";
+ type: SWALLOW;
+ scale:1 ;
+ description {
+ state: "default" 0.0;
+ min: 0 138;
+ fixed: 0 1;
+ rel1.relative: (38+138+115+138+115)/720 0.5;
+ rel2.relative: (38+138+115+138+115+138)/720 0.5;
+ align: 0.5 0.5;
+ }
+ }
+ }
+ }
+
+ group {
+ name: "elm/genlist/item/history_list/default";
+ alias: "elm/genlist/item_odd/history_list/default";
+ alias: "elm/genlist/item_compress/history_list/default";
+ alias: "elm/genlist/item_compress_odd/history_list/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
+ data.item: "contents" "elm.icon.1 elm.icon.2";
+ data.item: "flips" "elm.flip.content";
+ parts {
+ GENLIST_PART_BASE(128)
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_TOP(10)
+ GENLIST_PART_PADDING_BOTTOM(10)
+ GENLIST_PART_PADDING_LEFT(16)
+ GENLIST_PART_PADDING_RIGHT(16)
+ part {
+ name: "elm.icon.1";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.bottom";
+ }
+ align: 0.0 0.5;
+ }
+ }
+ part {
+ name: "elm.padding.icon1.right";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 16 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.icon.1";
+ }
+ rel2.to_x: "elm.icon.1";
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.icon.2";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.text.1";
+ }
+ align: 1.0 0.5;
+ }
+ }
+ part {
+ name: "elm.padding.icon2.left";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 16 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "elm.icon.2";
+ }
+ rel2.to_x: "elm.icon.2";
+ align: 1.0 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.text.1";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 60;
+ fixed: 0 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.icon2.left";
+ to_y: "elm.padding.top";
+ }
+ align: 0.0 0.0;
+ color: GENLIST_PART_LIST_TEXT_DEFAULT;
+ text {
+ font: "Tizen:style=Roman";
+ size: 44;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ }
+ part {
+ name: "elm.text.2";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon1.right";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.8 0.0;
+ to_x: "elm.text.1";
+ to_y: "elm.padding.bottom";
+ }
+ color: 68 68 68 255;
+ text {
+ font: "Tizen:style=Medium";
+ size: 32;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "tizen";
+ }
+ }
+ }
+ part {
+ name: "elm.text.3";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.text.2";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ offset: 5 0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ color: 68 68 68 255;
+ text {
+ font: "Tizen:style=Medium";
+ size: 32;
+ min: 0 1;
+ align: 1.0 0.5;
+ text_class: "tizen";
+ }
+ }
+ }
+ part {
+ name: "disclip";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/activity_list/default";
+ alias: "elm/genlist/item_odd/activity_list/default";
+ alias: "elm/genlist/item_compress/activity_list/default";
+ alias: "elm/genlist/item_compress_odd/activity_list/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.1 elm.text.2";
+ data.item: "contents" "elm.icon.1 elm.icon.2";
+ data.item: "flips" "elm.flip.content";
+ parts {
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_TOP(10)
+ GENLIST_PART_PADDING_BOTTOM(10)
+ GENLIST_PART_PADDING_LEFT(16)
+ GENLIST_PART_PADDING_RIGHT(16)
+ part {
+ name: "elm.icon.1";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.bottom";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.bottom";
+ }
+ align: 0.0 1.0;
+ }
+ }
+ part {
+ name: "elm.padding.icon1.right";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 16 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.icon.1";
+ }
+ rel2.to_x: "elm.icon.1";
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.padding.icon1.top";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 16;
+ fixed: 0 1;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ }
+ rel2.to_y: "elm.icon.1";
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.icon.2";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 321 321;
+ max: 321 321;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part {
+ name: "elm.text.2";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon1.right";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ color: 68 68 68 255;
+ text {
+ font: "Tizen:style=Medium";
+ size: 32;
+ min: 0 1;
+ align: 0.0 1.0;
+ text_class: "tizen";
+ }
+ }
+ }
+ part {
+ name: "elm.text.1";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.icon.2";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.icon.2";
+ }
+ align: 0.0 0.0;
+ color: GENLIST_PART_LIST_TEXT_DEFAULT;
+ text {
+ style: "activity_textblock_style";
+ min: 0 1;
+ align: 0.0 1.0;
+ }
+ }
+ }
+ part {
+ name: "disclip";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/activity_list_no_img/default";
+ alias: "elm/genlist/item_odd/activity_list_no_img/default";
+ alias: "elm/genlist/item_compress/activity_list_no_img/default";
+ alias: "elm/genlist/item_compress_odd/activity_list_no_img/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.1 elm.text.2";
+ data.item: "contents" "elm.icon.1";
+ data.item: "flips" "elm.flip.content";
+ parts {
+ GENLIST_PART_BOTTOM_LINE
+ GENLIST_PART_PADDING_TOP(10)
+ GENLIST_PART_PADDING_BOTTOM(10)
+ GENLIST_PART_PADDING_LEFT(16)
+ GENLIST_PART_PADDING_RIGHT(16)
+ part {
+ name: "elm.icon.1";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 32 32;
+ max: 32 32;
+ fixed: 1 1;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.bottom";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.bottom";
+ }
+ align: 0.0 1.0;
+ }
+ }
+ part {
+ name: "elm.padding.icon1.right";
+ clip_to: "disclip";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 16 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.icon.1";
+ }
+ rel2.to_x: "elm.icon.1";
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.text.2";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.icon1.right";
+ to_y: "elm.text.1";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ color: 68 68 68 255;
+ text {
+ font: "Tizen:style=Medium";
+ size: 32;
+ min: 0 1;
+ align: 0.0 1.0;
+ text_class: "tizen";
+ }
+ }
+ }
+ part {
+ name: "elm.text.1";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ to_y: "elm.icon.1";
+ }
+ color: GENLIST_PART_LIST_TEXT_DEFAULT;
+ text {
+ style: "activity_textblock_style";
+ min: 0 1;
+ align: 0.0 1.0;
+ }
+ }
+ }
+ part {
+ name: "disclip";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+ }
+ }
+ group {
+ name: "elm/genlist/item/logdetail.5icon/default";
+ alias: "elm/genlist/item_odd/logdetail.5icon/default";
+ alias: "elm/genlist/item_compress/logdetail.5icon/default";
+ alias: "elm/genlist/item_compress_odd/logdetail.5icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "contents" "elm.icon.1 elm.icon.2 elm.icon.3 elm.icon.4 elm.icon.5";
+
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ repeat_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 112;
+ }
+ }
+ part {
+ name: "elm.icon.1";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min:0 74;
+ fixed: 0 1;
+ rel1.relative: 0.021 0.5;
+ rel2.relative: 0.196 0.5;
+ align: 0.5 0.5;
+ }
+ }
+
+ part {
+ name: "elm.icon.2";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 74;
+ fixed: 0 1;
+ rel1.relative: 0.218 0.5;
+ rel2.relative: 0.392 0.5;
+ align: 0.5 0.5;
+ }
+ }
+
+ part {
+ name: "elm.icon.3";
+ type: SWALLOW;
+ scale:1 ;
+ description {
+ state: "default" 0.0;
+ min: 0 74;
+ fixed: 0 1;
+ rel1.relative: 0.414 0.5;
+ rel2.relative: 0.588 0.5;
+ align: 0.5 0.5;
+ }
+ }
+ part {
+ name: "elm.icon.4";
+ type: SWALLOW;
+ scale:1 ;
+ description {
+ state: "default" 0.0;
+ min: 0 74;
+ fixed: 0 1;
+ rel1.relative: 0.61 0.5;
+ rel2.relative: 0.783 0.5;
+ align: 0.5 0.5;
+ }
+ }
+ part {
+ name: "elm.icon.5";
+ type: SWALLOW;
+ scale:1 ;
+ description {
+ state: "default" 0.0;
+ min: 0 74;
+ fixed: 0 1;
+ rel1.relative: 0.806 0.5;
+ rel2.relative: 0.979 0.5;
+ align: 0.5 0.5;
+ }
+ }
+ }
+ }
+ group { name: "elm/button/base/logdetail.circle/empty";
+ alias: "elm/button/base/logdetail.circle/empty";
+ images {
+ image: PHUG_IMAGES"C01-4_circle_button.png" COMP;
+ image: PHUG_IMAGES"C01-4_circle_button_press.png" COMP;
+ }
+ parts {
+ part { name: "button_image";
+ scale: 1;
+ description { state: "default" 0.0;
+ min: BUTTON_CIRCLE_STYLE_BG_MIN_MAX_INC;
+ max: BUTTON_CIRCLE_STYLE_BG_MIN_MAX_INC;
+ fixed: 1 1;
+ image.normal: PHUG_IMAGES"C01-4_circle_button.png";
+ }
+ description { state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: PHUG_IMAGES"C01-4_circle_button_press.png";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: PHUG_IMAGES"C01-4_circle_button.png";
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ clip_to: "icon_clipper";
+ scale: 1;
+ description { state: "default" 0.0;
+ min: BUTTON_CIRCLE_STYLE_CONTENT_MIN_MAX_INC;
+ max: BUTTON_CIRCLE_STYLE_CONTENT_MIN_MAX_INC;
+ fixed: 1 1;
+ visible: 0;
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "visible" 0.0;
+ }
+ }
+ part { name: "icon_clipper";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ color: 101 101 101 255;
+ }
+ description { state: "visible" 0.0;
+ color: 248 246 239 255;
+ }
+ description { state: "disabled" 0.0;
+ color: 101 101 101 76;
+ }
+ }
+ part { name: "over1";
+ type: RECT;
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "over2";
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "disabler";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ visible: 0;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ program { name: "button_click";
+ signal: "mouse,down,1";
+ source: "over1";
+ action: SIGNAL_EMIT "elm,action,press" "";
+ after: "button_click_anim";
+ }
+ program { name: "button_click_anim";
+ action: STATE_SET "clicked" 0.0;
+ target: "button_image";
+ target: "icon_clipper";
+ }
+ program { name: "touch_snd";
+ signal: "mouse,clicked,1";
+ source: "over1";
+// action: PLAY_SAMPLE "touch_sound" 1.0;
+ after: button_unclick2;
+ }
+ program { name: "button_unclick2";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ program { name: "button_unclick";
+ signal: "mouse,up,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ after: "button_unclick_anim";
+ }
+ program { name: "button_unclick_anim";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "icon_clipper";
+ }
+ program { name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disabler";
+ target: "button_image";
+ target: "icon_clipper";
+ }
+ program { name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disabler";
+ target: "button_image";
+ target: "icon_clipper";
+ }
+ program { name: "icon_show";
+ signal: "elm,state,icon,visible";
+ source: "elm";
+ action: STATE_SET "visible" 0.0;
+ target: "elm.swallow.content";
+ }
+ program { name: "icon_hide";
+ signal: "elm,state,icon,hidden";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ }
+ }
+ }
+
+ group {
+ name: "elm/genlist/item/logdetail.2icon/default";
+ alias: "elm/genlist/item_odd/logdetail.2icon/default";
+ alias: "elm/genlist/item_compress/logdetail.2icon/default";
+ alias: "elm/genlist/item_compress_odd/logdetail.2icon/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "contents" "elm.icon.1 elm.icon.2";
+
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ repeat_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 120;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.icon.1";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min:0 78;
+ fixed: 0 1;
+ rel1.relative: 170/720 0.5;
+ rel2.relative: (170+190)/720 0.5;
+ align: 0.5 0.5;
+ }
+ }
+
+ part {
+ name: "elm.icon.2";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 78;
+ fixed: 0 1;
+ rel1.relative: (170+190+10)/720 0.5;
+ rel2.relative: (170+190+10+190)/720 0.5;
+ align: 0.5 0.5;
+ }
+ }
+ }
+ }
+}
diff --git a/lib/edc/nocontent_layout.edc b/lib/edc/nocontent_layout.edc
new file mode 100755
index 0000000..22eedf7
--- /dev/null
+++ b/lib/edc/nocontent_layout.edc
@@ -0,0 +1,109 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#define IMAGE_PATH "../images/contact_images/"
+
+styles {
+ style {
+ name: "layout_textblock_style";
+ base: "font=Tizen:style=Regular text_class=tizen_medium font_size=32 color=#ffffff align=center wrap=mixed";
+ }
+}
+collections {
+ group {
+ images {
+ image: IMAGE_PATH"00_Nocontents_picture.png" COMP;
+ }
+ name: "nocontent_layout";
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "top.padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ fixed: 0 1;
+ min: 0 215;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 0.0; to: "base"; }
+ rel2 { relative: 1.0 0.0; to: "base"; }
+ }
+ }
+ part {
+ name: "image";
+ type: IMAGE;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 280 280;
+ rel1 { relative: 0.0 1.0; to: "top.padding"; }
+ rel2 { relative: 1.0 1.0; to: "top.padding"; }
+ align: 0.5 0.5;
+ image {
+ normal: IMAGE_PATH"00_Nocontents_picture.png";
+ }
+ aspect: 1.0 1.0;
+ aspect_preference: BOTH;
+ }
+ }
+ part {
+ name: "middle.padding";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ fixed: 0 1;
+ min: 0 38;
+ align: 0.5 0.0;
+ rel1 { relative: 0.0 1.0; to: "image"; }
+ rel2 { relative: 1.0 1.0; to: "image"; }
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 0 165;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to_x: "base"; to_y: "middle.padding"; }
+ rel2 { relative: 1.0 1.0; to_x: "base"; to_y: "middle.padding"; }
+ color: 128 128 128 255;
+ text {
+ min: 0 0;
+ max: 0 1;
+ style: "layout_textblock_style";
+ align: 0.5 0.5;
+ }
+ }
+ }
+ }
+ }
+}
+
diff --git a/lib/edc/progress.edc b/lib/edc/progress.edc
new file mode 100755
index 0000000..fa53a45
--- /dev/null
+++ b/lib/edc/progress.edc
@@ -0,0 +1,191 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+collections {
+ group { name: "popup_center_text_progressview";
+ parts{
+ part {
+ name: "pad_t";
+ scale : 1;
+ mouse_events: 0;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 0 0;
+ fixed: 0 1;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "pad_l";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "pad_r";
+ }
+ }
+ }
+ part {
+ name: "pad_l";
+ scale: 1;
+ description { state: "default" 0.0;
+ min : 0 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "pad_r";
+ scale: 1;
+ description { state: "default" 0.0;
+ min : 0 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ align: 1.0 0.0;
+ }
+ }
+ part{ name:"elm.swallow.content";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.5;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.2 1.0;
+ to: "pad_t";
+ }
+ rel2 {
+ relative: 0.8 0.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "pad_b";
+ scale : 1;
+ mouse_events: 0;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 0 90;
+ fixed: 0 1;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "pad_l";
+ to_y: "pad_bm";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "pad_r";
+ to_y: "pad_bm";
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ type: SWALLOW;
+ scale : 1;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.5;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "pad_b";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "pad_bm";
+
+ scale : 1;
+ mouse_events: 0;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ align: 0.0 1.0;
+ min: 0 0;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "pad_l";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "pad_r";
+ }
+ }
+ }
+ part { name: "elm.text.subtext1";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ text {
+ font: "Tizen:style=Medium";
+ size: 30;
+ min: 0 0;
+ align: 0.0 0.5;
+ text_class: "tizen";
+ }
+ color: 128 128 128 255;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "pad_bm";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_bm";
+ }
+ }
+ }
+ part { name: "elm.text.subtext2";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ text {
+ font: "Tizen:style=Medium";
+ size: 30;
+ min: 0 0;
+ align: 1.0 0.5;
+ text_class: "tizen";
+ }
+ color: 128 128 128 255;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "pad_bm";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_bm";
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/lib/edc/selectioninfo.edc b/lib/edc/selectioninfo.edc
new file mode 100755
index 0000000..54ffc8b
--- /dev/null
+++ b/lib/edc/selectioninfo.edc
@@ -0,0 +1,81 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+collections {
+ group {
+ name: "selectioninfo_layout";
+ parts {
+ part {
+ name: "contents";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.0;
+ rel2 {
+ relative: 1.0 0.0;
+ to: "toolbar";
+ }
+ }
+ }
+ part {
+ name: "selectioninfo";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel2 {
+ relative: 1.0 0.0;
+ to: "toolbar";
+ }
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "toolbar";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ max: 999999 0;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "show";
+ signal: "show,selection,info";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "selectioninfo";
+ }
+ program {
+ name: "hide";
+ signal: "hide,selection,info";
+ source: "elm";
+ action: STATE_SET "hide" 0.0;
+ target: "selectioninfo";
+ }
+ }
+ }
+}
diff --git a/lib/edc/speeddial_theme.edc b/lib/edc/speeddial_theme.edc
new file mode 100755
index 0000000..088d6fe
--- /dev/null
+++ b/lib/edc/speeddial_theme.edc
@@ -0,0 +1,157 @@
+/*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+#define WIDTH 720
+#define MIN_SIZE (WIDTH/3)
+#define MAX_SIZE (217)
+
+collections {
+ group{
+ name: "elm/gengrid/item/gridtext_speeddial/default";
+ data.item: "texts" "elm.text elm.text.number";
+ data.item: "contents" "elm.swallow.icon elm.swallow.check.icon";
+
+ parts{
+ part{
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+ part {
+ name: "icon_bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ max: MAX_SIZE MAX_SIZE;
+ fixed: 1 1;
+ visible: 1;
+// color: 51 51 51 200;
+ rel1 { relative: 0.0 0.0; to: "bg"; }
+ rel2 { relative: 1.0 1.0; to: "bg"; }
+ }
+ }
+ part {
+ name: "elm.swallow.icon.bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ color: 190 189 189 255;
+ rel1 { relative: 0.0 0.0; to: "icon_bg"; }
+ rel2 { relative: 1.0 1.0; offset: 0 0; to: "icon_bg"; }
+ }
+ }
+ part{
+ name: "elm.swallow.icon";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.icon.bg"; }
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.icon.bg"; }
+ }
+ }
+ part {
+ name: "label_bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: MAX_SIZE 37;
+ fixed: 1 1;
+ align: 0.0 1.0;
+ visible: 1;
+ color: 0 0 0 77;
+ rel1 { relative: 0.0 1.0; offset: 0 0; to: "elm.swallow.icon.bg"; }
+ rel2 { relative: 1.0 1.0; offset: 0 0; to: "elm.swallow.icon.bg"; }
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "label_bg"; }
+ rel2 { relative: 1.0 1.0; to: "label_bg"; }
+ color: 255 255 255 255;
+ color2: 0 0 0 185;
+ color3: 0 0 0 185;
+ text {
+ font: "Tizen:style=Medium";
+ text_class: "tizen";
+ size: 26;
+ align: 0.5 0.5;
+ }
+ }
+ }
+ part {
+ name: "number_label_bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 40 40;
+ fixed: 1 1;
+ align: 1.0 0.0;
+ visible: 0;
+ rel1 { relative: 1.0 0.0; offset: -8 +5; to: "elm.swallow.icon.bg"; }
+ rel2 { relative: 1.0 0.0; offset: -8 +5; to: "elm.swallow.icon.bg"; }
+ }
+ }
+ part {
+ name: "elm.text.number";
+ type: TEXT;
+ effect: SHADOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: "number_label_bg"; }
+ rel2 { relative: 1.0 1.0; to: "number_label_bg"; }
+ color: 255 255 255 255;
+ color2: 0 0 0 185;
+ color3: 0 0 0 185;
+ text {
+ font: "Tizen:style=Medium";
+ text_class: "tizen";
+ size: 40;
+ align: 0.5 0.5;
+ }
+ }
+ }
+ part {
+ name: "elm.swallow.check.icon";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ rel1 { relative: 0.0 0.0; to: "elm.swallow.icon";}
+ rel2 { relative: 1.0 1.0; to: "elm.swallow.icon";}
+ }
+ }
+ }
+ }
+}
diff --git a/lib/favor/CMakeLists.txt b/lib/favor/CMakeLists.txt
new file mode 100755
index 0000000..80a306b
--- /dev/null
+++ b/lib/favor/CMakeLists.txt
@@ -0,0 +1,9 @@
+LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
+
+FILE(GLOB FAVOR_SRCS *.cpp)
+
+ADD_LIBRARY(${FAVOR_LIB} STATIC ${FAVOR_SRCS})
+SET_TARGET_PROPERTIES(${FAVOR_LIB} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS})
+TARGET_LINK_LIBRARIES(${FAVOR_LIB} ${COMMON_LIB} ${ug_pkgs_LDFLAGS} ${CT_DETAILS} ${CT_LIST})
+ADD_DEPENDENCIES(${FAVOR_LIB} favorites_theme_build)
+ADD_DEPENDENCIES(${TARGET} favorites_theme_build contact_button_edj_build)
diff --git a/lib/favor/include/ct-favor.h b/lib/favor/include/ct-favor.h
new file mode 100755
index 0000000..6a75be3
--- /dev/null
+++ b/lib/favor/include/ct-favor.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CT_FAVOR_H__
+#define __CT_FAVOR_H__
+
+#include "phone-common.h"
+#include <map>
+
+enum
+{
+ PH_FAVOR_MODE_DEFAULT,
+ PH_FAVOR_MODE_EDIT,
+};
+
+typedef std::map<int, ph_favor_info*> CheckMap;
+
+struct ph_favorite_data: public Common::View
+{
+ ph_favorite_data();
+ Evas_Object *mf_layout;
+ Evas_Object *box;
+ Evas_Object *favor_gengrid;
+ Evas_Object *mf_gengrid;
+ Evas_Object *ctx_popup;
+ Evas_Object *navi_button;
+ Eina_List *favor_list;
+ Eina_List *mf_list;
+ Eina_Bool longpressed;
+ Ecore_Timer *update_timer_contact;
+ Ecore_Timer *update_timer_favor;
+ Ecore_Timer *update_timer_log;
+ int list_mode;
+ int selected_person_id;
+ int checked_cnt;
+ int favor_list_count;
+ int mf_list_count;
+ int readed_n;
+ int version;
+ int ug_request;
+ int ug_cnt_max;
+ int touch_x;
+ int touch_y;
+ int mfc_option;
+ bool is_background;
+ bool is_mf_changed;
+ bool favor_move;
+ bool updating;
+ char *ug_data;
+ Ecore_Idler *list_idler;
+ ph_progress_info *p_info;
+ CheckMap itemState;
+};
+
+Evas_Object* phone_favor_create_view(ph_view_info *view_info);
+void phone_favor_set_navi(Evas_Object *base, int mode);
+void phone_favor_view_reset(Evas_Object *base);
+void phone_favor_view_language_changed(Evas_Object *base);
+void phone_favor_set_background(Evas_Object *obj, bool is_background);
+void phone_favor_edit_mode_start(ph_favorite_data *favor_d);
+
+#endif /* __CT_FAVOR_H__ */
+
diff --git a/lib/favor/ph-favorite-edit-view.cpp b/lib/favor/ph-favorite-edit-view.cpp
new file mode 100755
index 0000000..da7b405
--- /dev/null
+++ b/lib/favor/ph-favorite-edit-view.cpp
@@ -0,0 +1,606 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <ui-gadget-module.h>
+
+#include "phone.h"
+#include "ct-favor.h"
+#include "ph-favorite-view.h"
+#include "ph-favorite-edit-view.h"
+#include "ct-list.h"
+
+#define FAVORITES_THEME "favorites_theme"
+#define FAVORITES_THEME_EDIT_NO_EFFECT "favorites_theme/edit_no_effect"
+#define FAVORITES_THEME_EDIT "favorites_theme/edit"
+
+static void favor_edit_del(ph_favorite_data *favor_d);
+
+static void favor_edit_del_cb(int err, void *data)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ ph_progress_info *p_info = NULL;
+
+ p_retm_if(NULL == favor_d, "Invalid parameter(favor_d is NULL)");
+ p_info = favor_d->p_info;
+ p_retm_if(NULL == p_info, "Invalid parameter(p_info is NULL)");
+
+ if (p_info->update_list)
+ {
+ contacts_list_destroy(p_info->update_list, true);
+ p_info->update_list = NULL;
+ }
+
+ if (CONTACTS_ERROR_NONE != err || p_info->alive == false)
+ {
+ if (p_info->popup)
+ {
+ evas_object_del(p_info->popup);
+ p_info->popup = NULL;
+ }
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+ free(p_info);
+ favor_d->p_info = NULL;
+ favor_d->updating = false;
+ ph_favor_data_lazy_update(_contacts_person._uri, favor_d);
+ return;
+ }
+ else if (p_info->cnt == p_info->cnt_checked_total)
+ {
+ if (p_info->popup)
+ {
+ evas_object_del(p_info->popup);
+ p_info->popup = NULL;
+ }
+ phone_show_tickernoti(S_(PH_SYS_POP_DELETED));
+ free(p_info);
+ favor_d->p_info = NULL;
+ favor_d->updating = false;
+ ph_favor_edit_mode_end(favor_d, true);
+ ph_favor_data_lazy_update(_contacts_person._uri, favor_d);
+ return;
+ }
+ else
+ {
+ favor_edit_del(favor_d);
+ }
+}
+
+static void favor_edit_del(ph_favorite_data *favor_d)
+{
+ PH_TRACE;
+ const int FAVOR_BULK_LENGTH = 50;
+ char percent_total[PH_TEXT_MAX_LEN + 1] = { 0, };
+ char percent[PH_TEXT_MAX_LEN + 1] = { 0, };
+ int count = 0;
+ int base_count = 0;
+ double value = 0.0;
+
+ Eina_List *l = NULL;
+ void *v_f_info = NULL;
+ ph_progress_info *p_info = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ contacts_list_h list = NULL;
+
+ p_retm_if(NULL == favor_d, "parameter(favor_d) is NULL");
+ p_info = favor_d->p_info;
+ p_retm_if(NULL == p_info, "parameter(p_info) is NULL");
+
+ err = contacts_list_create(&list);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_list_create() Failed(%d)",
+ err);
+
+ EINA_LIST_FOREACH(favor_d->favor_list, l, v_f_info)
+ {
+ ph_favor_info *f_info = (ph_favor_info *) v_f_info;
+ if (NULL == f_info)
+ continue;
+
+ if (TRUE == f_info->checked)
+ {
+ if (base_count < p_info->cnt)
+ {
+ base_count++;
+ continue;
+ }
+
+ if (CONTACTS_ERROR_NONE
+ != contacts_db_get_record(_contacts_person._uri,
+ f_info->person_id, &record))
+ {
+ ERR("contacts_db_get_record() Failed()");
+ p_info->completed = true;
+ p_info->result = FALSE;
+ break;
+ }
+ err = contacts_record_set_bool(record, _contacts_person.is_favorite,
+ false);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_ercord_set_bool() Failed(%d)", err);
+
+ contacts_list_add(list, record);
+ count++;
+ if (FAVOR_BULK_LENGTH == count
+ || (count + p_info->cnt) == p_info->cnt_checked_total)
+ {
+ p_info->cnt += count;
+ break;
+ }
+ }
+ }
+ value = (double) p_info->cnt / (double) p_info->cnt_checked_total;
+ elm_progressbar_value_set(p_info->progressbar, value);
+ snprintf(percent, sizeof(percent), "%d%%",
+ (int) (100.0 * (double) p_info->cnt
+ / (double) p_info->cnt_checked_total));
+ snprintf(percent_total, sizeof(percent_total), "%d/%d", p_info->cnt,
+ p_info->cnt_checked_total);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext1", percent);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext2", percent_total);
+
+ p_info->update_list = list;
+ contacts_db_update_records_async(list, favor_edit_del_cb, favor_d);
+}
+
+void ph_favor_edit_del_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ ph_progress_info *p_info;
+
+ p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info));
+ p_retm_if(NULL == p_info, "calloc return NULL");
+
+ favor_d->p_info = p_info;
+ favor_d->updating = true;
+ p_info->cnt_checked_total = favor_d->checked_cnt;
+ p_info->alive = true;
+ p_info->popup = phone_progressbar_popup(favor_d->win, p_info,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_DELETING_FAVORITES));
+ favor_edit_del(favor_d);
+}
+
+void ph_favor_edit_check_for_number(Elm_Object_Item *item,
+ ph_favorite_data *favor_d)
+{
+ PH_TRACE;
+ ph_favor_info *f_info;
+ Evas_Object *list_nums;
+ contacts_record_h record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ f_info = (ph_favor_info *) elm_object_item_data_get(item);
+ p_retm_if(NULL == f_info, "elm_object_item_data_get() return NULL");
+
+ if (NULL == f_info->number_list)
+ {
+ ERR("f_info->number_list is NULL");
+ phone_show_popup(favor_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_NUMBER),
+ 1.5);
+
+ f_info->checked = EINA_FALSE;
+ favor_d->checked_cnt--;
+
+ elm_gengrid_item_update(item);
+ return;
+ }
+
+ if (1 == eina_list_count(f_info->number_list))
+ {
+ record = (contacts_record_h) f_info->number_list->data;
+ f_info->id_ret_type = 1;
+ err = contacts_record_get_int(record, _contacts_number.id,
+ &f_info->id_ret);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ ph_favor_edit_set_selection_info(favor_d);
+ }
+ else
+ {
+ list_nums = ph_favor_create_value_list_popup(favor_d, f_info);
+ p_retm_if(NULL == list_nums,
+ "ph_favor_create_value_list_popup() return NULL");
+ evas_object_data_set(list_nums, "item", item);
+ }
+}
+
+void ph_favor_edit_check_for_email(Elm_Object_Item *item,
+ ph_favorite_data *favor_d)
+{
+ PH_TRACE;
+ Evas_Object *list_emails;
+ ph_favor_info *f_info;
+ contacts_record_h record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ f_info = (ph_favor_info *) elm_object_item_data_get(item);
+ p_retm_if(NULL == f_info, "elm_object_item_data_get() return NULL");
+
+ if (NULL == f_info->email_list)
+ {
+ ERR("f_info->number_list is NULL");
+ phone_show_popup(favor_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_EMAIL),
+ 1.5);
+
+ f_info->checked = EINA_FALSE;
+ favor_d->checked_cnt--;
+
+ elm_gengrid_item_update(item);
+ return;
+ }
+
+ if (1 == eina_list_count(f_info->email_list))
+ {
+ record = (contacts_record_h) f_info->email_list->data;
+ f_info->id_ret_type = 2;
+ err = contacts_record_get_int(record, _contacts_email.id,
+ &f_info->id_ret);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ ph_favor_edit_set_selection_info(favor_d);
+ }
+ else
+ {
+ list_emails = ph_favor_create_value_list_popup(favor_d, f_info);
+ p_retm_if(NULL == list_emails,
+ "ph_favor_create_value_list_popup() return NULL");
+ evas_object_data_set(list_emails, "item", item);
+ }
+}
+
+void ph_favor_edit_check_for_number_or_email(Elm_Object_Item *item,
+ ph_favorite_data *favor_d)
+{
+ PH_TRACE;
+ int number_list_count = 0;
+ int email_list_count = 0;
+ Eina_List *list_contact;
+ Evas_Object *list;
+ ph_favor_info *f_info;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ f_info = (ph_favor_info *) elm_object_item_data_get(item);
+ p_retm_if(NULL == f_info, "elm_object_item_data_get() return NULL");
+
+ list_contact = ctui_person_get_contact_list(f_info->person_id);
+ p_retm_if(NULL == list_contact,
+ "ctui_person_get_contact_list() return NULL");
+
+ if (NULL == f_info->email_list)
+ f_info->email_list = ctui_person_get_email_list(list_contact);
+ if (NULL == f_info->number_list)
+ f_info->number_list = ctui_person_get_number_list(list_contact);
+
+ if (f_info->number_list)
+ number_list_count = eina_list_count(f_info->number_list);
+ if (f_info->email_list)
+ email_list_count = eina_list_count(f_info->email_list);
+
+ if (0 == number_list_count && 0 == email_list_count)
+ {
+ ctui_free_record_list(list_contact);
+ phone_show_popup(favor_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_EMAIL),
+ 1.5);
+ ph_favor_edit_change_checked_item_state(*favor_d, *f_info, EINA_FALSE);
+ return;
+ }
+
+ if (1 == number_list_count && 0 == email_list_count)
+ {
+ record = (contacts_record_h) f_info->number_list->data;
+ err = contacts_record_get_int(record, _contacts_number.id,
+ &(f_info->id_ret));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ f_info->id_ret_type = 1;
+ ph_favor_edit_change_checked_item_state(*favor_d, *f_info, EINA_TRUE);
+ favor_d->checked_cnt++;
+ ph_favor_edit_set_selection_info(favor_d);
+ }
+ else if (0 == number_list_count && 1 == email_list_count)
+ {
+ record = (contacts_record_h) f_info->email_list->data;
+ err = contacts_record_get_int(record, _contacts_email.id,
+ &(f_info->id_ret));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ f_info->id_ret_type = 2;
+ ph_favor_edit_change_checked_item_state(*favor_d, *f_info, EINA_TRUE);
+ favor_d->checked_cnt++;
+ ph_favor_edit_set_selection_info(favor_d);
+ }
+ else
+ {
+ list = ph_favor_create_value_list_popup(favor_d, f_info);
+ if (list)
+ evas_object_data_set(list, "item", item);
+ }
+ ctui_free_record_list(list_contact);
+}
+
+void copy_favor_info_to_map(Eina_Bool checked, ph_favorite_data *favor_d,ph_favor_info *f_info)
+{
+ PH_TRACE;
+ ph_favor_info *favor_data = NULL;
+ if (favor_d && f_info)
+ {
+ if (checked)
+ {
+ favor_data = new ph_favor_info;
+ favor_data->person_id = f_info->person_id;
+ favor_data->id_ret = f_info->id_ret;
+ favor_data->checked = f_info->checked;
+ favor_data->id_ret_type = f_info->id_ret_type;
+ favor_d->itemState[f_info->person_id] = favor_data;
+ }
+ else
+ {
+ CheckMap::const_iterator it = favor_d->itemState.find(f_info->person_id);
+ if (it != favor_d->itemState.end())
+ {
+ delete it->second;
+ favor_d->itemState.erase(f_info->person_id);
+ }
+ }
+ }
+}
+
+void ph_favor_edit_check_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) evas_object_data_get(obj, "favor_d");
+ p_retm_if(NULL == favor_d, "favorite data is NULL");
+
+ p_retm_if(NULL == obj, "object is NULL");
+ Eina_Bool checked = elm_check_state_get(obj);
+
+ ph_favor_info *f_info = (ph_favor_info *) data;
+ p_retm_if(NULL == f_info, "favor info is NULL");
+ Elm_Object_Item *item = f_info->item;
+
+
+ copy_favor_info_to_map(checked,favor_d,f_info);
+ if (checked)
+ {
+ if (favor_d->ug_cnt_max)
+ {
+ if (favor_d->ug_cnt_max <= favor_d->checked_cnt)
+ {
+ phone_show_popup(favor_d->navi,
+ T_(CT_GET_TEXT_ERR, CTTEXT_EXCEED_LIMIT), 2.0);
+ checked = !checked;
+ elm_check_state_set(obj, checked);
+ return;
+ }
+ }
+ favor_d->checked_cnt++;
+ }
+ else
+ {
+ favor_d->checked_cnt--;
+ ph_favor_edit_set_selection_info(favor_d);
+ return;
+ }
+
+ if (PH_UG_REQUEST_CHECK_FOR_NUMBER == favor_d->ug_request)
+ ph_favor_edit_check_for_number(item, favor_d);
+ else if (PH_UG_REQUEST_CHECK_FOR_EMAIL == favor_d->ug_request)
+ ph_favor_edit_check_for_email(item, favor_d);
+ else if (PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == favor_d->ug_request)
+ {
+ ph_favor_edit_change_checked_item_state(*favor_d, *f_info, EINA_FALSE);
+ favor_d->checked_cnt--;
+ ph_favor_edit_check_for_number_or_email(item, favor_d);
+ }
+ else
+ ph_favor_edit_set_selection_info(favor_d);
+}
+
+void updateCheckedItem(Elm_Object_Item *pItem, ph_favorite_data &favorData,
+ ph_favor_info &favorInfo)
+{
+ PH_TRACE;
+ p_retm_if(NULL == pItem, "item is NULL");
+
+ if (!favorInfo.checked)
+ {
+ if (favorData.ug_cnt_max)
+ {
+ if (favorData.ug_cnt_max <= favorData.checked_cnt)
+ {
+ phone_show_popup(favorData.navi,
+ T_(CT_GET_TEXT_ERR, CTTEXT_EXCEED_LIMIT), 2.0);
+ return;
+ }
+ }
+ }
+ else
+ {
+ ph_favor_edit_change_checked_item_state(favorData, favorInfo, EINA_FALSE);
+ favorData.checked_cnt--;
+ ph_favor_edit_set_selection_info(&favorData);
+ return;
+ }
+
+ if (PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == favorData.ug_request)
+ {
+ ph_favor_edit_check_for_number_or_email(pItem, &favorData);
+ }
+ else
+ {
+ ph_favor_edit_change_checked_item_state(favorData, favorInfo, EINA_TRUE);
+ favorData.checked_cnt++;
+ ph_favor_edit_set_selection_info(&favorData);
+ }
+}
+
+void ph_favor_edit_change_checked_item_state(ph_favorite_data &favorData,
+ ph_favor_info &favorInfo, Eina_Bool state)
+{
+ PH_TRACE;
+
+ if(favorInfo.item)
+ {
+ favorInfo.checked = state;
+ copy_favor_info_to_map(state,&favorData,&favorInfo);
+ elm_gengrid_item_update(favorInfo.item);
+ elm_object_item_signal_emit(favorInfo.item, FAVORITES_THEME_EDIT,
+ FAVORITES_THEME);
+ }
+}
+
+void ph_favor_edit_set_selection_info(ph_favorite_data * favor_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == favor_d, "Selection info is null");
+
+ if (0 == favor_d->checked_cnt)
+ phone_show_notify(favor_d->layout,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_SELECT_CONTACTS));
+ else
+ {
+ char info_text[PH_TEXT_SHORT_LEN] = { 0 };
+
+ if (favor_d->ug_cnt_max)
+ snprintf(info_text, sizeof(info_text), "%s (%d/%d)",
+ S_(PH_SYS_POP_SELECTED), favor_d->checked_cnt,
+ favor_d->ug_cnt_max);
+ else
+ snprintf(info_text, sizeof(info_text), "%s (%d)",
+ S_(PH_SYS_POP_SELECTED), favor_d->checked_cnt);
+ phone_show_notify(favor_d->layout, info_text);
+ }
+
+ ph_favor_update_button_status(favor_d);
+}
+
+static void favor_gengrid_realized(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_favor_info *f_info;
+ Elm_Object_Item *it = (Elm_Object_Item *) event_info;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ f_info = (ph_favor_info *) elm_object_item_data_get(it);
+ p_retm_if(NULL == f_info, "elm_object_item_data_get() return NULL");
+
+ if (favor_d->list_mode == PH_FAVOR_MODE_EDIT)
+ elm_object_item_signal_emit(f_info->item,
+ FAVORITES_THEME_EDIT_NO_EFFECT, FAVORITES_THEME);
+}
+
+API void phone_favor_edit_mode_start(ph_favorite_data *favor_d)
+{
+ PH_TRACE;
+ Eina_List *list;
+ Eina_List *cursor;
+ void *v_it;
+ ph_favor_info *f_info;
+ p_retm_if(NULL == favor_d, "Favorite data is null");
+ favor_d->list_mode = PH_FAVOR_MODE_EDIT;
+ phone_favor_set_navi(favor_d->layout, PH_FAVOR_MODE_EDIT);
+ if (favor_d->favor_list)
+ phone_show_notify(favor_d->layout,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_SELECT_CONTACTS));
+ elm_gengrid_reorder_mode_set(favor_d->favor_gengrid, EINA_TRUE);
+ elm_gengrid_clear(favor_d->favor_gengrid);
+ ph_favor_fill_favor_gengrid(favor_d);
+
+ evas_object_smart_callback_add(favor_d->favor_gengrid, "realized",
+ favor_gengrid_realized, favor_d);
+ list = elm_gengrid_realized_items_get(favor_d->favor_gengrid);
+ EINA_LIST_FOREACH(list, cursor, v_it)
+ {
+ Elm_Object_Item *it = (Elm_Object_Item *) v_it;
+ f_info = (ph_favor_info *) elm_object_item_data_get(it);
+ p_retm_if(NULL == f_info, "elm_object_item_data_get() return NULL");
+ elm_object_item_signal_emit(f_info->item, FAVORITES_THEME_EDIT,
+ FAVORITES_THEME);
+ }
+}
+
+static void favor_all_item_check_false(Eina_List *list)
+{
+ PH_TRACE;
+ Eina_List *l;
+ void *v_f_info;
+ p_retm_if(NULL == list, "List is null");
+
+ EINA_LIST_FOREACH(list, l, v_f_info)
+ {
+ ph_favor_info *f_info = (ph_favor_info *) v_f_info;
+ if (NULL == f_info)
+ continue;
+
+ if (EINA_TRUE == f_info->checked)
+ f_info->checked = EINA_FALSE;
+ }
+}
+
+void ph_favor_edit_mode_end(ph_favorite_data *favor_d, bool redraw)
+{
+ PH_TRACE;
+ Evas_Object *bg;
+ Evas_Object *layout;
+
+ favor_d->list_mode = PH_FAVOR_MODE_DEFAULT;
+
+ layout = elm_object_part_content_get(favor_d->layout, "contents");
+ bg = elm_object_part_content_unset(layout, "elm.swallow.bg");
+ if (bg)
+ evas_object_del(bg);
+
+ phone_hide_notify(favor_d->layout);
+
+ if (favor_d->checked_cnt)
+ favor_d->checked_cnt = 0;
+
+ if (favor_d->favor_gengrid)
+ {
+ elm_gengrid_clear(favor_d->favor_gengrid);
+ if (true == favor_d->favor_move)
+ ph_favor_load_favor_list(favor_d);
+
+ ph_favor_fill_favor_gengrid(favor_d);
+ if (0 == ctui_get_mfc_option())
+ {
+ ph_favor_load_mf_list(favor_d);
+ ph_favor_fill_mf_gengrid(favor_d);
+ }
+ }
+ favor_all_item_check_false(favor_d->favor_list);
+ CheckMap::const_iterator it;
+ for (it=favor_d->itemState.begin(); it!=favor_d->itemState.end(); ++it)
+ {
+ delete it->second;
+ }
+ favor_d->itemState.clear();
+ elm_gengrid_reorder_mode_set(favor_d->favor_gengrid, EINA_FALSE);
+ if (redraw)
+ phone_favor_set_navi(favor_d->layout, PH_FAVOR_MODE_DEFAULT);
+}
+
+void ph_favor_edit_cancel_cb(void *data)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ ph_favor_edit_mode_end(favor_d, true);
+}
diff --git a/lib/favor/ph-favorite-edit-view.h b/lib/favor/ph-favorite-edit-view.h
new file mode 100755
index 0000000..293c8e6
--- /dev/null
+++ b/lib/favor/ph-favorite-edit-view.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PH_FAVORITE_EDIT_H__
+#define __PH_FAVORITE_EDIT_H__
+
+void ph_favor_edit_mode_end(ph_favorite_data *favor_d, bool redraw);
+void ph_favor_edit_set_selection_info(ph_favorite_data *favor_d);
+
+/**
+ * @brief This function updates item checked state.
+ * @param[in] pItem Item to be update
+ * @param[out] favorData Favorite data structure
+ * @param[out] favorInfo Item info structure
+ */
+void updateCheckedItem(Elm_Object_Item *pItem, ph_favorite_data &favorData,
+ ph_favor_info &favorInfo);
+
+/**
+ * @brief This function set the check on/check off state of the item.
+ * @param[out] favorData Favorite data structure
+ * @param[out] favorInfo Item info structure
+ * @param[in] state The state to use (EINA_TRUE == check on, EINA_FALSE == check off)
+ */
+void ph_favor_edit_change_checked_item_state(ph_favorite_data &favorData,
+ ph_favor_info &favorInfo, Eina_Bool state);
+
+void ph_favor_edit_check_changed_cb(void *data, Evas_Object *obj,
+ void *event_info);
+void ph_frequent_edit_check_changed_cb(void *data, Evas_Object *obj,
+ void *event_info);
+void ph_favor_edit_del_btn_cb(void *data, Evas_Object *obj, void *event_info);
+void ph_favor_edit_cancel_cb(void *data);
+void ph_favor_edit_check_for_number(Elm_Object_Item *item,
+ ph_favorite_data *favor_d);
+void ph_favor_edit_check_for_email(Elm_Object_Item *item,
+ ph_favorite_data *favor_d);
+void ph_favor_edit_check_for_number_or_email(Elm_Object_Item *item,
+ ph_favorite_data *favor_d);
+
+#endif /* __PH_FAVORITE_EDIT_H__ */
diff --git a/lib/favor/ph-favorite-view.cpp b/lib/favor/ph-favorite-view.cpp
new file mode 100755
index 0000000..c3200a0
--- /dev/null
+++ b/lib/favor/ph-favorite-view.cpp
@@ -0,0 +1,2772 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <Ecore_X.h>
+#include <ui-gadget-module.h>
+
+#include "phone.h"
+#include "phone-common.h"
+
+#include "ct-favor.h"
+#include "ct-list.h"
+#include "ct-detail.h"
+#include "ph-favorite-view.h"
+#include "ph-favorite-edit-view.h"
+
+#define KEY_FAVOR_DATA "favor_d"
+#define SWALLOW_END "elm.swallow.end"
+#define PH_FAVOR_LIST_ICON_SIZE 70
+
+static Elm_Gengrid_Item_Class grid_itc_favor, grid_itc_favor_no_id, grid_itc_mf,
+ grid_itc_mf_no_id, grid_itc_index, grid_itc_mf_index;
+
+enum favor_item_type
+{
+ FAVOR_ITEM_MFC = 0,
+ FAVOR_ITEM_FAVOR,
+};
+
+ph_favorite_data::ph_favorite_data() :
+ mf_layout(NULL), box(NULL), favor_gengrid(NULL),
+ mf_gengrid(NULL), ctx_popup(NULL), navi_button(NULL),
+ favor_list(NULL), mf_list(NULL), longpressed(0),
+ update_timer_contact(NULL), update_timer_favor(NULL),
+ update_timer_log(NULL), list_mode(0), selected_person_id(0),
+ checked_cnt(0), favor_list_count(0), mf_list_count(0),
+ readed_n(0), version(0), ug_request(0), ug_cnt_max(0),
+ touch_x(0), touch_y(0), mfc_option(0), is_background(0),
+ is_mf_changed(0), favor_move(0), updating(0),
+ ug_data(NULL), list_idler (NULL), p_info(NULL)
+{
+ PH_TRACE;
+}
+
+static char* favor_get_contact_number(int person_id)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ char *number = NULL;
+ contacts_record_h record_default_number = NULL;
+
+ err = phone_cts_get_default_number(person_id, &record_default_number);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_default_number() Failed(%d)", err);
+
+ err = contacts_record_get_str_p(record_default_number,
+ _contacts_number.number, &(number));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ number = SAFE_STRDUP(number);
+ PH_DBG("number = %s", number);
+
+ err = contacts_record_destroy(record_default_number, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ return number;
+}
+
+static contacts_filter_h favor_create_filter_bool(contacts_filter_h filter,
+ const char *view_uri, int property_id, contacts_match_int_flag_e flag,
+ bool match_value)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+
+ if (NULL == filter)
+ {
+ err = contacts_filter_create(view_uri, &filter);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_filter_create() Failed(%d)", err);
+ }
+ else
+ {
+ err = contacts_filter_add_operator(filter,
+ CONTACTS_FILTER_OPERATOR_AND);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_add_operator() Failed(%d)", err);
+ }
+
+ err = contacts_filter_add_bool(filter, property_id, match_value);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_add_int() Failed(%d)", err);
+
+ return filter;
+}
+
+static void favor_load_favorite_data(ph_favorite_data *favor_d)
+{
+ PH_TRACE;
+ int count = 0;
+ int ret = 0;
+ Eina_List *list = NULL;
+ contacts_list_h person_list = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_filter_h filter = NULL;
+ contacts_filter_h filter2 = NULL;
+ contacts_query_h query = NULL;
+
+ err = contacts_query_create(_contacts_person._uri, &query);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_query_create() Failed(%d)",
+ err);
+
+ switch (favor_d->ug_request)
+ {
+ //case PH_UG_REQUEST_SELECT_NUMBER:
+ //case PH_UG_REQUEST_CHECK_FOR_NUMBER:
+ case CT_UG_REQUEST_SELECT_NUMBER:
+ case CT_UG_REQUEST_CHECK_FOR_NUMBER:
+ do
+ {
+ filter = favor_create_filter_bool(filter, _contacts_person._uri,
+ _contacts_person.is_favorite, CONTACTS_MATCH_EQUAL,
+ true);
+ filter = favor_create_filter_bool(filter, _contacts_person._uri,
+ _contacts_person.has_phonenumber, CONTACTS_MATCH_EQUAL,
+ true);
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_filter(query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_sort(query,
+ _contacts_person.favorite_priority, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_db_get_records_with_query(query, 0,
+ 0, &person_list)))
+ break;
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_query_destroy(query);
+ contacts_filter_destroy(filter);
+
+ break;
+ //case PH_UG_REQUEST_SELECT_EMAIL:
+ //case PH_UG_REQUEST_CHECK_FOR_EMAIL:
+ case CT_UG_REQUEST_SELECT_EMAIL:
+ case CT_UG_REQUEST_CHECK_FOR_EMAIL:
+ do
+ {
+ filter = favor_create_filter_bool(filter, _contacts_person._uri,
+ _contacts_person.is_favorite, CONTACTS_MATCH_EQUAL,
+ true);
+ filter = favor_create_filter_bool(filter, _contacts_person._uri,
+ _contacts_person.has_email, CONTACTS_MATCH_EQUAL, true);
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_filter(query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_sort(query,
+ _contacts_person.favorite_priority, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_db_get_records_with_query(query, 0,
+ 0, &person_list)))
+ break;
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_query_destroy(query);
+ contacts_filter_destroy(filter);
+
+ break;
+
+ case CT_UG_REQUEST_SELECT_NUMBER_OR_EMAIL:
+ case CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL:
+ do
+ {
+ filter = favor_create_filter_bool(filter, _contacts_person._uri,
+ _contacts_person.is_favorite, CONTACTS_MATCH_EQUAL,
+ true);
+ filter2 = favor_create_filter_bool(NULL, _contacts_person._uri,
+ _contacts_person.has_phonenumber, CONTACTS_MATCH_EQUAL,
+ true);
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_filter_add_operator(filter2,
+ CONTACTS_FILTER_OPERATOR_OR)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_filter_add_bool(filter2,
+ _contacts_person.has_email, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_filter_add_operator(filter,
+ CONTACTS_FILTER_OPERATOR_AND)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_filter_add_filter(filter, filter2)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_filter(query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_sort(query,
+ _contacts_person.favorite_priority, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_db_get_records_with_query(query, 0,
+ 0, &person_list)))
+ break;
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_query_destroy(query);
+ contacts_filter_destroy(filter);
+ contacts_filter_destroy(filter2);
+
+ break;
+ default:
+ do
+ {
+ filter = favor_create_filter_bool(filter, _contacts_person._uri,
+ _contacts_person.is_favorite, CONTACTS_MATCH_EQUAL,
+ true);
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_filter(query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_sort(query,
+ _contacts_person.favorite_priority, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_db_get_records_with_query(query, 0,
+ 0, &person_list)))
+ break;
+ }
+ while (0);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_create() Failed(%d)", err);
+
+ contacts_query_destroy(query);
+ contacts_filter_destroy(filter);
+
+ break;
+ }
+ if (CONTACTS_ERROR_NONE != ret)
+ {
+ ERR("contacts_db_get_records_with_query() Failed(%d)");
+ favor_d->favor_list_count = 0;
+ return;
+ }
+
+ contacts_db_get_current_version(&favor_d->version);
+
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ ph_favor_info *f_info;
+ f_info = (ph_favor_info *)calloc(1, sizeof(ph_favor_info));
+
+ err = phone_cts_get_int_from_list(person_list, _contacts_person.id,
+ &f_info->person_id);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_int_from_list() Failed(%d)", err);
+ free(f_info);
+ break;
+ }
+ err = phone_cts_get_str_from_list(person_list,
+ _contacts_person.display_name, &f_info->display);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_str_from_list() Failed(%d)", err);
+ free(f_info);
+ break;
+ }
+ SAFE_STRDUP(f_info->display);
+ err = phone_cts_get_str_from_list(person_list,
+ _contacts_person.image_thumbnail_path, &f_info->img_path);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_str_from_list() Failed(%d)", err);
+ free(f_info);
+ break;
+ }
+ SAFE_STRDUP(f_info->img_path);
+
+ if (CT_UG_REQUEST_SELECT_NUMBER == favor_d->ug_request
+ || CT_UG_REQUEST_CHECK_FOR_NUMBER == favor_d->ug_request)
+ {
+ f_info->contact_list = ctui_person_get_contact_list(
+ f_info->person_id);
+ p_warn_if(NULL == f_info->contact_list,
+ "ctui_person_get_contact_list() return NULL");
+
+ f_info->number_list = ctui_person_get_number_list(
+ f_info->contact_list);
+ p_warn_if(NULL == f_info->number_list,
+ "ctui_person_get_contact_list() return NULL");
+ }
+ else if (CT_UG_REQUEST_SELECT_EMAIL == favor_d->ug_request
+ || CT_UG_REQUEST_CHECK_FOR_EMAIL == favor_d->ug_request)
+ {
+ f_info->contact_list = ctui_person_get_contact_list(
+ f_info->person_id);
+ p_warn_if(NULL == f_info->contact_list,
+ "ctui_person_get_contact_list() return NULL");
+
+ f_info->email_list = ctui_person_get_email_list(
+ f_info->contact_list);
+ p_warn_if(NULL == f_info->email_list,
+ "ctui_person_get_contact_list() return NULL");
+
+ }
+ else if (CT_UG_REQUEST_SELECT_NUMBER_OR_EMAIL == favor_d->ug_request
+ || CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL
+ == favor_d->ug_request)
+ {
+ f_info->contact_list = ctui_person_get_contact_list(
+ f_info->person_id);
+ p_warn_if(NULL == f_info->contact_list,
+ "ctui_person_get_contact_list() return NULL");
+
+ f_info->email_list = ctui_person_get_email_list(
+ f_info->contact_list);
+ p_warn_if(NULL == f_info->email_list,
+ "ctui_person_get_contact_list() return NULL");
+
+ f_info->number_list = ctui_person_get_number_list(
+ f_info->contact_list);
+ p_warn_if(NULL == f_info->number_list,
+ "ctui_person_get_contact_list() return NULL");
+ }
+
+ list = eina_list_append(list, (void*) f_info);
+ count++;
+ err = contacts_list_next(person_list);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ }
+ err = contacts_list_destroy(person_list, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_destroy() Failed(%d)",
+ err);
+
+ favor_d->favor_list_count = count;
+ favor_d->favor_list = list;
+}
+
+static void favor_free_data(Eina_List *list)
+{
+ PH_TRACE;
+ Eina_List *l;
+ void *v_f_info = NULL;
+ p_retm_if(NULL == list, "List is null");
+
+ EINA_LIST_FOREACH(list, l, v_f_info)
+ {
+ ph_favor_info *f_info = (ph_favor_info *) v_f_info;
+ if (NULL == f_info)
+ continue;
+ free(f_info->display);
+ free(f_info->img_path);
+ free(f_info->number);
+ if (f_info->contact_list)
+ ctui_free_record_list(f_info->contact_list);
+
+ if (f_info->number_list)
+ ctui_free_record_list(f_info->number_list);
+
+ if (f_info->email_list)
+ ctui_free_record_list(f_info->email_list);
+ free(f_info);
+ }
+ eina_list_free(list);
+}
+
+static void favor_destroy_child_ug(void *data)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ favor_d->child_ug = NULL;
+}
+
+static void favor_ctxpopup_dismissed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *icon;
+ Evas_Object *btn;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ btn = (Evas_Object *) evas_object_data_get(obj, "expand_btn");
+ icon = elm_object_part_content_get(btn, "icon");
+ elm_image_file_set(icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL);
+ elm_object_part_content_set(btn, "icon", icon);
+ evas_object_del(favor_d->ctx_popup);
+ favor_d->ctx_popup = NULL;
+}
+
+static void favor_ctxpopup_hide_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *icon;
+ Evas_Object *btn;
+ btn = (Evas_Object *) data;
+ icon = elm_object_part_content_get(btn, "icon");
+ elm_image_file_set(icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL);
+ elm_object_part_content_set(btn, "icon", icon);
+}
+
+static void favor_msg_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_favor_info *f_info;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+
+ f_info = (ph_favor_info *)evas_object_data_get(obj, "f_info");
+ p_retm_if(NULL == f_info, "evas_object_data_get() return NULL");
+
+ favor_ctxpopup_dismissed_cb(favor_d, favor_d->ctx_popup, NULL);
+
+ favor_d->child_ug = phone_launch_msg_composer_ug(favor_d->ug,
+ f_info->number, 0, favor_destroy_child_ug, favor_d);
+}
+
+static void favor_call_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_favor_info *f_info;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+
+ f_info = (ph_favor_info *)evas_object_data_get(obj, "f_info");
+ p_retm_if(NULL == f_info, "evas_object_data_get() return NULL");
+
+ favor_ctxpopup_dismissed_cb(favor_d, favor_d->ctx_popup, NULL);
+ phone_launch_voice_call(f_info->person_id, f_info->number);
+}
+
+void ph_favor_load_favor_list(ph_favorite_data *favor_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == favor_d, "Parameter is null");
+
+ favor_free_data(favor_d->favor_list);
+ favor_d->favor_list = NULL;
+ favor_load_favorite_data(favor_d);
+}
+
+static void favor_img_crop_result(ui_gadget_h ug, service_h service, void *data)
+{
+ PH_TRACE;
+ Eina_List *list_writable_contact;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+
+ p_retm_if(NULL == ug || NULL == data, "ug or data is NULL");
+
+ if (service)
+ {
+ char *normal = NULL;
+ char *full = NULL;
+ Eina_List *l;
+ contacts_record_h record = NULL;
+ contacts_record_h record_image = NULL;
+
+ service_get_extra_data(service, "crop_image_path", &normal);
+ p_retm_if(NULL == normal, "return value is NULL.");
+ service_get_extra_data(service, "image_path", &full);
+ int err = CONTACTS_ERROR_NONE;
+
+ list_writable_contact = NULL;
+ list_writable_contact = ctui_person_get_writable_contact_list(
+ favor_d->selected_person_id);
+
+ if (list_writable_contact)
+ {
+ EINA_LIST_FOREACH(list_writable_contact, l, data)
+ {
+ record = (contacts_record_h) data;
+ if (NULL == record)
+ continue;
+
+ record_image = ctui_get_record_image(record);
+ if (NULL == record_image)
+ {
+ ERR("ctui_get_record_image() Failed(%d)", err);
+ break;
+ }
+
+ err = contacts_record_set_str(record_image,
+ _contacts_image.path, normal);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_db_update_record(record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_record() Failed(%d)", err);
+ ctui_create_contacts_error_popup(favor_d->navi, err);
+ }
+ ctui_free_record_list(list_writable_contact);
+ }
+
+ free(normal);
+ free(full);
+ }
+}
+
+static void favor_popup_response_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ p_retm_if(NULL == favor_d, "favor_d is NULL");
+ if (PH_UG_REQUEST_SET_WITH_RINGTONE == favor_d->ug_request)
+ ug_destroy_me(favor_d->ug);
+}
+
+static void favor_value_list_popup_hide_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d;
+ Elm_Object_Item * item;
+ ph_favor_info *f_info;
+
+ favor_d = (ph_favorite_data *) evas_object_data_get((const Evas_Object *) data, "favor_d");
+ p_retm_if(NULL == favor_d, "evas_object_data_get() return NULL");
+
+ evas_object_del(favor_d->popup);
+ favor_d->popup = NULL;
+
+ if (NULL != obj)
+ {
+ item = (Elm_Object_Item *) evas_object_data_get((const Evas_Object *) data, "item");
+ p_retm_if(NULL == item, "evas_object_data_get() return NULL");
+
+ f_info = (ph_favor_info *) elm_object_item_data_get(item);
+ p_retm_if(NULL == f_info, "elm_object_item_data_get() return NULL");
+
+ ph_favor_edit_change_checked_item_state(*favor_d, *f_info, EINA_FALSE);
+ }
+}
+
+static void favor_del_response_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ph_favor_info *f_info = (ph_favor_info *) data;
+ ph_favorite_data *favor_d;
+ contacts_record_h record = NULL;
+
+ favor_d = (ph_favorite_data *) evas_object_data_get(obj, KEY_FAVOR_DATA);
+
+ evas_object_del(favor_d->popup);
+ favor_d->popup = NULL;
+
+ err = contacts_db_get_record(_contacts_person._uri, f_info->person_id,
+ &record);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() Failed");
+
+ err = contacts_record_set_bool(record, _contacts_person.is_favorite, false);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_bool() Failed(%d)", err);
+
+ err = contacts_db_update_record(record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_record() Failed(%d)", err);
+
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_set_bool() Failed(%d)", err);
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+ }
+ else
+ phone_show_tickernoti(S_(PH_SYS_POP_DELETED));
+}
+
+static void favor_mf_del_response_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ph_favor_info *f_info = (ph_favor_info *) data;
+ ph_favorite_data *favor_d;
+
+ favor_d = (ph_favorite_data *) evas_object_data_get(obj, KEY_FAVOR_DATA);
+
+ evas_object_del(favor_d->popup);
+ favor_d->popup = NULL;
+
+ err = contacts_person_reset_usage(f_info->person_id,
+ CONTACTS_USAGE_STAT_TYPE_OUTGOING_CALL);
+
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_person_reset_usage() Failed(%d)", err);
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+ }
+ else
+ phone_show_tickernoti(S_(PH_SYS_POP_DELETED));
+ ph_favor_data_lazy_update(NULL, favor_d);
+}
+
+static void favor_delete_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ ph_favor_info *f_info;
+ Evas_Object *btn;
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+
+ f_info = (ph_favor_info *)evas_object_data_get(obj, "f_info");
+ p_retm_if(NULL == f_info, "evas_object_data_get() return NULL");
+
+ favor_ctxpopup_dismissed_cb(favor_d, favor_d->ctx_popup, NULL);
+
+ snprintf(buf, sizeof(buf), "%s?", S_(PH_SYS_SK_DELETE));
+ btn = phone_create_confirm_popup(&favor_d->popup, favor_d->win, buf,
+ favor_del_response_cb, f_info);
+ evas_object_data_set(btn, KEY_FAVOR_DATA, favor_d);
+}
+
+static void favor_mf_delete_btn_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ ph_favor_info *f_info;
+ Evas_Object *btn;
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+
+ f_info = (ph_favor_info *)evas_object_data_get(obj, "f_info");
+ p_retm_if(NULL == f_info, "evas_object_data_get() return NULL");
+
+ favor_ctxpopup_dismissed_cb(favor_d, favor_d->ctx_popup, NULL);
+
+ snprintf(buf, sizeof(buf), "%s?", S_(PH_SYS_SK_DELETE));
+ btn = phone_create_confirm_popup(&favor_d->popup, favor_d->win, buf,
+ favor_mf_del_response_cb, f_info);
+ evas_object_data_set(btn, KEY_FAVOR_DATA, favor_d);
+}
+
+static Evas_Object *favor_create_button(Evas_Object *box, const char *fullpath,
+ ph_favor_info *f_info)
+{
+ PH_TRACE;
+ const int PH_FAVOR_BTN_WIDTH = 160;
+ const int PH_FAVOR_BTN_HEIGHT = 74;
+ const int PH_FAVOR_1BTN_WIDTH = 326;
+ Evas_Object *btn;
+ double scale;
+ scale = elm_config_scale_get();
+ btn = phone_create_list_sweep_btn(box, fullpath);
+ p_retvm_if(NULL == btn, NULL, "phone_create_list_sweep_btn is failed");
+
+ if (strcmp(fullpath, PH_IMG_ICON_DELETE) == 0)
+ elm_object_style_set(btn, "sweep/delete");
+ evas_object_data_set(btn, "f_info", f_info);
+ if (f_info->number)
+ {
+ evas_object_size_hint_min_set(btn, (int) (PH_FAVOR_BTN_WIDTH * scale),
+ (int) (PH_FAVOR_BTN_HEIGHT * scale));
+ evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.5);
+ }
+ else
+ {
+ evas_object_size_hint_min_set(btn, (int) (PH_FAVOR_1BTN_WIDTH * scale),
+ (int) (PH_FAVOR_BTN_HEIGHT * scale));
+ evas_object_size_hint_align_set(btn, 0.5, 0.5);
+ }
+ evas_object_show(btn);
+ elm_box_pack_end(box, btn);
+ return btn;
+}
+
+static void __favor_popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_favorite_data *favor_d = static_cast<ph_favorite_data*>(data);
+ if (NULL != favor_d->popup)
+ {
+ evas_object_del(favor_d->popup);
+ favor_d->popup = NULL;
+ }
+ }
+}
+
+static void __favor_menu_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_favorite_data *favor_d = static_cast<ph_favorite_data*>(data);
+ if (NULL != favor_d->m_Menu)
+ {
+ evas_object_del(favor_d->m_Menu);
+ favor_d->m_Menu = NULL;
+ }
+ }
+}
+
+static void favor_call_btn_pressed_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *icon = NULL;
+ p_retm_if(NULL == data, "data is NULL");
+ icon = elm_object_part_content_get((const Evas_Object *) data, "icon");
+ elm_image_file_set(icon, PH_IMG_ICON_CALL_PRESS, NULL);
+}
+
+static void favor_call_btn_unpressed_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *icon = NULL;
+ p_retm_if(NULL == data, "data is NULL");
+ icon = elm_object_part_content_get((const Evas_Object *) data, "icon");
+ elm_image_file_set(icon, PH_IMG_ICON_CALL, NULL);
+}
+
+static void favor_msg_btn_pressed_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *icon = NULL;
+ p_retm_if(NULL == data, "data is NULL");
+ icon = elm_object_part_content_get((const Evas_Object *) data, "icon");
+ elm_image_file_set(icon, PH_IMG_ICON_MESSAGE_PRESS, NULL);
+}
+
+static void favor_msg_btn_unpressed_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *icon = NULL;
+ p_retm_if(NULL == data, "data is NULL");
+ icon = elm_object_part_content_get((const Evas_Object *) data, "icon");
+ elm_image_file_set(icon, PH_IMG_ICON_MESSAGE, NULL);
+}
+
+static Evas_Object *favor_create_popup_button(Evas_Object *parent,
+ ph_favorite_data *favor_d, ph_favor_info *f_info, int item_type)
+{
+ PH_TRACE;
+ Evas_Object *btn1, *btn2, *btn4;
+ Evas_Object *box;
+
+ box = elm_box_add(parent);
+ elm_box_padding_set(box, 16, 0);
+
+ if (f_info->number)
+ {
+ elm_box_horizontal_set(box, EINA_TRUE);
+ btn1 = favor_create_button(box, PH_IMG_ICON_CALL, f_info);
+ evas_object_smart_callback_add(btn1, "clicked", favor_call_btn_cb,
+ favor_d);
+ evas_object_event_callback_add(btn1, EVAS_CALLBACK_MOUSE_DOWN,
+ favor_call_btn_pressed_cb, btn1);
+ evas_object_event_callback_add(btn1, EVAS_CALLBACK_MOUSE_UP,
+ favor_call_btn_unpressed_cb, btn1);
+
+ btn2 = favor_create_button(box, PH_IMG_ICON_MESSAGE, f_info);
+ evas_object_smart_callback_add(btn2, "clicked", favor_msg_btn_cb,
+ favor_d);
+ evas_object_event_callback_add(btn2, EVAS_CALLBACK_MOUSE_DOWN,
+ favor_msg_btn_pressed_cb, btn2);
+ evas_object_event_callback_add(btn2, EVAS_CALLBACK_MOUSE_UP,
+ favor_msg_btn_unpressed_cb, btn2);
+
+ btn4 = favor_create_button(box, PH_IMG_ICON_DELETE, f_info);
+ if (FAVOR_ITEM_MFC == item_type)
+ evas_object_smart_callback_add(btn4, "clicked",
+ favor_mf_delete_btn_cb, favor_d);
+ else if (FAVOR_ITEM_FAVOR == item_type)
+ evas_object_smart_callback_add(btn4, "clicked", favor_delete_btn_cb,
+ favor_d);
+
+ }
+ else
+ {
+ btn4 = favor_create_button(box, PH_IMG_ICON_DELETE, f_info);
+
+ if (FAVOR_ITEM_MFC == item_type)
+ evas_object_smart_callback_add(btn4, "clicked",
+ favor_mf_delete_btn_cb, favor_d);
+ else if (FAVOR_ITEM_FAVOR == item_type)
+ evas_object_smart_callback_add(btn4, "clicked", favor_delete_btn_cb,
+ favor_d);
+
+ }
+
+ return box;
+}
+
+static void favor_expand_btn_clicked_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ const char *file_icon;
+ const char *file_group;
+ const int PH_CTX_POPUP_HEIGHT = 112;
+ Evas_Object *ctx_popup;
+ Evas_Object *box;
+ Evas_Object *icon;
+ Evas_Object *layout;
+ ph_favor_info *f_info;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ Ecore_X_Window win;
+ int win_width;
+ int item_type;
+ double scale;
+
+ icon = elm_object_part_content_get(obj, "icon");
+
+ elm_image_file_get(icon, &file_icon, &file_group);
+ p_retm_if(NULL == file_icon, "elm_image_file_set() return NULL");
+
+ if (0 == strcmp(file_icon, CTUI_IMG_ICON_EXPAND_CLOSED))
+ { // OPENED
+ elm_image_file_set(icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL);
+ elm_object_part_content_set(obj, "icon", icon);
+ }
+ else
+ {
+ win = ecore_x_window_root_get(ecore_x_window_focus_get());
+ ecore_x_window_size_get(win, &win_width, NULL);
+
+ scale = elm_config_scale_get();
+ elm_image_file_set(icon, CTUI_IMG_ICON_EXPAND_CLOSED, NULL);
+ elm_object_part_content_set(obj, "icon", icon);
+
+ if (favor_d->ctx_popup)
+ {
+ evas_object_del(favor_d->ctx_popup);
+ favor_d->ctx_popup = NULL;
+ }
+
+ ctx_popup = elm_ctxpopup_add(favor_d->navi);
+ evas_object_size_hint_min_set(ctx_popup, win_width,
+ (int) (PH_CTX_POPUP_HEIGHT * scale));
+ elm_ctxpopup_horizontal_set(ctx_popup, EINA_TRUE);
+ evas_object_data_set(ctx_popup, "expand_btn", obj);
+ favor_d->ctx_popup = ctx_popup;
+
+ elm_ctxpopup_direction_priority_set(ctx_popup,
+ ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP,
+ ELM_CTXPOPUP_DIRECTION_LEFT, ELM_CTXPOPUP_DIRECTION_RIGHT);
+
+ evas_object_smart_callback_add(ctx_popup, "dismissed",
+ favor_ctxpopup_dismissed_cb, favor_d);
+ evas_object_event_callback_add(ctx_popup, EVAS_CALLBACK_HIDE,
+ favor_ctxpopup_hide_cb, obj);
+
+ f_info = (ph_favor_info *)evas_object_data_get(obj, "f_info");
+ p_retm_if(NULL == f_info, "evas_object_data_get() return NULL");
+ item_type = (int) evas_object_data_get(obj, "item_type");
+
+ if (!f_info->number_loaded)
+ {
+ f_info->number = favor_get_contact_number(f_info->person_id);
+ f_info->number_loaded = true;
+ }
+
+ layout = elm_object_part_content_get(favor_d->layout, "contents");
+
+ box = favor_create_popup_button(layout, favor_d, f_info, item_type);
+ evas_object_show(box);
+ elm_object_content_set(ctx_popup, box);
+ phone_move_ctxpopup(favor_d->ctx_popup, obj);
+ evas_object_show(ctx_popup);
+ }
+}
+
+static void favor_nums_popup_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) evas_object_data_get(obj, "favor_d");
+ int contact_id = (int) evas_object_data_get(obj, "person_id");
+
+ if (PH_UG_REQUEST_CHECK_FOR_NUMBER == favor_d->ug_request
+ || PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == favor_d->ug_request)
+ {
+ Elm_Object_Item * item;
+ ph_favor_info *f_info;
+
+ item = (Elm_Object_Item *) evas_object_data_get(obj, "item");
+ p_retm_if(NULL == item, "evas_object_data_get() return NULL");
+
+ f_info = (ph_favor_info *) elm_object_item_data_get(item);
+ p_retm_if(NULL == f_info, "elm_object_item_data_get() return NULL");
+
+ f_info->id_ret = (int) data;
+ f_info->id_ret_type = 1;
+ ph_favor_edit_change_checked_item_state(*favor_d, *f_info, EINA_TRUE);
+ favor_d->checked_cnt++;
+ ph_favor_edit_set_selection_info(favor_d);
+ favor_value_list_popup_hide_cb(obj, NULL, NULL);
+ }
+ else if (PH_UG_REQUEST_LAUNCH_VOICECALL == favor_d->ug_request)
+ {
+ char *num_info = (char *) elm_object_item_text_get((const Elm_Object_Item *) event_info);
+ char *number;
+ strtok(num_info, " ");
+ number = strtok(NULL, " ");
+ favor_value_list_popup_hide_cb(obj, NULL, NULL);
+ phone_launch_voice_call(contact_id, number);
+ }
+ else
+ {
+ phone_ug_return_id(favor_d->ug, contact_id, (int) data, 0);
+ ug_destroy_me(favor_d->ug);
+ }
+}
+
+static inline void favor_handle_select_email(ph_favorite_data *favor_d,
+ ph_favor_info *f_info)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ int email_id;
+
+ if (f_info->email_list)
+ {
+ if (1 == eina_list_count(f_info->email_list))
+ {
+ record = (contacts_record_h) f_info->email_list->data;
+ err = contacts_record_get_int(record, _contacts_email.id,
+ &email_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ phone_ug_return_id(favor_d->ug, f_info->person_id, 0, email_id);
+ ug_destroy_me(favor_d->ug);
+ }
+ else
+ ph_favor_create_value_list_popup(favor_d, f_info);
+ }
+ else
+ phone_show_popup(favor_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_EMAIL),
+ 1.5);
+}
+
+static void favor_emails_popup_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) evas_object_data_get(obj, "favor_d");
+ int contact_id = (int) evas_object_data_get(obj, "person_id");
+
+ p_retm_if(NULL == favor_d, "favor_d is NULL");
+
+ if (CT_UG_REQUEST_CHECK_FOR_EMAIL == favor_d->ug_request
+ || PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == favor_d->ug_request)
+ {
+ Elm_Object_Item * item;
+ ph_favor_info *f_info;
+
+ item = (Elm_Object_Item *) evas_object_data_get(obj, "item");
+ p_retm_if(NULL == item, "evas_object_data_get() return NULL");
+
+ f_info = (ph_favor_info *) elm_object_item_data_get(item);
+ p_retm_if(NULL == f_info, "elm_object_item_data_get() return NULL");
+
+ f_info->id_ret = (int) data;
+ f_info->id_ret_type = 2;
+ ph_favor_edit_change_checked_item_state(*favor_d, *f_info, EINA_TRUE);
+ favor_d->checked_cnt++;
+ ph_favor_edit_set_selection_info(favor_d);
+ favor_value_list_popup_hide_cb(obj, NULL, NULL);
+ }
+ else
+ {
+ phone_ug_return_id(favor_d->ug, contact_id, 0, (int) data);
+ ug_destroy_me(favor_d->ug);
+ }
+}
+
+static inline void favor_handle_select_number(ph_favorite_data *favor_d,
+ ph_favor_info *f_info)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ char *number_str_p = NULL;
+ int num_id;
+
+ p_retm_if(NULL == favor_d, "favor_d is NULL");
+ p_retm_if(NULL == f_info, "f_info is NULL");
+
+ if (f_info->number_list)
+ {
+ if (1 == eina_list_count(f_info->number_list))
+ {
+ record = (contacts_record_h) f_info->number_list->data;
+ if (PH_UG_REQUEST_LAUNCH_VOICECALL == favor_d->ug_request)
+ {
+ err = contacts_record_get_str_p(record, _contacts_number.number,
+ &number_str_p);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ phone_launch_voice_call(f_info->person_id, number_str_p);
+ }
+ else
+ {
+ err = contacts_record_get_int(record, _contacts_number.id,
+ &num_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ phone_ug_return_id(favor_d->ug, f_info->person_id, num_id, 0);
+ ug_destroy_me(favor_d->ug);
+ }
+ }
+ else
+ ph_favor_create_value_list_popup(favor_d, f_info);
+ }
+ else
+ phone_show_popup(favor_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_NUMBER),
+ 1.5);
+}
+
+static inline void favor_handle_select_number_or_email(
+ ph_favorite_data *favor_d, ph_favor_info *f_info)
+{
+ PH_TRACE;
+ contacts_record_h record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ int num_id;
+ int email_id;
+
+ int number_list_count = 0;
+ int email_list_count = 0;
+
+ p_retm_if(NULL == favor_d, "favor_d is NULL");
+ p_retm_if(NULL == f_info, "f_info is NULL");
+
+ if (f_info->number_list)
+ number_list_count = eina_list_count(f_info->number_list);
+ if (f_info->email_list)
+ email_list_count = eina_list_count(f_info->email_list);
+
+ if (number_list_count == 0 && email_list_count == 0)
+ {
+ phone_show_popup(favor_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_NUMBER),
+ 1.5);
+ ug_destroy_me(favor_d->ug);
+ }
+ else if (number_list_count == 1 && email_list_count == 0)
+ {
+ record = (contacts_record_h) f_info->number_list->data;
+ err = contacts_record_get_int(record, _contacts_number.id, &num_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ phone_ug_return_id(favor_d->ug, f_info->person_id, num_id, 0);
+ ug_destroy_me(favor_d->ug);
+ }
+ else if (number_list_count == 0 && email_list_count == 1)
+ {
+ record = (contacts_record_h) f_info->email_list->data;
+ err = contacts_record_get_int(record, _contacts_email.id, &email_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ phone_ug_return_id(favor_d->ug, f_info->person_id, 0, email_id);
+ ug_destroy_me(favor_d->ug);
+ }
+ else
+ {
+ ph_favor_create_value_list_popup(favor_d, f_info);
+ }
+}
+
+Evas_Object* ph_favor_create_value_list_popup(ph_favorite_data *favor_d,
+ ph_favor_info *f_info)
+{
+ PH_TRACE;
+ Evas_Object *popup;
+ Evas_Object *list = NULL;
+ Evas_Object *btn;
+
+ popup = elm_popup_add(favor_d->navi);
+ elm_object_style_set(popup, "min_liststyle");
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ if (f_info->number_list)
+ list = ctui_list_create_values_list(_contacts_number._uri, popup, list,
+ f_info->number_list, favor_nums_popup_sel);
+
+ if (f_info->email_list)
+ list = ctui_list_create_values_list(_contacts_email._uri, popup, list,
+ f_info->email_list, favor_emails_popup_sel);
+
+ elm_object_content_set(popup, list);
+ evas_object_data_set(list, "favor_d", favor_d);
+ evas_object_data_set(list, "person_id", (void *) f_info->person_id);
+
+ btn = elm_button_add(popup);
+ elm_object_text_set(btn, S_(PH_SYS_POP_CLOSE));
+ elm_object_part_content_set(popup, "button1", btn);
+ elm_object_style_set(btn, "popup_button/default");
+ evas_object_smart_callback_add(btn, "clicked",
+ favor_value_list_popup_hide_cb, list);
+
+ favor_d->popup = popup;
+ evas_object_show(popup);
+ return list;
+}
+
+static void favor_destory_child_ug(ui_gadget_h ug, void *priv)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) priv;
+ p_retm_if(NULL == ug, "ug is NULL");
+ ug_destroy(ug);
+
+ p_retm_if(NULL == priv, "priv is NULL");
+ favor_d->child_ug = NULL;
+ ug_destroy_me(favor_d->ug);
+
+}
+
+static void favor_ug_check(ph_favorite_data *favor_d, ph_favor_info *f_info)
+{
+ PH_TRACE;
+ Evas_Object *popup;
+ ph_view_info *view_info;
+ struct ug_cbs cbs = { 0 };
+ const char *err_msg;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ p_retm_if(NULL == favor_d, "favor_d is NULL");
+ p_retm_if(NULL == f_info, "f_info is NULL");
+
+ switch (favor_d->ug_request)
+ {
+ case PH_UG_REQUEST_SELECT:
+ phone_ug_return_id(favor_d->ug, f_info->person_id, 0, 0);
+ ug_destroy_me(favor_d->ug);
+ break;
+ case PH_UG_REQUEST_SELECT_EMAIL:
+ favor_handle_select_email(favor_d, f_info);
+ break;
+ case PH_UG_REQUEST_SELECT_NUMBER:
+ case PH_UG_REQUEST_LAUNCH_VOICECALL:
+ //FIXME : send selection info to caller
+ favor_handle_select_number(favor_d, f_info);
+ break;
+ case PH_UG_REQUEST_SELECT_NUMBER_OR_EMAIL:
+ favor_handle_select_number_or_email(favor_d, f_info);
+ break;
+ case PH_UG_REQUEST_SET_WITH_NUM:
+ case PH_UG_REQUEST_SET_WITH_EMAIL:
+ case PH_UG_REQUEST_SET_WITH_WEB:
+ view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info));
+ phone_set_view_info(view_info, favor_d->win, favor_d->navi,
+ favor_d->ug, favor_d->ug_request, favor_d->ug_cnt_max,
+ favor_d->ug_data);
+ ctui_list_update_with_data(view_info, favor_d, f_info->person_id,
+ -1, -1);
+ free(view_info);
+ break;
+ case PH_UG_REQUEST_SET_WITH_IMG:
+ favor_d->selected_person_id = f_info->person_id;
+
+ cbs.result_cb = favor_img_crop_result;
+ cbs.destroy_cb = favor_destory_child_ug;
+ cbs.priv = favor_d;
+ favor_d->child_ug = phone_image_crop_ug(favor_d->ug,
+ favor_d->ug_data, &cbs);
+ break;
+ case PH_UG_REQUEST_SET_WITH_RINGTONE:
+ err = contacts_db_get_record(_contacts_person._uri,
+ f_info->person_id, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed");
+
+ err = contacts_record_set_str(record,
+ _contacts_person.ringtone_path, favor_d->ug_data);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed");
+
+ err = contacts_db_update_record(record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_record() Failed(%d)", err);
+
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_update_record() Failed(%d)", err);
+ ctui_create_contacts_error_popup(favor_d->navi, err);
+ }
+ else
+ {
+ err_msg = S_(CT_SYS_POP_SUCCESS);
+ popup = phone_show_popup(favor_d->navi, err_msg, 1.5);
+ evas_object_smart_callback_add(popup, "timeout",
+ favor_popup_response_cb, favor_d);
+ }
+ break;
+ default:
+ ctui_create_detail_view_from_phone(favor_d->win, favor_d->navi,
+ favor_d->ug, f_info->person_id);
+ break;
+ }
+
+}
+
+static void favor_item_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_favor_info *f_info;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ p_retm_if(NULL == favor_d, "favor_d is NULL");
+ p_retm_if(NULL == item, "item is NULL");
+
+ elm_gengrid_item_selected_set(item, EINA_FALSE);
+
+ f_info = (ph_favor_info *) elm_object_item_data_get(item);
+ p_retm_if(NULL == f_info, "elm_object_item_data_get() return NULL");
+
+ if (PH_FAVOR_MODE_EDIT != favor_d->list_mode)
+ {
+ favor_ug_check(favor_d, f_info);
+ }
+ else
+ {
+ updateCheckedItem(item, *favor_d, *f_info);
+ }
+}
+
+#define N 20
+
+static Eina_Bool favor_append_item_part(void *data)
+{
+ PH_TRACE;
+ int count;
+ Eina_List *l;
+ void *v_fd;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+
+ count = 0;
+ l = eina_list_nth_list(favor_d->favor_list, favor_d->readed_n);
+ EINA_LIST_FOREACH(l, l, v_fd)
+ {
+ ph_favor_info *fd = (ph_favor_info *) v_fd;
+ if (N == count)
+ break;
+ if (!fd)
+ continue;
+ if (fd->img_path)
+ fd->item = elm_gengrid_item_append(favor_d->favor_gengrid,
+ &grid_itc_favor, fd, favor_item_sel, favor_d);
+ else
+ fd->item = elm_gengrid_item_append(favor_d->favor_gengrid,
+ &grid_itc_favor_no_id, fd, favor_item_sel, favor_d);
+ count++;
+ }
+ if (N <= count)
+ {
+ favor_d->readed_n += N;
+ return ECORE_CALLBACK_RENEW;
+ }
+ else
+ {
+ favor_d->list_idler = NULL;
+ return ECORE_CALLBACK_CANCEL;
+ }
+}
+
+void ph_favor_fill_favor_gengrid(ph_favorite_data *favor_d)
+{
+ PH_TRACE;
+ int count;
+ Eina_List *l;
+ void *v_f_info;
+ p_retm_if(NULL == favor_d->favor_gengrid, "Parameter is null");
+
+ if (favor_d->list_idler)
+ {
+ ecore_idler_del(favor_d->list_idler);
+ favor_d->list_idler = NULL;
+ }
+
+ if (favor_d->favor_gengrid)
+ elm_gengrid_clear(favor_d->favor_gengrid);
+
+ favor_d->readed_n = 0;
+ count = 0;
+ if (favor_d->favor_list && PH_FAVOR_MODE_DEFAULT == favor_d->list_mode)
+ elm_gengrid_item_append(favor_d->favor_gengrid, &grid_itc_index,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_FAVORITES), NULL, NULL);
+
+ EINA_LIST_FOREACH(favor_d->favor_list, l, v_f_info)
+ {
+ ph_favor_info *f_info = (ph_favor_info *) v_f_info;
+ if (N == count)
+ break;
+ if (!f_info)
+ continue;
+ if (f_info->img_path && *f_info->img_path)
+ f_info->item = elm_gengrid_item_append(favor_d->favor_gengrid,
+ &grid_itc_favor, f_info, favor_item_sel, favor_d);
+ else
+ f_info->item = elm_gengrid_item_append(favor_d->favor_gengrid,
+ &grid_itc_favor_no_id, f_info, favor_item_sel, favor_d);
+
+ if (favor_d->list_mode == PH_FAVOR_MODE_EDIT)
+ elm_object_item_signal_emit(f_info->item,
+ "favorites_theme/edit_no_effect", "favorites_theme");
+ count++;
+ }
+
+ if (N == count)
+ {
+ favor_d->readed_n = N;
+ favor_d->list_idler = ecore_idler_add(favor_append_item_part, favor_d);
+ }
+}
+
+void ph_favor_fill_mf_gengrid(ph_favorite_data *favor_d)
+{
+ PH_TRACE;
+ Eina_List *l;
+ void *v_f_info;
+ p_retm_if(NULL == favor_d->favor_gengrid, "Parameter is null");
+
+ if (favor_d->mf_list)
+ {
+ elm_gengrid_item_append(favor_d->favor_gengrid, &grid_itc_mf_index,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_MOST_FREQUENT_CONTACTS), NULL,
+ NULL);
+
+ EINA_LIST_FOREACH(favor_d->mf_list, l, v_f_info)
+ {
+ ph_favor_info *f_info = (ph_favor_info *) v_f_info;
+ if (!f_info)
+ continue;
+ if (f_info->img_path && *f_info->img_path)
+ f_info->item = elm_gengrid_item_append(favor_d->favor_gengrid,
+ &grid_itc_mf, f_info, favor_item_sel, favor_d);
+ else
+ f_info->item = elm_gengrid_item_append(favor_d->favor_gengrid,
+ &grid_itc_mf_no_id, f_info, favor_item_sel, favor_d);
+ }
+ }
+}
+
+void ph_favor_update_button_status(ph_favorite_data *favor_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == favor_d || NULL == favor_d->navi_button,
+ "Navi button is null");
+
+ if (favor_d->checked_cnt == 0 && PH_FAVOR_MODE_EDIT == favor_d->list_mode)
+ elm_object_disabled_set(favor_d->navi_button, EINA_TRUE);
+ else if (favor_d->favor_list_count == 0)
+ elm_object_disabled_set(favor_d->navi_button, EINA_TRUE);
+ else
+ elm_object_disabled_set(favor_d->navi_button, EINA_FALSE);
+}
+
+static char *favor_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ ph_favor_info *f_info = (ph_favor_info *) data;
+ char buf[PATH_MAX];
+
+ if (0 == strcmp(part, "elm.text"))
+ {
+ if (f_info->display && *f_info->display)
+ snprintf(buf, sizeof(buf), "%s", f_info->display);
+ else
+ {
+ if (!f_info->number_loaded)
+ {
+ f_info->number = favor_get_contact_number(f_info->person_id);
+ f_info->number_loaded = true;
+ }
+
+ if (!f_info->number || !*f_info->number)
+ return strdup(S_(PH_SYS_BODY_NONAME));
+ else
+ snprintf(buf, sizeof(buf), "%s", f_info->number);
+ }
+ return elm_entry_utf8_to_markup(buf);
+ }
+ return NULL;
+}
+
+static char *favor_mf_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ char buf[PATH_MAX];
+ ph_favor_info *f_info = (ph_favor_info *) data;
+
+ if (0 == strcmp(part, "elm.text"))
+ {
+ if (f_info->display && *f_info->display)
+ snprintf(buf, sizeof(buf), "%s", f_info->display);
+ else
+ {
+ if (!f_info->number_loaded)
+ {
+ f_info->number = favor_get_contact_number(f_info->person_id);
+ f_info->number_loaded = true;
+ }
+
+ if (!f_info->number || !*f_info->number)
+ return strdup(S_(PH_SYS_BODY_NONAME));
+ else
+ snprintf(buf, sizeof(buf), "%s", f_info->number);
+ }
+ return elm_entry_utf8_to_markup(buf);
+ }
+ return NULL;
+}
+
+static Evas_Object *favor_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ph_favor_info * f_info = (ph_favor_info *) data;
+ ph_favorite_data *favor_d = (ph_favorite_data *) evas_object_data_get(obj, KEY_FAVOR_DATA);
+ if (0 == strcmp(part, "elm.swallow.icon"))
+ {
+ Evas_Object *ic;
+ char buf[PATH_MAX] = { 0 };
+ if (f_info->img_path && *f_info->img_path)
+ {
+ snprintf(buf, sizeof(buf), "%s", f_info->img_path);
+
+ ic = elm_icon_add(obj);
+ p_retvm_if(NULL == ic, NULL, "elm_icon_add is failed");
+
+ elm_image_file_set(ic, buf, NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL,
+ 1, 1);
+ return ic;
+ }
+ }
+ else if (0 == strcmp(part, "elm.swallow.expand.icon")
+ && favor_d->list_mode == PH_FAVOR_MODE_DEFAULT)
+ {
+ Evas_Object *exp_icon;
+ Evas_Object *btn;
+ btn = elm_button_add(obj);
+ evas_object_propagate_events_set(btn, EINA_FALSE);
+ evas_object_data_set(btn, "f_info", f_info);
+ evas_object_data_set(btn, "item_type", (void *) FAVOR_ITEM_FAVOR);
+ evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_UP,
+ favor_expand_btn_clicked_cb, favor_d);
+ elm_object_style_set(btn, "transparency");
+ exp_icon = elm_icon_add(btn);
+ elm_image_file_set(exp_icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL);
+ elm_object_part_content_set(btn, "icon", exp_icon);
+ evas_object_show(btn);
+ return btn;
+ }
+ else if (0 == strcmp(part, SWALLOW_END)
+ && favor_d->list_mode == PH_FAVOR_MODE_EDIT)
+ {
+ Evas_Object *check;
+ check = elm_check_add(obj);
+ elm_check_state_pointer_set(check, &(f_info->checked));
+
+ int id = f_info->person_id;
+ CheckMap::const_iterator it = favor_d->itemState.find(id);
+ if (it != favor_d->itemState.end())
+ {
+ if (it->second)
+ {
+ ph_favor_info *f_second = (ph_favor_info *)it->second;
+ elm_check_state_set(check, f_second->checked);
+ f_info->id_ret = f_second->id_ret;
+ f_info->id_ret_type = f_second->id_ret_type;
+ }
+ }
+ evas_object_propagate_events_set(check, EINA_FALSE);
+ evas_object_data_set(check, KEY_FAVOR_DATA, favor_d);
+ evas_object_smart_callback_add(check, "changed",
+ ph_favor_edit_check_changed_cb, f_info);
+ return check;
+ }
+ return NULL;
+}
+
+static char* favor_group_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ char *title = (char *) data;
+ if (title && *title)
+ return strdup((const char *) data);
+
+ return NULL;
+}
+
+static Evas_Object *favor_mf_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ph_favor_info *f_info = (ph_favor_info *) data;
+ ph_favorite_data *favor_d = (ph_favorite_data *) evas_object_data_get(obj, KEY_FAVOR_DATA);
+ if (0 == strcmp(part, "elm.swallow.icon"))
+ {
+ Evas_Object *ic;
+ char buf[PATH_MAX];
+
+ if (f_info->img_path && *f_info->img_path)
+ {
+ snprintf(buf, sizeof(buf), "%s", f_info->img_path);
+ ic = elm_icon_add(obj);
+ elm_image_file_set(ic, buf, NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL,
+ 1, 1);
+ return ic;
+ }
+ }
+ else if (0 == strcmp(part, "elm.swallow.expand.icon"))
+ {
+ Evas_Object *exp_icon;
+ Evas_Object *btn;
+ btn = elm_button_add(obj);
+ elm_object_style_set(btn, "transparency");
+ exp_icon = elm_icon_add(btn);
+ elm_image_file_set(exp_icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL);
+ elm_object_part_content_set(btn, "icon", exp_icon);
+ evas_object_propagate_events_set(btn, EINA_FALSE);
+ evas_object_data_set(btn, "f_info", f_info);
+ evas_object_data_set(btn, "item_type", (void *) FAVOR_ITEM_MFC);
+ evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_UP,
+ favor_expand_btn_clicked_cb, favor_d);
+ evas_object_show(btn);
+ return btn;
+ }
+
+ return NULL;
+}
+
+static void favor_grid_move(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int ori_favor_id = -1;
+ int front_favor_id = -1;
+ int back_favor_id = -1;
+ ph_favor_info *f_info;
+ int err = CONTACTS_ERROR_NONE;
+ Elm_Object_Item *prev_item;
+ Elm_Object_Item *next_item;
+ Elm_Object_Item *it = (Elm_Object_Item *) event_info;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+
+ favor_d->favor_move = false;
+ f_info = (ph_favor_info *) elm_object_item_data_get(it);
+ p_retm_if(NULL == f_info, "elm_object_item_data_get() return NULL");
+ ori_favor_id = f_info->person_id;
+
+ prev_item = elm_gengrid_item_prev_get(it);
+ if (prev_item)
+ {
+ f_info = (ph_favor_info *) elm_object_item_data_get(prev_item);
+ if (f_info)
+ front_favor_id = f_info->person_id;
+ }
+
+ next_item = elm_gengrid_item_next_get(it);
+ if (next_item)
+ {
+ f_info = (ph_favor_info *) elm_object_item_data_get(next_item);
+ if (f_info)
+ back_favor_id = f_info->person_id;
+ }
+
+ p_ret_if(-1 == back_favor_id && -1 == front_favor_id);
+ if (-1 == back_favor_id)
+ back_favor_id = 0;
+ if (-1 == front_favor_id)
+ front_favor_id = 0;
+
+ PH_DBG("ori %d front %d back %d ",
+ ori_favor_id, front_favor_id, back_favor_id);
+
+ if (-1 != ori_favor_id && -1 != front_favor_id && -1 != back_favor_id)
+ {
+ err = contacts_person_set_favorite_order(ori_favor_id, front_favor_id,
+ back_favor_id);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_person_set_favorite_order() Failed(%d)", err);
+ favor_d->favor_move = true;
+ }
+}
+
+static void favor_edit_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ __favor_popup_hide_cb(data, NULL, NULL);
+ __favor_menu_hide_cb(data, NULL, NULL);
+
+ ph_favorite_data *favor_d = static_cast<ph_favorite_data*>( data );
+ phone_favor_edit_mode_start(favor_d);
+ }
+}
+
+static void favor_done_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int person_count = 0;
+ int number_count = 0;
+ int email_count = 0;
+ int *result_list_number = NULL;
+ int *result_list_email = NULL;
+ int *result_list_person = NULL;
+ Eina_List *l;
+ ph_favor_info *f_info;
+ void *v_f_info;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ p_retm_if(NULL == favor_d, "parameter(favor_d) is NULL");
+
+ if (PH_UG_REQUEST_CHECK_FOR_NUMBER == favor_d->ug_request)
+ {
+ result_list_number = (int *) calloc(favor_d->checked_cnt, sizeof(int));
+ EINA_LIST_FOREACH(favor_d->mf_list, l, v_f_info)
+ {
+ f_info = (ph_favor_info *) v_f_info;
+ if (NULL == f_info || !f_info->checked)
+ continue;
+ if (1 != f_info->id_ret_type)
+ {
+ ERR("Invalid f_info->id_ret_type(%d)", f_info->id_ret_type);
+ continue;
+ }
+ result_list_number[number_count++] = f_info->id_ret;
+ }
+ v_f_info = (void *) f_info;
+ EINA_LIST_FOREACH(favor_d->favor_list, l, v_f_info)
+ {
+ f_info = (ph_favor_info *) v_f_info;
+ if (NULL == f_info || !f_info->checked)
+ continue;
+ if (1 != f_info->id_ret_type)
+ {
+ ERR("Invalid f_info->id_ret_type(%d)", f_info->id_ret_type);
+ continue;
+ }
+ result_list_number[number_count++] = f_info->id_ret;
+ }
+ phone_list_ug_return_ids(favor_d->ug, result_list_number, number_count,
+ CT_UG_BUNDLE_RESULT_NUMBER_ID_LIST);
+ free(result_list_number);
+ }
+ else if (PH_UG_REQUEST_CHECK_FOR_EMAIL == favor_d->ug_request)
+ {
+ result_list_email = (int *) calloc(favor_d->checked_cnt, sizeof(int));
+ EINA_LIST_FOREACH(favor_d->mf_list, l, v_f_info)
+ {
+ f_info = (ph_favor_info *) v_f_info;
+ if (NULL == f_info || !f_info->checked)
+ continue;
+ if (2 != f_info->id_ret_type)
+ {
+ ERR("Invalid f_info->id_ret_type(%d)", f_info->id_ret_type);
+ continue;
+ }
+ result_list_email[email_count++] = f_info->id_ret;
+ }
+ v_f_info = (void *) f_info;
+ EINA_LIST_FOREACH(favor_d->favor_list, l, v_f_info)
+ {
+ f_info = (ph_favor_info *) v_f_info;
+ if (NULL == f_info || !f_info->checked)
+ continue;
+ if (2 != f_info->id_ret_type)
+ {
+ ERR("Invalid f_info->id_ret_type(%d)", f_info->id_ret_type);
+ continue;
+ }
+ result_list_email[email_count++] = f_info->id_ret;
+ }
+ phone_list_ug_return_ids(favor_d->ug, result_list_email, email_count,
+ CT_UG_BUNDLE_RESULT_EMAIL_ID_LIST);
+ free(result_list_email);
+ }
+ else if (PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == favor_d->ug_request)
+ {
+ result_list_number = (int *) calloc(favor_d->checked_cnt, sizeof(int));
+ result_list_email = (int *) calloc(favor_d->checked_cnt, sizeof(int));
+
+ EINA_LIST_FOREACH(favor_d->mf_list, l, v_f_info)
+ {
+ f_info = (ph_favor_info *) v_f_info;
+ if (NULL == f_info || !f_info->checked)
+ continue;
+ if (1 == f_info->id_ret_type)
+ result_list_number[number_count++] = f_info->id_ret;
+ else if (2 == f_info->id_ret_type)
+ result_list_email[email_count++] = f_info->id_ret;
+ else
+ {
+ ERR("Invalid f_info->id_ret_type(%d)", f_info->id_ret_type);
+ continue;
+ }
+ }
+ v_f_info = (void *) f_info;
+ EINA_LIST_FOREACH(favor_d->favor_list, l, v_f_info)
+ {
+ f_info = (ph_favor_info *) v_f_info;
+ if (NULL == f_info || !f_info->checked)
+ continue;
+ if (1 == f_info->id_ret_type)
+ result_list_number[number_count++] = f_info->id_ret;
+ else if (2 == f_info->id_ret_type)
+ result_list_email[email_count++] = f_info->id_ret;
+ else
+ {
+ ERR("Invalid f_info->id_ret_type(%d)", f_info->id_ret_type);
+ continue;
+ }
+ }
+ phone_list_ug_return_number_email_ids(favor_d->ug, result_list_number,
+ number_count, result_list_email, email_count);
+ free(result_list_number);
+ free(result_list_email);
+ }
+ else
+ {
+ result_list_person = (int *) calloc(favor_d->checked_cnt, sizeof(int));
+ EINA_LIST_FOREACH(favor_d->mf_list, l, v_f_info)
+ {
+ f_info = (ph_favor_info *) v_f_info;
+ result_list_person[person_count++] = f_info->person_id;
+ }
+ v_f_info = (void *) f_info;
+ EINA_LIST_FOREACH(favor_d->favor_list, l, v_f_info)
+ {
+ f_info = (ph_favor_info *) v_f_info;
+ result_list_person[person_count++] = f_info->person_id;
+ }
+ phone_list_ug_return_ids(favor_d->ug, result_list_person, person_count,
+ CT_UG_BUNDLE_RESULT_PERSON_ID_LIST);
+ free(result_list_person);
+ }
+
+ ug_destroy_me(favor_d->ug);
+}
+
+static Eina_List* favor_get_contact(Eina_List *favor_list)
+{
+ PH_TRACE;
+ int person_id;
+ Eina_List *result = NULL;
+ Eina_List *cursor;
+ ct_person_list *person_info;
+ void *v_f_info;
+ int is_exist = false;
+ contacts_list_h person_list = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_db_get_all_records(_contacts_person._uri, 0, 0,
+ &person_list);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_db_get_all_records...() Failed(%d)", err);
+
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ is_exist = false;
+
+ err = phone_cts_get_int_from_list(person_list, _contacts_person.id,
+ &person_id);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_int_from_list() Failed(%d)", err);
+ break;
+ }
+
+ EINA_LIST_FOREACH(favor_list, cursor, v_f_info)
+ {
+ ph_favor_info *f_info = (ph_favor_info *) v_f_info;
+ if (!f_info)
+ continue;
+ if (f_info->person_id == person_id)
+ {
+ is_exist = true;
+ break;
+ }
+ }
+ if (false == is_exist)
+ {
+ char *addressbook_ids;
+ person_info = (ct_person_list *) calloc(1, sizeof(ct_person_list));
+ if (NULL == person_info)
+ {
+ ERR("calloc() return NULL");
+ break;
+ }
+ person_info->id = person_id;
+ err = phone_cts_get_str_from_list(person_list,
+ _contacts_person.display_name, &person_info->display);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_str_from_list() Failed(%d)", err);
+ break;
+ }
+ SAFE_STRDUP(person_info->display);
+ err = phone_cts_get_int_from_list(person_list,
+ _contacts_person.link_count, &person_info->link_count);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_int_from_list() Failed(%d)", err);
+ break;
+ }
+ err = phone_cts_get_str_from_list(person_list,
+ _contacts_person.display_name_index,
+ &(person_info->display_index));
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_str_from_list() Failed(%d)", err);
+ break;
+ }
+ err = phone_cts_get_str_from_list(person_list,
+ _contacts_person_contact.addressbook_ids, &addressbook_ids);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() Failed(%d)", err);
+ person_info->addressbook_id_list = ctui_get_addressbook_id_list(
+ addressbook_ids, " ");
+
+ err = phone_cts_get_str_from_list(person_list,
+ _contacts_person.status, &(person_info->status_str));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() Failed(%d)", err);
+ result = eina_list_append(result, person_info);
+ }
+ err = contacts_list_next(person_list);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ }
+ return result;
+}
+
+static void favor_add_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ Eina_List *ct_list;
+ evas_object_data_set(favor_d->navi, "navi_it_pop", favor_d->navi_item);
+ ct_list = favor_get_contact(favor_d->favor_list);
+ ctui_create_favorite_list_select_view(favor_d->win, favor_d->navi, ct_list);
+}
+
+static int favor_get_mf_list(contacts_list_h *list)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+
+ err = contacts_filter_create(_contacts_person_usage._uri, &filter);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, err,
+ "contactcs_filter_create() Failed(%d)", err);
+
+ do
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_filter_add_int(filter,
+ _contacts_person_usage.times_used,
+ CONTACTS_MATCH_GREATER_THAN_OR_EQUAL, 1)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_create(_contacts_person_usage._uri,
+ &query)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_filter(query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_sort(query,
+ _contacts_person_usage.times_used, false)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_db_get_records_with_query(query, 0, 0, list)))
+ break;
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ return CONTACTS_ERROR_NONE;
+ }
+ while (0);
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ return err;
+}
+void ph_favor_load_mf_list(void *data)
+{
+ PH_TRACE;
+ int count = 0;
+ Eina_List *list = NULL;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ contacts_list_h mf_list = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ favor_free_data(favor_d->mf_list);
+ favor_d->mf_list = NULL;
+ favor_d->mf_list_count = 0;
+
+ err = favor_get_mf_list(&mf_list);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "favor_get_mf_list() Failed()");
+
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ ph_favor_info *f_info;
+ bool is_favorite;
+
+ if (3 <= count)
+ break;
+
+ f_info = (ph_favor_info *)calloc(1, sizeof(ph_favor_info));
+ if (NULL == f_info)
+ {
+ ERR("calloc() return NULL");
+ break;
+ }
+
+ err = phone_cts_get_bool_from_list(mf_list,
+ _contacts_person_usage.is_favorite, &is_favorite);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_bool_from_list() Failed(%d)", err);
+ free(f_info);
+ break;
+ }
+ if (true == is_favorite)
+ {
+ err = contacts_list_next(mf_list);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ free(f_info);
+ break;
+ }
+ continue;
+ }
+ err = phone_cts_get_int_from_list(mf_list,
+ _contacts_person_usage.person_id, &f_info->person_id);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_int_from_list() Failed(%d)", err);
+ free(f_info);
+ break;
+ }
+ err = phone_cts_get_str_from_list(mf_list,
+ _contacts_person_usage.display_name, &f_info->display);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_str_from_list() Failed(%d)", err);
+ free(f_info);
+ break;
+ }
+ err = phone_cts_get_str_from_list(mf_list,
+ _contacts_person_usage.image_thumbnail_path, &f_info->img_path);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_str_from_list() Failed(%d)", err);
+ free(f_info);
+ break;
+ }
+ if (CT_UG_REQUEST_SELECT_NUMBER == favor_d->ug_request)
+ {
+ f_info->contact_list = ctui_person_get_contact_list(
+ f_info->person_id);
+ p_warn_if(NULL == f_info->contact_list,
+ "ctui_person_get_contact_list() return NULL");
+ f_info->number_list = ctui_person_get_number_list(
+ f_info->contact_list);
+ p_warn_if(NULL == f_info->number_list,
+ "ctui_person_get_contact_list() return NULL");
+ }
+ else if (CT_UG_REQUEST_SELECT_EMAIL == favor_d->ug_request)
+ {
+ f_info->contact_list = ctui_person_get_contact_list(
+ f_info->person_id);
+ p_warn_if(NULL == f_info->contact_list,
+ "ctui_person_get_contact_list() return NULL");
+ f_info->email_list = ctui_person_get_email_list(
+ f_info->contact_list);
+ p_warn_if(NULL == f_info->email_list,
+ "ctui_person_get_contact_list() return NULL");
+
+ }
+
+ list = eina_list_append(list, (void*) f_info);
+ count++;
+ err = contacts_list_next(mf_list);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ }
+ err = contacts_list_destroy(mf_list, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_destroy() Failed(%d)",
+ err);
+
+ favor_d->mf_list = list;
+ favor_d->mf_list_count = count;
+}
+
+static void favor_create_favorite(ph_favorite_data *favor_d)
+{
+ PH_TRACE;
+ Evas_Object *gengrid;
+ int wx = 0;
+ int hy = 0;
+
+ favor_d->box = elm_box_add(favor_d->layout);
+ evas_object_size_hint_weight_set(favor_d->box, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_object_part_content_set(favor_d->layout, "contents", favor_d->box);
+ evas_object_show(favor_d->box);
+
+ gengrid = elm_gengrid_add(favor_d->box);
+ elm_object_theme_set(gengrid, favor_d->th);
+ evas_object_size_hint_weight_set(gengrid, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(gengrid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ ecore_x_window_size_get(ecore_x_window_root_get(ecore_x_window_focus_get()),
+ &wx, &hy);
+
+ elm_gengrid_item_size_set(gengrid, wx / 3, wx / 3);
+ elm_gengrid_align_set(gengrid, 0.0, 0.0);
+ elm_gengrid_horizontal_set(gengrid, EINA_FALSE);
+ elm_gengrid_multi_select_set(gengrid, EINA_TRUE);
+
+ evas_object_smart_callback_add(gengrid, "moved", favor_grid_move, favor_d);
+
+ favor_d->favor_gengrid = gengrid;
+ elm_gengrid_reorder_mode_set(favor_d->favor_gengrid, EINA_FALSE);
+ evas_object_data_set(gengrid, KEY_FAVOR_DATA, favor_d);
+ evas_object_show(favor_d->favor_gengrid);
+ elm_box_pack_end(favor_d->box, favor_d->favor_gengrid);
+}
+
+static void favor_fill_layout(ph_favorite_data *favor_d)
+{
+ PH_TRACE;
+ if (favor_d->ctx_popup)
+ {
+ evas_object_del(favor_d->ctx_popup);
+ favor_d->ctx_popup = NULL;
+ }
+
+ if (0 == favor_d->favor_list_count && 0 < favor_d->mf_list_count
+ && 0 == ctui_get_mfc_option())
+ {
+ if (NULL == favor_d->favor_gengrid)
+ favor_create_favorite(favor_d);
+ else
+ elm_gengrid_clear(favor_d->favor_gengrid);
+ if (favor_d->list_mode == CT_LIST_MODE_DEFAULT)
+ ph_favor_fill_mf_gengrid(favor_d);
+ }
+ else if (0 < favor_d->favor_list_count
+ || (0 < favor_d->mf_list_count && 0 == ctui_get_mfc_option()))
+ {
+ if (NULL == favor_d->favor_gengrid)
+ favor_create_favorite(favor_d);
+ else
+ elm_gengrid_clear(favor_d->favor_gengrid);
+ ph_favor_fill_favor_gengrid(favor_d);
+ if (0 == ctui_get_mfc_option()
+ && favor_d->list_mode == CT_LIST_MODE_DEFAULT)
+ ph_favor_fill_mf_gengrid(favor_d);
+ }
+ else if (0 == favor_d->favor_list_count
+ && (0 == favor_d->mf_list_count || 1 == ctui_get_mfc_option()))
+ {
+ if (favor_d->favor_gengrid)
+ {
+ elm_gengrid_clear(favor_d->favor_gengrid);
+ evas_object_del(favor_d->favor_gengrid);
+ evas_object_del(favor_d->box);
+ favor_d->favor_gengrid = NULL;
+ favor_d->box = NULL;
+ }
+ Evas_Object *base;
+ base = phone_create_nocontents(favor_d->layout,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_NO_FAVORITES));
+ p_retm_if(NULL == base, "elm_layout_add() return NULL");
+ elm_object_part_content_set(favor_d->layout, "contents", base);
+ evas_object_show(base);
+ }
+}
+
+static Eina_Bool favor_data_changed_cb(void *data)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ p_retvm_if(NULL == favor_d, ECORE_CALLBACK_CANCEL, "favor_d is null");
+
+ if (favor_d->update_timer_favor)
+ {
+ ecore_timer_del(favor_d->update_timer_favor);
+ favor_d->update_timer_favor = NULL;
+ }
+
+ ph_favor_load_mf_list(favor_d);
+ ph_favor_load_favor_list(favor_d);
+ favor_fill_layout(favor_d);
+ ph_favor_update_button_status(favor_d);
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+void ph_favor_data_lazy_update(const char *view_uri, void *data)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+
+ if (favor_d->updating)
+ return;
+
+ if (favor_d->update_timer_favor)
+ {
+ ecore_timer_del(favor_d->update_timer_favor);
+ favor_d->update_timer_favor = NULL;
+ }
+
+ PH_DBG("favor_d->is_background=%d", favor_d->is_background);
+
+ if (favor_d->is_background)
+ favor_d->update_timer_favor = ecore_timer_add(3.0,
+ favor_data_changed_cb, favor_d);
+ else
+ favor_data_changed_cb(favor_d);
+}
+
+static Eina_Bool favor_log_data_changed_cb(void *data)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ p_retvm_if(NULL == favor_d, ECORE_CALLBACK_CANCEL, "favor_d is null");
+
+ if (favor_d->update_timer_log)
+ {
+ ecore_timer_del(favor_d->update_timer_log);
+ favor_d->update_timer_log = NULL;
+ }
+
+ ph_favor_load_mf_list(favor_d);
+ favor_fill_layout(favor_d);
+ ph_favor_update_button_status(favor_d);
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void favor_log_data_lazy_update(const char *view_uri, void *data)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+
+ if (favor_d->update_timer_log)
+ {
+ ecore_timer_del(favor_d->update_timer_log);
+ favor_d->update_timer_log = NULL;
+ }
+
+ PH_DBG("favor_d->is_background=%d", favor_d->is_background);
+
+ if (favor_d->is_background)
+ favor_d->update_timer_log = ecore_timer_add(3.0,
+ favor_log_data_changed_cb, favor_d);
+ else
+ favor_log_data_changed_cb(favor_d);
+}
+
+static int favor_get_person_id_by_contact_id(int contact_id)
+{
+ PH_TRACE;
+ int person_id = 0;
+ contacts_record_h record = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_db_get_record(_contacts_contact._uri, contact_id, &record);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, err,
+ "contacts_db_get_record() Failed()");
+
+ err = contacts_record_get_int(record, _contacts_contact.person_id,
+ &person_id);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_int() Failed(%d)", err);
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ }
+
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ return person_id;
+}
+
+static ph_favor_info* favor_find_info_by_contact_id(ph_favorite_data *favor_d,
+ int contact_id)
+{
+ PH_TRACE;
+ int person_id;
+ void *v_f_info;
+ Eina_List *l;
+
+ person_id = favor_get_person_id_by_contact_id(contact_id);
+ EINA_LIST_FOREACH(favor_d->favor_list, l, v_f_info)
+ {
+ ph_favor_info *f_info = (ph_favor_info *) v_f_info;
+ if (!f_info)
+ continue;
+ if (f_info->person_id == person_id)
+ return f_info;
+ }
+ return NULL;
+}
+
+static int favor_set_updated_data(ph_favorite_data *favor_d, int ab_id)
+{
+ PH_TRACE;
+ int contact_id;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_list_h list = NULL;
+ int ver;
+ int type;
+ contacts_record_h record = NULL;
+
+ err = contacts_db_get_changes_by_version(
+ _contacts_contact_updated_info._uri, ab_id, favor_d->version, &list,
+ &ver);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, FALSE,
+ "contacts_db_get_changes_by_version() Failed(%d)", err);
+
+ if (!list)
+ return TRUE;
+
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ ph_favor_info *f_info;
+ err = phone_cts_get_int_from_list(list,
+ _contacts_contact_updated_info.contact_id, &contact_id);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_int_from_list() Failed(%d)", err);
+ break;
+ }
+ err = phone_cts_get_int_from_list(list,
+ _contacts_contact_updated_info.type, &type);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_int_from_list() Failed(%d)", err);
+ break;
+ }
+
+ if (favor_d->version < ver)
+ favor_d->version = ver;
+
+ switch (type)
+ {
+ case CONTACTS_CHANGE_UPDATED:
+ f_info = favor_find_info_by_contact_id(favor_d, contact_id);
+
+ if (f_info)
+ {
+ favor_d->is_mf_changed = true;
+ err = contacts_db_get_record(_contacts_person._uri,
+ f_info->person_id, &record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_get_record() is failed");
+ f_info->img_path = NULL;
+ break;
+ }
+ else
+ {
+ free(f_info->display);
+ err = contacts_record_get_str(record,
+ _contacts_person.display_name,
+ &f_info->display);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_str() Failed(%d)", err);
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)",
+ err);
+ break;
+ }
+ f_info->number_loaded = false;
+ free(f_info->number);
+ f_info->number = NULL;
+ free(f_info->img_path);
+ err = contacts_record_get_str(record,
+ _contacts_person.image_thumbnail_path,
+ &f_info->img_path);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_get_str() Failed(%d)", err);
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)",
+ err);
+ break;
+ }
+ }
+ if (f_info->img_path && *f_info->img_path)
+ elm_gengrid_item_item_class_update(f_info->item,
+ &grid_itc_favor);
+ else
+ elm_gengrid_item_item_class_update(f_info->item,
+ &grid_itc_favor_no_id);
+ }
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ break;
+ case CONTACTS_CHANGE_DELETED:
+ favor_free_data(favor_d->favor_list);
+ favor_d->favor_list = NULL;
+ favor_load_favorite_data(favor_d);
+ break;
+ case CONTACTS_CHANGE_INSERTED:
+ default:
+ break;
+ }
+ err = contacts_list_next(list);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_next() Failed(%d)",
+ err);
+ }
+ phone_cts_free_list(list);
+ return TRUE;
+}
+
+static Eina_Bool favor_contact_data_changed_cb(void *data)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ contacts_list_h ab_list = NULL;
+ int ab_id;
+ int ret;
+ int err = CONTACTS_ERROR_NONE;
+ p_retvm_if(NULL == favor_d, ECORE_CALLBACK_CANCEL, "favor_d is null");
+
+ favor_d->is_mf_changed = false;
+
+ if (favor_d->update_timer_contact)
+ {
+ ecore_timer_del(favor_d->update_timer_contact);
+ favor_d->update_timer_contact = NULL;
+ }
+
+ ret = favor_set_updated_data(favor_d, 0);
+ if (!ret)
+ {
+ ERR("favor_set_updated_data is failed(%d)", ret);
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ err = contacts_db_get_all_records(_contacts_address_book._uri, 0, 0,
+ &ab_list);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_get_all_records is failed(%d)", err);
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ err = phone_cts_get_int_from_list(ab_list, _contacts_address_book.id,
+ &ab_id);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("phone_cts_get_int_from_list() Failed(%d)", err);
+ break;
+ }
+ ret = favor_set_updated_data(favor_d, ab_id);
+ if (!ret)
+ {
+ ERR("favor_set_updated_data is failed");
+ break;
+ }
+ err = contacts_list_next(ab_list);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_next() Failed(%d)",
+ err);
+ }
+ phone_cts_free_list(ab_list);
+
+ ph_favor_load_mf_list(favor_d);
+ favor_fill_layout(favor_d);
+
+ ph_favor_update_button_status(favor_d);
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void favor_view_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) data;
+ int err = CONTACTS_ERROR_NONE;
+ p_retm_if(NULL == favor_d, "favor_d is null");
+
+ if (favor_d->p_info)
+ {
+ free(favor_d->p_info);
+ }
+ // TODO: Fixme - person_changed
+
+ err = contacts_db_remove_changed_cb(_contacts_person._uri,
+ ph_favor_data_lazy_update, favor_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_remove_changed_cb() Failed(%d)", err);
+
+ err = contacts_db_remove_changed_cb(_contacts_phone_log._uri,
+ favor_log_data_lazy_update, favor_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_remove_changed_cb() Failed(%d)", err);
+
+ if (favor_d->th)
+ {
+ elm_theme_extension_del(favor_d->th, FAVORITES_THEME_EDJ);
+ elm_theme_extension_del(favor_d->th, CONTACT_BUTTON_THEME_EDJ);
+ elm_theme_free(favor_d->th);
+ }
+
+ if (favor_d->favor_list)
+ favor_free_data(favor_d->favor_list);
+
+ if (favor_d->mf_list)
+ favor_free_data(favor_d->mf_list);
+
+ if (favor_d->popup)
+ evas_object_del(favor_d->popup);
+
+ if (favor_d->m_Menu)
+ evas_object_del(favor_d->m_Menu);
+
+ if (favor_d->update_timer_contact)
+ ecore_timer_del(favor_d->update_timer_contact);
+
+ if (favor_d->update_timer_log)
+ ecore_timer_del(favor_d->update_timer_log);
+
+ if (favor_d->update_timer_favor)
+ ecore_timer_del(favor_d->update_timer_favor);
+
+ delete favor_d;
+}
+
+static void favor_set_gengrid_item_style()
+{
+ PH_TRACE;
+ grid_itc_favor.item_style = "gridtext_favorites";
+ grid_itc_favor.func.text_get = favor_label_get;
+ grid_itc_favor.func.content_get = favor_icon_get;
+ grid_itc_favor.func.state_get = NULL;
+ grid_itc_favor.func.del = NULL;
+
+ grid_itc_mf.item_style = "gridtext_favorites";
+ grid_itc_mf.func.text_get = favor_mf_label_get;
+ grid_itc_mf.func.content_get = favor_mf_icon_get;
+ grid_itc_mf.func.state_get = NULL;
+ grid_itc_mf.func.del = NULL;
+
+ grid_itc_favor_no_id.item_style = "gridtext_favorites_no_id";
+ grid_itc_favor_no_id.func.text_get = favor_label_get;
+ grid_itc_favor_no_id.func.content_get = favor_icon_get;
+ grid_itc_favor_no_id.func.state_get = NULL;
+ grid_itc_favor_no_id.func.del = NULL;
+
+ grid_itc_mf_no_id.item_style = "gridtext_favorites_no_id";
+ grid_itc_mf_no_id.func.text_get = favor_mf_label_get;
+ grid_itc_mf_no_id.func.content_get = favor_mf_icon_get;
+ grid_itc_mf_no_id.func.state_get = NULL;
+ grid_itc_mf_no_id.func.del = NULL;
+
+ grid_itc_index.item_style = "group_index";
+ grid_itc_index.func.text_get = favor_group_label_get;
+
+ grid_itc_mf_index.item_style = "group_index";
+ grid_itc_mf_index.func.text_get = favor_group_label_get;
+}
+
+static int favor_create_layout(ph_favorite_data *favor_d, Evas_Object *parent)
+{
+ PH_TRACE;
+ Evas_Object *base;
+ Evas_Object *layout;
+ int err = CONTACTS_ERROR_NONE;
+
+ favor_d->navi = parent;
+ base = phone_create_base_layout(favor_d->navi, false);
+
+ layout = elm_layout_add(base);
+ elm_object_part_content_set(base, "elm.swallow.content", layout);
+
+ p_retvm_if(NULL == layout, -1, "elm_layout_add return NULL");
+ elm_layout_file_set(layout, SELECTION_INFO_EDJ, "selectioninfo_layout");
+
+ favor_d->layout = layout;
+ evas_object_show(layout);
+
+ favor_set_gengrid_item_style();
+
+ if (0 == ctui_get_mfc_option())
+ {
+ ph_favor_load_mf_list(favor_d);
+ }
+
+ ph_favor_load_favor_list(favor_d);
+ favor_fill_layout(favor_d);
+
+ evas_object_event_callback_add(favor_d->layout, EVAS_CALLBACK_DEL,
+ favor_view_delete_cb, favor_d);
+
+ // TODO: Fixme - person_changed
+ err = contacts_db_add_changed_cb(_contacts_person._uri,
+ ph_favor_data_lazy_update, favor_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_add_changed_cb() Failed(%d)", err);
+
+ err = contacts_db_add_changed_cb(_contacts_phone_log._uri,
+ favor_log_data_lazy_update, favor_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_add_changed_cb() Failed(%d)", err);
+
+ return 0;
+}
+
+static void favor_more_btn_clicked_cb(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_favorite_data *favor_d = static_cast<ph_favorite_data*>(data);
+
+ favor_ctxpopup_dismissed_cb(favor_d, favor_d->ctx_popup, NULL);
+ __favor_popup_hide_cb(data, NULL, NULL);
+ __favor_menu_hide_cb(data, NULL, NULL);
+
+ Evas_Object *menu = elm_ctxpopup_add(favor_d->navi);
+ if (NULL != menu)
+ {
+ elm_ctxpopup_item_append(menu, S_(PH_SYS_SK_EDIT), NULL, favor_edit_btn_cb, favor_d);
+
+ elm_ctxpopup_direction_priority_set(menu, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN);
+
+ evas_object_smart_callback_add(menu, "dismissed", __favor_menu_hide_cb, favor_d);
+
+ int x, y, w, h;
+ evas_object_geometry_get(favor_d->navi, &x, &y, &w, &h);
+
+ evas_object_move(menu, 0, y + h);
+ evas_object_show(menu);
+
+ favor_d->m_Menu = menu;
+ }
+ else
+ {
+ ERR("favor_more_btn_clicked_cb failed: ", "elm_ctxpopup_add() return NULL");
+ }
+ }
+ else
+ {
+ ERR("favor_more_btn_clicked_cb failed: ", "data is NULL");
+ }
+}
+
+API void phone_favor_set_navi(Evas_Object *layout, int mode)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d = (ph_favorite_data *) evas_object_data_get(layout, KEY_FAVOR_DATA);
+ Elm_Object_Item *navi_item;
+
+ p_retm_if(NULL == favor_d, "favor data is NULL");
+ navi_item = elm_naviframe_bottom_item_get(favor_d->navi);
+ p_retm_if(NULL == navi_item, "navi item is NULL");
+
+ phone_navi_item_reset(navi_item, favor_d);
+
+ if (favor_d->ug)
+ {
+ if (mode == PH_FAVOR_MODE_EDIT)
+ {
+ favor_d->navi_button = phone_create_toolbar_btn(favor_d->layout,
+ S_(CT_SYS_SK_DONE), favor_done_btn_cb, favor_d);
+ elm_object_part_content_set(favor_d->layout, "toolbar",
+ favor_d->navi_button);
+ elm_object_style_set(favor_d->navi_button,
+ "naviframe/toolbar/left");
+ }
+ }
+ else
+ {
+ if (mode == PH_FAVOR_MODE_DEFAULT)
+ {
+ Evas_Object *add_button = NULL;
+
+ favor_d->menu_cb = favor_more_btn_clicked_cb;
+
+ add_button = phone_create_toolbar_btn(favor_d->layout,
+ S_(CT_SYS_SK_ADD), favor_add_btn_cb, favor_d);
+ elm_object_part_content_set(favor_d->layout, "toolbar",
+ add_button);
+ }
+ else
+ { // edit mode
+ favor_d->navi_button = phone_create_toolbar_btn(favor_d->layout,
+ S_(PH_SYS_SK_DELETE), ph_favor_edit_del_btn_cb,
+ favor_d);
+ elm_object_part_content_set(favor_d->layout, "toolbar",
+ favor_d->navi_button);
+ elm_object_style_set(favor_d->navi_button,
+ "naviframe/toolbar/left");
+ favor_d->back_cb = ph_favor_edit_cancel_cb;
+ }
+ }
+ ph_favor_update_button_status(favor_d);
+}
+
+Evas_Object* phone_favor_create_view(ph_view_info *view_info)
+{
+ PH_TRACE;
+ int ret;
+ Elm_Theme *th;
+ ph_favorite_data *favor_d = new ph_favorite_data();
+ p_retvm_if(NULL == favor_d, NULL, "Fail to calloc ph_favorite_data");
+ favor_d->ug = view_info->ug;
+ favor_d->win = view_info->win;
+ favor_d->navi_item = elm_naviframe_bottom_item_get(view_info->navi);
+ favor_d->ug_request = view_info->ug_request;
+ favor_d->ug_data = view_info->ug_data;
+ favor_d->ug_cnt_max = view_info->ug_cnt_max;
+ favor_d->is_background = true;
+
+ th = elm_theme_new();
+ elm_theme_ref_set(th, NULL);
+ elm_theme_extension_add(th, FAVORITES_THEME_EDJ);
+ elm_theme_extension_add(th, CONTACT_BUTTON_THEME_EDJ);
+
+ favor_d->th = th;
+
+ ret = favor_create_layout(favor_d, view_info->navi);
+ if (ret < 0)
+ {
+ delete favor_d;
+ return NULL;
+ }
+
+ evas_object_data_set(favor_d->layout, KEY_FAVOR_DATA, favor_d);
+ return favor_d->layout;
+}
+
+API void phone_favor_view_language_changed(Evas_Object *base)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d;
+ favor_d = (ph_favorite_data *) evas_object_data_get(base, KEY_FAVOR_DATA);
+ p_retm_if(NULL == favor_d, "favor_d is null");
+ favor_data_changed_cb(favor_d);
+
+ if (PH_FAVOR_MODE_EDIT == favor_d->list_mode)
+ ph_favor_edit_set_selection_info(favor_d);
+}
+
+void phone_favor_view_reset(Evas_Object *base)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d;
+ Elm_Object_Item * item;
+
+ favor_d = (ph_favorite_data *) evas_object_data_get(base, KEY_FAVOR_DATA);
+ p_retm_if(NULL == favor_d, "favor_d is null");
+
+ if (favor_d->child_ug)
+ {
+ ug_destroy(favor_d->child_ug);
+ favor_d->child_ug = NULL;
+ }
+
+ if (PH_UG_REQUEST_CHECK != favor_d->ug_request
+ && PH_UG_REQUEST_CHECK_FOR_NUMBER != favor_d->ug_request
+ && PH_UG_REQUEST_CHECK_FOR_EMAIL != favor_d->ug_request)
+ if (PH_FAVOR_MODE_EDIT == favor_d->list_mode)
+ ph_favor_edit_mode_end(favor_d, false);
+
+ item = elm_naviframe_bottom_item_get(favor_d->navi);
+ if (elm_naviframe_top_item_get(favor_d->navi) != item)
+ elm_naviframe_item_pop_to(item);
+
+ favor_d->navi_button = NULL;
+}
+
+void phone_favor_set_background(Evas_Object *obj, bool is_background)
+{
+ PH_TRACE;
+ ph_favorite_data *favor_d;
+ favor_d = (ph_favorite_data *) evas_object_data_get(obj, KEY_FAVOR_DATA);
+ p_retm_if(NULL == favor_d, "favor data is null");
+
+ favor_d->is_background = is_background;
+
+ if (favor_d->update_timer_contact)
+ {
+ ecore_timer_del(favor_d->update_timer_contact);
+ favor_d->update_timer_contact = NULL;
+ favor_contact_data_changed_cb(favor_d);
+ }
+
+ if (favor_d->update_timer_favor)
+ {
+ ecore_timer_del(favor_d->update_timer_favor);
+ favor_d->update_timer_favor = NULL;
+ favor_data_changed_cb(favor_d);
+ }
+
+ if (favor_d->update_timer_log)
+ {
+ ecore_timer_del(favor_d->update_timer_log);
+ favor_d->update_timer_log = NULL;
+ favor_log_data_changed_cb(favor_d);
+ }
+
+ if (true == is_background)
+ favor_d->mfc_option = ctui_get_mfc_option();
+ else
+ favor_fill_layout(favor_d);
+}
+
diff --git a/lib/favor/ph-favorite-view.h b/lib/favor/ph-favorite-view.h
new file mode 100755
index 0000000..68c0281
--- /dev/null
+++ b/lib/favor/ph-favorite-view.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PH_FAVORTIE_VIEW_H__
+#define __PH_FAVORTIE_VIEW_H__
+
+void ph_favor_update_button_status(ph_favorite_data *favor_d);
+Evas_Object* ph_favor_create_value_list_popup(ph_favorite_data *favor_d,
+ ph_favor_info *f_info);
+void ph_favor_load_mf_list(void *data);
+void ph_favor_fill_mf_gengrid(ph_favorite_data *favor_d);
+void ph_favor_fill_favor_gengrid(ph_favorite_data *favor_d);
+void ph_favor_load_favor_list(ph_favorite_data *favor_d);
+void ph_favor_data_lazy_update(const char *view_uri, void *data);
+
+#endif /* __PH_FAVORTIE_VIEW_H__ */
+
diff --git a/lib/images/contact_images/00_Nocontents_picture.png b/lib/images/contact_images/00_Nocontents_picture.png
new file mode 100755
index 0000000..2c5687b
--- /dev/null
+++ b/lib/images/contact_images/00_Nocontents_picture.png
Binary files differ
diff --git a/lib/images/contact_images/00_check_checking.png b/lib/images/contact_images/00_check_checking.png
new file mode 100755
index 0000000..c6ce824
--- /dev/null
+++ b/lib/images/contact_images/00_check_checking.png
Binary files differ
diff --git a/lib/images/contact_images/00_list_group_bg.png b/lib/images/contact_images/00_list_group_bg.png
new file mode 100644
index 0000000..1260007
--- /dev/null
+++ b/lib/images/contact_images/00_list_group_bg.png
Binary files differ
diff --git a/lib/images/contact_images/01_controlbar_icon_add-to-bookmarks.png b/lib/images/contact_images/01_controlbar_icon_add-to-bookmarks.png
new file mode 100644
index 0000000..bc2e48b
--- /dev/null
+++ b/lib/images/contact_images/01_controlbar_icon_add-to-bookmarks.png
Binary files differ
diff --git a/lib/images/contact_images/01_controlbar_icon_add_account.png b/lib/images/contact_images/01_controlbar_icon_add_account.png
new file mode 100644
index 0000000..e5803cd
--- /dev/null
+++ b/lib/images/contact_images/01_controlbar_icon_add_account.png
Binary files differ
diff --git a/lib/images/contact_images/01_controlbar_icon_add_to_contact.png b/lib/images/contact_images/01_controlbar_icon_add_to_contact.png
new file mode 100644
index 0000000..65d47e4
--- /dev/null
+++ b/lib/images/contact_images/01_controlbar_icon_add_to_contact.png
Binary files differ
diff --git a/lib/images/contact_images/01_controlbar_icon_bluetooth_preview.png b/lib/images/contact_images/01_controlbar_icon_bluetooth_preview.png
new file mode 100644
index 0000000..99946bb
--- /dev/null
+++ b/lib/images/contact_images/01_controlbar_icon_bluetooth_preview.png
Binary files differ
diff --git a/lib/images/contact_images/01_controlbar_icon_close.png b/lib/images/contact_images/01_controlbar_icon_close.png
new file mode 100644
index 0000000..91b04e5
--- /dev/null
+++ b/lib/images/contact_images/01_controlbar_icon_close.png
Binary files differ
diff --git a/lib/images/contact_images/01_controlbar_icon_exchangs_register.png b/lib/images/contact_images/01_controlbar_icon_exchangs_register.png
new file mode 100644
index 0000000..58c6e27
--- /dev/null
+++ b/lib/images/contact_images/01_controlbar_icon_exchangs_register.png
Binary files differ
diff --git a/lib/images/contact_images/01_controlbar_icon_groups.png b/lib/images/contact_images/01_controlbar_icon_groups.png
new file mode 100644
index 0000000..e793512
--- /dev/null
+++ b/lib/images/contact_images/01_controlbar_icon_groups.png
Binary files differ
diff --git a/lib/images/contact_images/01_controlbar_icon_more.png b/lib/images/contact_images/01_controlbar_icon_more.png
new file mode 100644
index 0000000..651c8e1
--- /dev/null
+++ b/lib/images/contact_images/01_controlbar_icon_more.png
Binary files differ
diff --git a/lib/images/contact_images/01_controlbar_icon_next.png b/lib/images/contact_images/01_controlbar_icon_next.png
new file mode 100644
index 0000000..4a0505e
--- /dev/null
+++ b/lib/images/contact_images/01_controlbar_icon_next.png
Binary files differ
diff --git a/lib/images/contact_images/01_controlbar_icon_previous.png b/lib/images/contact_images/01_controlbar_icon_previous.png
new file mode 100644
index 0000000..066f51c
--- /dev/null
+++ b/lib/images/contact_images/01_controlbar_icon_previous.png
Binary files differ
diff --git a/lib/images/contact_images/C02_account_00.png b/lib/images/contact_images/C02_account_00.png
new file mode 100644
index 0000000..e0b5b0c
--- /dev/null
+++ b/lib/images/contact_images/C02_account_00.png
Binary files differ
diff --git a/lib/images/contact_images/C02_account_01.png b/lib/images/contact_images/C02_account_01.png
new file mode 100644
index 0000000..f58f271
--- /dev/null
+++ b/lib/images/contact_images/C02_account_01.png
Binary files differ
diff --git a/lib/images/contact_images/C02_account_02.png b/lib/images/contact_images/C02_account_02.png
new file mode 100644
index 0000000..f90a630
--- /dev/null
+++ b/lib/images/contact_images/C02_account_02.png
Binary files differ
diff --git a/lib/images/contact_images/C02_account_03.png b/lib/images/contact_images/C02_account_03.png
new file mode 100644
index 0000000..85af61a
--- /dev/null
+++ b/lib/images/contact_images/C02_account_03.png
Binary files differ
diff --git a/lib/images/contact_images/C02_account_04.png b/lib/images/contact_images/C02_account_04.png
new file mode 100644
index 0000000..fb8a161
--- /dev/null
+++ b/lib/images/contact_images/C02_account_04.png
Binary files differ
diff --git a/lib/images/contact_images/C02_account_default.png b/lib/images/contact_images/C02_account_default.png
new file mode 100644
index 0000000..900dcde
--- /dev/null
+++ b/lib/images/contact_images/C02_account_default.png
Binary files differ
diff --git a/lib/images/contact_images/C02_account_sim.png b/lib/images/contact_images/C02_account_sim.png
new file mode 100644
index 0000000..4337a93
--- /dev/null
+++ b/lib/images/contact_images/C02_account_sim.png
Binary files differ
diff --git a/lib/images/contact_images/C02_caller_id_icon_camera.png b/lib/images/contact_images/C02_caller_id_icon_camera.png
new file mode 100755
index 0000000..f693362
--- /dev/null
+++ b/lib/images/contact_images/C02_caller_id_icon_camera.png
Binary files differ
diff --git a/lib/images/contact_images/C02_caller_id_icon_camera_dim.png b/lib/images/contact_images/C02_caller_id_icon_camera_dim.png
new file mode 100755
index 0000000..04dc3e5
--- /dev/null
+++ b/lib/images/contact_images/C02_caller_id_icon_camera_dim.png
Binary files differ
diff --git a/lib/images/contact_images/C02_caller_id_icon_camera_press.png b/lib/images/contact_images/C02_caller_id_icon_camera_press.png
new file mode 100755
index 0000000..3768438
--- /dev/null
+++ b/lib/images/contact_images/C02_caller_id_icon_camera_press.png
Binary files differ
diff --git a/lib/images/contact_images/C02_caller_id_icon_gallery.png b/lib/images/contact_images/C02_caller_id_icon_gallery.png
new file mode 100755
index 0000000..7fab4bd
--- /dev/null
+++ b/lib/images/contact_images/C02_caller_id_icon_gallery.png
Binary files differ
diff --git a/lib/images/contact_images/C02_caller_id_icon_gallery_dim.png b/lib/images/contact_images/C02_caller_id_icon_gallery_dim.png
new file mode 100755
index 0000000..b05d4ca
--- /dev/null
+++ b/lib/images/contact_images/C02_caller_id_icon_gallery_dim.png
Binary files differ
diff --git a/lib/images/contact_images/C02_caller_id_icon_gallery_press.png b/lib/images/contact_images/C02_caller_id_icon_gallery_press.png
new file mode 100755
index 0000000..bb0fac3
--- /dev/null
+++ b/lib/images/contact_images/C02_caller_id_icon_gallery_press.png
Binary files differ
diff --git a/lib/images/contact_images/C02_circle_button.png b/lib/images/contact_images/C02_circle_button.png
new file mode 100755
index 0000000..5e58d0d
--- /dev/null
+++ b/lib/images/contact_images/C02_circle_button.png
Binary files differ
diff --git a/lib/images/contact_images/C02_circle_button_press.png b/lib/images/contact_images/C02_circle_button_press.png
new file mode 100755
index 0000000..8ea6881
--- /dev/null
+++ b/lib/images/contact_images/C02_circle_button_press.png
Binary files differ
diff --git a/lib/images/contact_images/C02_circle_icon_call.png b/lib/images/contact_images/C02_circle_icon_call.png
new file mode 100755
index 0000000..ef1bcea
--- /dev/null
+++ b/lib/images/contact_images/C02_circle_icon_call.png
Binary files differ
diff --git a/lib/images/contact_images/C02_circle_icon_call_press.png b/lib/images/contact_images/C02_circle_icon_call_press.png
new file mode 100755
index 0000000..c1bed80
--- /dev/null
+++ b/lib/images/contact_images/C02_circle_icon_call_press.png
Binary files differ
diff --git a/lib/images/contact_images/C02_circle_icon_sms.png b/lib/images/contact_images/C02_circle_icon_sms.png
new file mode 100755
index 0000000..6744857
--- /dev/null
+++ b/lib/images/contact_images/C02_circle_icon_sms.png
Binary files differ
diff --git a/lib/images/contact_images/C02_circle_icon_sms_press.png b/lib/images/contact_images/C02_circle_icon_sms_press.png
new file mode 100755
index 0000000..ff6b712
--- /dev/null
+++ b/lib/images/contact_images/C02_circle_icon_sms_press.png
Binary files differ
diff --git a/lib/images/contact_images/C02_circle_icon_vt-call.png b/lib/images/contact_images/C02_circle_icon_vt-call.png
new file mode 100755
index 0000000..8a60957
--- /dev/null
+++ b/lib/images/contact_images/C02_circle_icon_vt-call.png
Binary files differ
diff --git a/lib/images/contact_images/C02_circle_icon_vt-call_press.png b/lib/images/contact_images/C02_circle_icon_vt-call_press.png
new file mode 100755
index 0000000..8a8a2d2
--- /dev/null
+++ b/lib/images/contact_images/C02_circle_icon_vt-call_press.png
Binary files differ
diff --git a/lib/images/contact_images/C02_favorite_icon.png b/lib/images/contact_images/C02_favorite_icon.png
new file mode 100755
index 0000000..25e68fe
--- /dev/null
+++ b/lib/images/contact_images/C02_favorite_icon.png
Binary files differ
diff --git a/lib/images/contact_images/C02_icon_add_group.png b/lib/images/contact_images/C02_icon_add_group.png
new file mode 100644
index 0000000..2e5e5b6
--- /dev/null
+++ b/lib/images/contact_images/C02_icon_add_group.png
Binary files differ
diff --git a/lib/images/contact_images/C02_icon_favorite.png b/lib/images/contact_images/C02_icon_favorite.png
new file mode 100644
index 0000000..3792de0
--- /dev/null
+++ b/lib/images/contact_images/C02_icon_favorite.png
Binary files differ
diff --git a/lib/images/contact_images/C02_icon_favorite_on.png b/lib/images/contact_images/C02_icon_favorite_on.png
new file mode 100644
index 0000000..69608a3
--- /dev/null
+++ b/lib/images/contact_images/C02_icon_favorite_on.png
Binary files differ
diff --git a/lib/images/contact_images/C02_icon_reset.png b/lib/images/contact_images/C02_icon_reset.png
new file mode 100644
index 0000000..af4e43a
--- /dev/null
+++ b/lib/images/contact_images/C02_icon_reset.png
Binary files differ
diff --git a/lib/images/contact_images/C04_icon_joyn.png b/lib/images/contact_images/C04_icon_joyn.png
new file mode 100644
index 0000000..4a22f31
--- /dev/null
+++ b/lib/images/contact_images/C04_icon_joyn.png
Binary files differ
diff --git a/lib/images/contact_images/caller_ID_default_128x128.png b/lib/images/contact_images/caller_ID_default_128x128.png
new file mode 100644
index 0000000..40ebebb
--- /dev/null
+++ b/lib/images/contact_images/caller_ID_default_128x128.png
Binary files differ
diff --git a/lib/images/contact_images/caller_ID_default_96x96.png b/lib/images/contact_images/caller_ID_default_96x96.png
new file mode 100644
index 0000000..271c3bf
--- /dev/null
+++ b/lib/images/contact_images/caller_ID_default_96x96.png
Binary files differ
diff --git a/lib/images/contact_images/caller_ID_edit.png b/lib/images/contact_images/caller_ID_edit.png
new file mode 100644
index 0000000..90999b9
--- /dev/null
+++ b/lib/images/contact_images/caller_ID_edit.png
Binary files differ
diff --git a/lib/images/contact_images/email.png b/lib/images/contact_images/email.png
new file mode 100755
index 0000000..b2c38ee
--- /dev/null
+++ b/lib/images/contact_images/email.png
Binary files differ
diff --git a/lib/images/contact_images/message.png b/lib/images/contact_images/message.png
new file mode 100644
index 0000000..8bf4018
--- /dev/null
+++ b/lib/images/contact_images/message.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_button_01.png b/lib/images/dialer_images/C01-3_button_01.png
new file mode 100755
index 0000000..c09e6c7
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_button_01.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_button_01_dim.png b/lib/images/dialer_images/C01-3_button_01_dim.png
new file mode 100755
index 0000000..c09e6c7
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_button_01_dim.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_button_01_press.png b/lib/images/dialer_images/C01-3_button_01_press.png
new file mode 100755
index 0000000..1d16c04
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_button_01_press.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_button_02.png b/lib/images/dialer_images/C01-3_button_02.png
new file mode 100755
index 0000000..2efd47b
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_button_02.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_button_02_dim.png b/lib/images/dialer_images/C01-3_button_02_dim.png
new file mode 100755
index 0000000..160ea8c
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_button_02_dim.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_button_02_press.png b/lib/images/dialer_images/C01-3_button_02_press.png
new file mode 100755
index 0000000..01a7a09
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_button_02_press.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_dialer_button_01_press.png b/lib/images/dialer_images/C01-3_dialer_button_01_press.png
new file mode 100755
index 0000000..8e3828c
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_dialer_button_01_press.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_icon_call.png b/lib/images/dialer_images/C01-3_icon_call.png
new file mode 100755
index 0000000..99d1106
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_icon_call.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_icon_call_dim.png b/lib/images/dialer_images/C01-3_icon_call_dim.png
new file mode 100755
index 0000000..a842230
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_icon_call_dim.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_icon_call_press.png b/lib/images/dialer_images/C01-3_icon_call_press.png
new file mode 100755
index 0000000..99d1106
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_icon_call_press.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_icon_delete.png b/lib/images/dialer_images/C01-3_icon_delete.png
new file mode 100755
index 0000000..bd28860
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_icon_delete.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_icon_expand_01.png b/lib/images/dialer_images/C01-3_icon_expand_01.png
new file mode 100755
index 0000000..3dd2f42
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_icon_expand_01.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_icon_expand_02.png b/lib/images/dialer_images/C01-3_icon_expand_02.png
new file mode 100755
index 0000000..26f2392
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_icon_expand_02.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_icon_message.png b/lib/images/dialer_images/C01-3_icon_message.png
new file mode 100755
index 0000000..708d2fb
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_icon_message.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_icon_message_dim.png b/lib/images/dialer_images/C01-3_icon_message_dim.png
new file mode 100755
index 0000000..0bd3a62
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_icon_message_dim.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_icon_message_press.png b/lib/images/dialer_images/C01-3_icon_message_press.png
new file mode 100755
index 0000000..38a1170
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_icon_message_press.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_icon_video_call.png b/lib/images/dialer_images/C01-3_icon_video_call.png
new file mode 100755
index 0000000..fbd7ed5
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_icon_video_call.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_icon_video_call_dim.png b/lib/images/dialer_images/C01-3_icon_video_call_dim.png
new file mode 100755
index 0000000..4381a10
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_icon_video_call_dim.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_icon_video_call_press.png b/lib/images/dialer_images/C01-3_icon_video_call_press.png
new file mode 100755
index 0000000..451989b
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_icon_video_call_press.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_keypad_bg.png b/lib/images/dialer_images/C01-3_keypad_bg.png
new file mode 100755
index 0000000..4fe7f55
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_keypad_bg.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_keypad_bg_reduction.png b/lib/images/dialer_images/C01-3_keypad_bg_reduction.png
new file mode 100755
index 0000000..f73eda7
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_keypad_bg_reduction.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_keypad_press.png b/lib/images/dialer_images/C01-3_keypad_press.png
new file mode 100755
index 0000000..8a285a4
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_keypad_press.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_search_bg_01.png b/lib/images/dialer_images/C01-3_search_bg_01.png
new file mode 100755
index 0000000..a26b028
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_search_bg_01.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_search_bg_02.png b/lib/images/dialer_images/C01-3_search_bg_02.png
new file mode 100755
index 0000000..7390011
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_search_bg_02.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_search_field.png b/lib/images/dialer_images/C01-3_search_field.png
new file mode 100755
index 0000000..910a7ad
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_search_field.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_search_icon.png b/lib/images/dialer_images/C01-3_search_icon.png
new file mode 100755
index 0000000..9620613
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_search_icon.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_thumbnail_bg.png b/lib/images/dialer_images/C01-3_thumbnail_bg.png
new file mode 100755
index 0000000..7864c2a
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_thumbnail_bg.png
Binary files differ
diff --git a/lib/images/dialer_images/C01-3_title_divider.png b/lib/images/dialer_images/C01-3_title_divider.png
new file mode 100755
index 0000000..165505e
--- /dev/null
+++ b/lib/images/dialer_images/C01-3_title_divider.png
Binary files differ
diff --git a/lib/images/dialer_images/keypad/C01-3_keypad_number_00.png b/lib/images/dialer_images/keypad/C01-3_keypad_number_00.png
new file mode 100755
index 0000000..db81ec0
--- /dev/null
+++ b/lib/images/dialer_images/keypad/C01-3_keypad_number_00.png
Binary files differ
diff --git a/lib/images/dialer_images/keypad/C01-3_keypad_number_01.png b/lib/images/dialer_images/keypad/C01-3_keypad_number_01.png
new file mode 100755
index 0000000..0f06a05
--- /dev/null
+++ b/lib/images/dialer_images/keypad/C01-3_keypad_number_01.png
Binary files differ
diff --git a/lib/images/dialer_images/keypad/C01-3_keypad_number_02.png b/lib/images/dialer_images/keypad/C01-3_keypad_number_02.png
new file mode 100755
index 0000000..eef7198
--- /dev/null
+++ b/lib/images/dialer_images/keypad/C01-3_keypad_number_02.png
Binary files differ
diff --git a/lib/images/dialer_images/keypad/C01-3_keypad_number_03.png b/lib/images/dialer_images/keypad/C01-3_keypad_number_03.png
new file mode 100755
index 0000000..c7381c8
--- /dev/null
+++ b/lib/images/dialer_images/keypad/C01-3_keypad_number_03.png
Binary files differ
diff --git a/lib/images/dialer_images/keypad/C01-3_keypad_number_04.png b/lib/images/dialer_images/keypad/C01-3_keypad_number_04.png
new file mode 100755
index 0000000..cbc9274
--- /dev/null
+++ b/lib/images/dialer_images/keypad/C01-3_keypad_number_04.png
Binary files differ
diff --git a/lib/images/dialer_images/keypad/C01-3_keypad_number_05.png b/lib/images/dialer_images/keypad/C01-3_keypad_number_05.png
new file mode 100755
index 0000000..91a8ee6
--- /dev/null
+++ b/lib/images/dialer_images/keypad/C01-3_keypad_number_05.png
Binary files differ
diff --git a/lib/images/dialer_images/keypad/C01-3_keypad_number_06.png b/lib/images/dialer_images/keypad/C01-3_keypad_number_06.png
new file mode 100755
index 0000000..a8cba0e
--- /dev/null
+++ b/lib/images/dialer_images/keypad/C01-3_keypad_number_06.png
Binary files differ
diff --git a/lib/images/dialer_images/keypad/C01-3_keypad_number_07.png b/lib/images/dialer_images/keypad/C01-3_keypad_number_07.png
new file mode 100755
index 0000000..faaf57a
--- /dev/null
+++ b/lib/images/dialer_images/keypad/C01-3_keypad_number_07.png
Binary files differ
diff --git a/lib/images/dialer_images/keypad/C01-3_keypad_number_08.png b/lib/images/dialer_images/keypad/C01-3_keypad_number_08.png
new file mode 100755
index 0000000..c7f7db3
--- /dev/null
+++ b/lib/images/dialer_images/keypad/C01-3_keypad_number_08.png
Binary files differ
diff --git a/lib/images/dialer_images/keypad/C01-3_keypad_number_09.png b/lib/images/dialer_images/keypad/C01-3_keypad_number_09.png
new file mode 100755
index 0000000..acbcaa1
--- /dev/null
+++ b/lib/images/dialer_images/keypad/C01-3_keypad_number_09.png
Binary files differ
diff --git a/lib/images/dialer_images/keypad/C01-3_keypad_number_asterisk.png b/lib/images/dialer_images/keypad/C01-3_keypad_number_asterisk.png
new file mode 100755
index 0000000..96b4d38
--- /dev/null
+++ b/lib/images/dialer_images/keypad/C01-3_keypad_number_asterisk.png
Binary files differ
diff --git a/lib/images/dialer_images/keypad/C01-3_keypad_number_auto_answer.png b/lib/images/dialer_images/keypad/C01-3_keypad_number_auto_answer.png
new file mode 100755
index 0000000..7d2329e
--- /dev/null
+++ b/lib/images/dialer_images/keypad/C01-3_keypad_number_auto_answer.png
Binary files differ
diff --git a/lib/images/dialer_images/keypad/C01-3_keypad_number_mute.png b/lib/images/dialer_images/keypad/C01-3_keypad_number_mute.png
new file mode 100755
index 0000000..ac24879
--- /dev/null
+++ b/lib/images/dialer_images/keypad/C01-3_keypad_number_mute.png
Binary files differ
diff --git a/lib/images/dialer_images/keypad/C01-3_keypad_number_sharp.png b/lib/images/dialer_images/keypad/C01-3_keypad_number_sharp.png
new file mode 100755
index 0000000..76f9120
--- /dev/null
+++ b/lib/images/dialer_images/keypad/C01-3_keypad_number_sharp.png
Binary files differ
diff --git a/lib/images/phoneug_images/00_button_icon_expand_closed.png b/lib/images/phoneug_images/00_button_icon_expand_closed.png
new file mode 100644
index 0000000..acca071
--- /dev/null
+++ b/lib/images/phoneug_images/00_button_icon_expand_closed.png
Binary files differ
diff --git a/lib/images/phoneug_images/00_button_icon_expand_opened.png b/lib/images/phoneug_images/00_button_icon_expand_opened.png
new file mode 100644
index 0000000..cd36ac1
--- /dev/null
+++ b/lib/images/phoneug_images/00_button_icon_expand_opened.png
Binary files differ
diff --git a/lib/images/phoneug_images/00_button_plus.png b/lib/images/phoneug_images/00_button_plus.png
new file mode 100755
index 0000000..f5b3445
--- /dev/null
+++ b/lib/images/phoneug_images/00_button_plus.png
Binary files differ
diff --git a/lib/images/phoneug_images/01_controlbar_icon_contacts.png b/lib/images/phoneug_images/01_controlbar_icon_contacts.png
new file mode 100644
index 0000000..a376989
--- /dev/null
+++ b/lib/images/phoneug_images/01_controlbar_icon_contacts.png
Binary files differ
diff --git a/lib/images/phoneug_images/01_controlbar_icon_create.png b/lib/images/phoneug_images/01_controlbar_icon_create.png
new file mode 100644
index 0000000..0dc1144
--- /dev/null
+++ b/lib/images/phoneug_images/01_controlbar_icon_create.png
Binary files differ
diff --git a/lib/images/phoneug_images/01_controlbar_icon_dialer.png b/lib/images/phoneug_images/01_controlbar_icon_dialer.png
new file mode 100644
index 0000000..1ad19c7
--- /dev/null
+++ b/lib/images/phoneug_images/01_controlbar_icon_dialer.png
Binary files differ
diff --git a/lib/images/phoneug_images/01_controlbar_icon_edit.png b/lib/images/phoneug_images/01_controlbar_icon_edit.png
new file mode 100644
index 0000000..4ddc598
--- /dev/null
+++ b/lib/images/phoneug_images/01_controlbar_icon_edit.png
Binary files differ
diff --git a/lib/images/phoneug_images/01_controlbar_icon_favorite.png b/lib/images/phoneug_images/01_controlbar_icon_favorite.png
new file mode 100644
index 0000000..aa13cf9
--- /dev/null
+++ b/lib/images/phoneug_images/01_controlbar_icon_favorite.png
Binary files differ
diff --git a/lib/images/phoneug_images/01_controlbar_icon_logs.png b/lib/images/phoneug_images/01_controlbar_icon_logs.png
new file mode 100644
index 0000000..384341b
--- /dev/null
+++ b/lib/images/phoneug_images/01_controlbar_icon_logs.png
Binary files differ
diff --git a/lib/images/phoneug_images/01_controlbar_icon_save.png b/lib/images/phoneug_images/01_controlbar_icon_save.png
new file mode 100644
index 0000000..f8a9278
--- /dev/null
+++ b/lib/images/phoneug_images/01_controlbar_icon_save.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_btn_icon_call_dim.png b/lib/images/phoneug_images/C01-4_btn_icon_call_dim.png
new file mode 100644
index 0000000..d2a68f6
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_btn_icon_call_dim.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_btn_icon_message_dim.png b/lib/images/phoneug_images/C01-4_btn_icon_message_dim.png
new file mode 100644
index 0000000..485ff79
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_btn_icon_message_dim.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_btn_icon_video_call_dim.png b/lib/images/phoneug_images/C01-4_btn_icon_video_call_dim.png
new file mode 100644
index 0000000..29ce012
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_btn_icon_video_call_dim.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_circle_button.png b/lib/images/phoneug_images/C01-4_circle_button.png
new file mode 100755
index 0000000..5e58d0d
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_circle_button.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_circle_button_press.png b/lib/images/phoneug_images/C01-4_circle_button_press.png
new file mode 100755
index 0000000..8ea6881
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_circle_button_press.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_controlbar_icon_all.png b/lib/images/phoneug_images/C01-4_controlbar_icon_all.png
new file mode 100755
index 0000000..68528a2
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_controlbar_icon_all.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_controlbar_icon_create.png b/lib/images/phoneug_images/C01-4_controlbar_icon_create.png
new file mode 100755
index 0000000..85b897d
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_controlbar_icon_create.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_controlbar_icon_delete.png b/lib/images/phoneug_images/C01-4_controlbar_icon_delete.png
new file mode 100755
index 0000000..33a6bc7
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_controlbar_icon_delete.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_controlbar_icon_missed_call.png b/lib/images/phoneug_images/C01-4_controlbar_icon_missed_call.png
new file mode 100755
index 0000000..88aeafa
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_controlbar_icon_missed_call.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_controlbar_icon_view_block.png b/lib/images/phoneug_images/C01-4_controlbar_icon_view_block.png
new file mode 100755
index 0000000..7ac55b9
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_controlbar_icon_view_block.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_controlbar_icon_view_contacts.png b/lib/images/phoneug_images/C01-4_controlbar_icon_view_contacts.png
new file mode 100755
index 0000000..a376989
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_controlbar_icon_view_contacts.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_icon_Blocked(Auto-rejected).png b/lib/images/phoneug_images/C01-4_icon_Blocked(Auto-rejected).png
new file mode 100644
index 0000000..7f2cf70
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_icon_Blocked(Auto-rejected).png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_icon_Blocked.png b/lib/images/phoneug_images/C01-4_icon_Blocked.png
new file mode 100755
index 0000000..a1cefa4
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_icon_Blocked.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_icon_call_blocked.png b/lib/images/phoneug_images/C01-4_icon_call_blocked.png
new file mode 100755
index 0000000..f3934be
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_icon_call_blocked.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_icon_dialed.png b/lib/images/phoneug_images/C01-4_icon_dialed.png
new file mode 100644
index 0000000..42de25c
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_icon_dialed.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_icon_message_blocked.png b/lib/images/phoneug_images/C01-4_icon_message_blocked.png
new file mode 100755
index 0000000..e665864
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_icon_message_blocked.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_icon_missed-call.png b/lib/images/phoneug_images/C01-4_icon_missed-call.png
new file mode 100644
index 0000000..e55863e
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_icon_missed-call.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_icon_received.png b/lib/images/phoneug_images/C01-4_icon_received.png
new file mode 100644
index 0000000..08643a9
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_icon_received.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_icon_rejected.png b/lib/images/phoneug_images/C01-4_icon_rejected.png
new file mode 100644
index 0000000..340e373
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_icon_rejected.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_list_icon_call.png b/lib/images/phoneug_images/C01-4_list_icon_call.png
new file mode 100755
index 0000000..576ecab
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_list_icon_call.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_list_icon_mms.png b/lib/images/phoneug_images/C01-4_list_icon_mms.png
new file mode 100644
index 0000000..aef7f9c
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_list_icon_mms.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_list_icon_sms.png b/lib/images/phoneug_images/C01-4_list_icon_sms.png
new file mode 100644
index 0000000..399733d
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_list_icon_sms.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-4_list_icon_vt-call.png b/lib/images/phoneug_images/C01-4_list_icon_vt-call.png
new file mode 100644
index 0000000..2e9f301
--- /dev/null
+++ b/lib/images/phoneug_images/C01-4_list_icon_vt-call.png
Binary files differ
diff --git a/lib/images/phoneug_images/C01-5_icon_voicecall.png b/lib/images/phoneug_images/C01-5_icon_voicecall.png
new file mode 100755
index 0000000..73f06db
--- /dev/null
+++ b/lib/images/phoneug_images/C01-5_icon_voicecall.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_button_icon_call.png b/lib/images/phoneug_images/C02_button_icon_call.png
new file mode 100755
index 0000000..cbb910e
--- /dev/null
+++ b/lib/images/phoneug_images/C02_button_icon_call.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_button_icon_call_dim.png b/lib/images/phoneug_images/C02_button_icon_call_dim.png
new file mode 100755
index 0000000..31c0684
--- /dev/null
+++ b/lib/images/phoneug_images/C02_button_icon_call_dim.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_button_icon_call_press.png b/lib/images/phoneug_images/C02_button_icon_call_press.png
new file mode 100755
index 0000000..07fe96d
--- /dev/null
+++ b/lib/images/phoneug_images/C02_button_icon_call_press.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_button_icon_delete.png b/lib/images/phoneug_images/C02_button_icon_delete.png
new file mode 100755
index 0000000..aac7f53
--- /dev/null
+++ b/lib/images/phoneug_images/C02_button_icon_delete.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_button_icon_delete_dim.png b/lib/images/phoneug_images/C02_button_icon_delete_dim.png
new file mode 100755
index 0000000..58ce082
--- /dev/null
+++ b/lib/images/phoneug_images/C02_button_icon_delete_dim.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_button_icon_delete_press.png b/lib/images/phoneug_images/C02_button_icon_delete_press.png
new file mode 100755
index 0000000..aac7f53
--- /dev/null
+++ b/lib/images/phoneug_images/C02_button_icon_delete_press.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_button_icon_message.png b/lib/images/phoneug_images/C02_button_icon_message.png
new file mode 100755
index 0000000..456b1fb
--- /dev/null
+++ b/lib/images/phoneug_images/C02_button_icon_message.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_button_icon_message_dim.png b/lib/images/phoneug_images/C02_button_icon_message_dim.png
new file mode 100755
index 0000000..7a6ce6f
--- /dev/null
+++ b/lib/images/phoneug_images/C02_button_icon_message_dim.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_button_icon_message_press.png b/lib/images/phoneug_images/C02_button_icon_message_press.png
new file mode 100755
index 0000000..96297a4
--- /dev/null
+++ b/lib/images/phoneug_images/C02_button_icon_message_press.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_button_icon_videocall.png b/lib/images/phoneug_images/C02_button_icon_videocall.png
new file mode 100755
index 0000000..f7b2208
--- /dev/null
+++ b/lib/images/phoneug_images/C02_button_icon_videocall.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_button_icon_videocall_dim.png b/lib/images/phoneug_images/C02_button_icon_videocall_dim.png
new file mode 100755
index 0000000..77d4fb9
--- /dev/null
+++ b/lib/images/phoneug_images/C02_button_icon_videocall_dim.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_button_icon_videocall_press.png b/lib/images/phoneug_images/C02_button_icon_videocall_press.png
new file mode 100755
index 0000000..6596599
--- /dev/null
+++ b/lib/images/phoneug_images/C02_button_icon_videocall_press.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_circle_icon_call.png b/lib/images/phoneug_images/C02_circle_icon_call.png
new file mode 100755
index 0000000..3df40d6
--- /dev/null
+++ b/lib/images/phoneug_images/C02_circle_icon_call.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_circle_icon_call_press.png b/lib/images/phoneug_images/C02_circle_icon_call_press.png
new file mode 100755
index 0000000..c1bed80
--- /dev/null
+++ b/lib/images/phoneug_images/C02_circle_icon_call_press.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_circle_icon_sms.png b/lib/images/phoneug_images/C02_circle_icon_sms.png
new file mode 100755
index 0000000..a9d0ad6
--- /dev/null
+++ b/lib/images/phoneug_images/C02_circle_icon_sms.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_circle_icon_sms_press.png b/lib/images/phoneug_images/C02_circle_icon_sms_press.png
new file mode 100755
index 0000000..ff6b712
--- /dev/null
+++ b/lib/images/phoneug_images/C02_circle_icon_sms_press.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_circle_icon_vt-call.png b/lib/images/phoneug_images/C02_circle_icon_vt-call.png
new file mode 100755
index 0000000..0acd851
--- /dev/null
+++ b/lib/images/phoneug_images/C02_circle_icon_vt-call.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_circle_icon_vt-call_press.png b/lib/images/phoneug_images/C02_circle_icon_vt-call_press.png
new file mode 100755
index 0000000..8a8a2d2
--- /dev/null
+++ b/lib/images/phoneug_images/C02_circle_icon_vt-call_press.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_icon_call.png b/lib/images/phoneug_images/C02_icon_call.png
new file mode 100644
index 0000000..0b1038e
--- /dev/null
+++ b/lib/images/phoneug_images/C02_icon_call.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_icon_chat_on.png b/lib/images/phoneug_images/C02_icon_chat_on.png
new file mode 100644
index 0000000..290857a
--- /dev/null
+++ b/lib/images/phoneug_images/C02_icon_chat_on.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_icon_filetransfer.png b/lib/images/phoneug_images/C02_icon_filetransfer.png
new file mode 100644
index 0000000..ad235c7
--- /dev/null
+++ b/lib/images/phoneug_images/C02_icon_filetransfer.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_icon_message.png b/lib/images/phoneug_images/C02_icon_message.png
new file mode 100644
index 0000000..1eddabc
--- /dev/null
+++ b/lib/images/phoneug_images/C02_icon_message.png
Binary files differ
diff --git a/lib/images/phoneug_images/C02_icon_video_call.png b/lib/images/phoneug_images/C02_icon_video_call.png
new file mode 100644
index 0000000..6c928ce
--- /dev/null
+++ b/lib/images/phoneug_images/C02_icon_video_call.png
Binary files differ
diff --git a/lib/images/phoneug_images/caller_ID_default_70x70_man.png b/lib/images/phoneug_images/caller_ID_default_70x70_man.png
new file mode 100644
index 0000000..b8e9ed9
--- /dev/null
+++ b/lib/images/phoneug_images/caller_ID_default_70x70_man.png
Binary files differ
diff --git a/lib/images/phoneug_images/camera_mode_shutter_icon.png b/lib/images/phoneug_images/camera_mode_shutter_icon.png
new file mode 100755
index 0000000..10b2004
--- /dev/null
+++ b/lib/images/phoneug_images/camera_mode_shutter_icon.png
Binary files differ
diff --git a/lib/images/phoneug_images/phone.png b/lib/images/phoneug_images/phone.png
new file mode 100644
index 0000000..d0f4eae
--- /dev/null
+++ b/lib/images/phoneug_images/phone.png
Binary files differ
diff --git a/lib/list/CMakeLists.txt b/lib/list/CMakeLists.txt
new file mode 100755
index 0000000..ec71fa7
--- /dev/null
+++ b/lib/list/CMakeLists.txt
@@ -0,0 +1,18 @@
+LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
+
+SET(TARGET ${CT_LIST})
+
+FILE(GLOB SRCS *.cpp)
+
+ADD_LIBRARY(${TARGET} SHARED ${SRCS})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES SOVERSION ${VERSION_MAJOR})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES VERSION ${VERSION})
+
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS})
+TARGET_LINK_LIBRARIES(${TARGET} ${COMMON_LIB} ${ug_pkgs_LDFLAGS} ${CT_DETAILS})
+
+ADD_DEPENDENCIES(${TARGET} contacts_edj_build contacts_theme_build group_theme_edj_build image_layout_edj_build list_theme_edj_build contact_button_edj_build)
+
+INSTALL(TARGETS ${TARGET} DESTINATION ${UGLIBDIR})
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/lib/list/contacts-list-efl.xml DESTINATION "/usr/share/packages")
diff --git a/lib/list/contacts-list-efl.xml b/lib/list/contacts-list-efl.xml
new file mode 100644
index 0000000..728ec36
--- /dev/null
+++ b/lib/list/contacts-list-efl.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="contacts-list-efl" version="0.1.0-0" install-location="internal-only">
+ <label>contacts-list</label>
+ <author email="ensung.park@samsung.com" href="www.samsung.com">ensung park</author>
+ <description>contacts-list-efl Application</description>
+ <ui-application appid="contacts-list-efl" exec="/usr/ug/bin/contacts-list-efl" nodisplay="true" multiple="true" type="capp" taskmanage="false">
+ <icon>org.tizen.contacts.png</icon>
+ <label>contacts-list</label>
+ <label xml:lang="en-us">contacts-list</label>
+ <label xml:lang="nl-nl">contacts-list</label>
+ <label xml:lang="de-de">contacts-list</label>
+ <label xml:lang="en-gb">contacts-list</label>
+ <label xml:lang="zh-hk">contacts-list</label>
+ <label xml:lang="zh-cn">contacts-list</label>
+ <label xml:lang="ru-ru">contacts-list</label>
+ <label xml:lang="zh-tw">contacts-list</label>
+ <label xml:lang="ja-jp">contacts-list</label>
+ <label xml:lang="es-es">contacts-list</label>
+ <label xml:lang="el-gr">contacts-list</label>
+ <label xml:lang="it-it">contacts-list</label>
+ <label xml:lang="tr-tr">contacts-list</label>
+ <label xml:lang="pt-pt">contacts-list</label>
+ <label xml:lang="fr-fr">contacts-list</label>
+ <label xml:lang="ko-kr">contacts-list</label>
+ <application-service>
+ <operation name="http://tizen.org/ns/packages"/>
+ </application-service>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/social/pick"/>
+ </application-service>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/social/choose"/>
+ </application-service>
+ </ui-application>
+</manifest>
diff --git a/lib/list/ct-group-edit-view.h b/lib/list/ct-group-edit-view.h
new file mode 100755
index 0000000..5426186
--- /dev/null
+++ b/lib/list/ct-group-edit-view.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CT_GROUP_EDIT_VIEW_H__
+#define __CT_GROUP_EDIT_VIEW_H__
+
+void ctui_gedit_push_view(Evas_Object *win, Evas_Object *navi,
+ ct_group_list *info, ct_group_rename_update_cb fn, void *fn_data);
+
+#endif /* __CT_GROUP_EDIT_VIEW_H__ */
diff --git a/lib/list/ct-group-view.cpp b/lib/list/ct-group-view.cpp
new file mode 100755
index 0000000..ee702be
--- /dev/null
+++ b/lib/list/ct-group-view.cpp
@@ -0,0 +1,1696 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <app.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <fcntl.h>
+#include <app_service.h>
+#include <Ecore_X.h>
+#include <ui-gadget-module.h>
+#include <account.h>
+#include <efl_assist.h>
+#include "phone.h"
+#include "ct-list.h"
+#include "ct-group.h"
+#include "ct-list-utils.h"
+#include "ct-list-contact-view.h"
+#include "ViewManager.h"
+
+//TODO: use it instead of magic-strings across the project
+#define KEY_GROUP_DATA "cgroup_d"
+#define FRIENDS "friends"
+#define FAMILY "family"
+#define COWORKERS "coworkers"
+#define QUICK_MENU_SIZE 160
+#define PART_ICON "icon"
+
+
+enum
+{
+ GROUP_MODE_NORMAL,
+ GROUP_MODE_EDIT,
+};
+
+typedef void (*quick_menu_cb)(void *data, Evas_Object *obj, void *event_info);
+
+typedef struct : public Common::View
+{
+ Evas_Object *gengrid;
+ Ecore_Timer *update_timer;
+ Ecore_Timer *waiting_timer;
+ Evas_Object *ctrl_button;
+ Evas_Object *delete_button;
+ bool is_background;
+ int count;
+ Evas_Object *quick_menu_popup;
+ int ug_request;
+ int ug_cnt_max;
+ int group_mode;
+ void *crop_ug;
+ char *ug_data;
+ bool need_update;
+} ct_group_data;
+
+enum GROUP_ITC_TYPE
+{
+ GROUP_ITC_1IMAGE,
+ GROUP_ITC_2IMAGE,
+ GROUP_ITC_3IMAGE,
+ GROUP_ITC_6IMAGE,
+ GROUP_ITC_GROUP_TITLE,
+ GROUP_ITC_MAX,
+};
+
+static Elm_Gengrid_Item_Class group_itcs[] =
+{
+ {
+ 0, 0, 1, "groupitem.1image", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "groupitem.2image", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "groupitem.3image", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "groupitem.6image", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "group_index", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+};
+
+static Eina_Bool group_changed(void *user_data);
+
+static void group_gl_del(void *data, Evas_Object *obj)
+{
+ PH_TRACE;
+ int i;
+ ct_group_list *info = (ct_group_list *) data;
+ p_retm_if(NULL == info, "data is NULL");
+
+ for (i = 0; i < 6; i++)
+ free(info->img_list[i]);
+ free(info->img);
+ free(info->name);
+ free(info);
+}
+
+static char* group_gl_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_MAX_LEN];
+ ct_group_list *info = (ct_group_list *) data;
+ ct_group_data *cgroup_d;
+
+ p_retvm_if(NULL == data, NULL, "The parameter(data) is NULL");
+
+ cgroup_d = (ct_group_data *) evas_object_data_get(obj, KEY_GROUP_DATA);
+ p_retvm_if(NULL == cgroup_d, NULL, "evas_object_data_get() return NULL");
+
+ if ((0 == strcmp(part, "text.name")
+ && cgroup_d->group_mode == GROUP_MODE_NORMAL)
+ || (0 == strcmp(part, "text.edit.name")
+ && cgroup_d->group_mode == GROUP_MODE_EDIT))
+ {
+ if (info->name)
+ return strdup(info->name);
+ else
+ return strdup("Noname");
+ }
+ else if ((0 == strcmp(part, "text.count")
+ && cgroup_d->group_mode == GROUP_MODE_NORMAL)
+ || (0 == strcmp(part, "text.edit.count")
+ && cgroup_d->group_mode == GROUP_MODE_EDIT))
+ {
+ snprintf(buf, sizeof(buf), "%d", info->count);
+ return strdup(buf);
+ }
+ return NULL;
+}
+
+static char* group_gl_index_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ char *title = (char *) data;
+
+ if (title && *title)
+ return strdup((const char *) data);
+
+ return NULL;
+}
+
+static void group_popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *icon;
+ Evas_Object *btn;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+ btn = (Evas_Object *) evas_object_data_get(obj, "expand_btn");
+ if (btn)
+ {
+ icon = elm_object_part_content_get(btn, PART_ICON);
+ elm_image_file_set(icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL);
+ elm_object_part_content_set(btn, PART_ICON, icon);
+ }
+ evas_object_del(cgroup_d->popup);
+ cgroup_d->popup = NULL;
+}
+
+static void group_destroy_child_ug(void *data)
+{
+ PH_TRACE;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+ cgroup_d->child_ug = NULL;
+}
+
+API void phone_group_message_result_cb(void *data, int *list, int cnt)
+{
+ PH_TRACE;
+ service_h service;
+ ui_gadget_h ug;
+ struct ug_cbs cbs = { 0 };
+ struct ug_priv_data *priv_data;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+ char buf[PH_TEXT_MAX_LEN] = { '\0' };
+ char temp[PH_TEXT_MAX_LEN + 1] = { '\0' };
+ int ret, i;
+ contacts_record_h number_record = NULL;
+ char *number;
+
+ p_retm_if(NULL == cgroup_d, "parameter(cgroup_d) is NULL");
+ p_retm_if(0 == cnt || NULL == list, "parameter(list) is NULL");
+
+ priv_data = (ug_priv_data *) calloc(1, sizeof(struct ug_priv_data));
+ p_retm_if(NULL == priv_data, "calloc is failed");
+
+ priv_data->destroy_cb = group_destroy_child_ug;
+ priv_data->cb_param = cgroup_d;
+
+ service_create(&service);
+
+ for (i = 0; i < cnt; i++)
+ {
+ ret = contacts_db_get_record(_contacts_number._uri, list[i],
+ &number_record);
+ if (CONTACTS_ERROR_NONE != ret)
+ {
+ ERR("contacts_db_get_record() Failed(%d)", ret);
+ continue;
+ }
+
+ contacts_record_get_str_p(number_record, _contacts_number.number,
+ &number);
+ if (number && *number)
+ {
+ if (*buf)
+ snprintf(temp, sizeof(temp), "%s", buf);
+ if (*temp)
+ snprintf(buf, sizeof(buf), "%s,%s", temp, number);
+ else
+ snprintf(buf, sizeof(buf), "%s", number);
+ }
+ contacts_record_destroy(number_record, true);
+ }
+ if (*buf)
+ {
+ PH_DBG("number %s", buf);
+ service_add_extra_data(service, "TO", buf);
+ }
+ cbs.priv = priv_data;
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.result_cb = NULL;
+ cbs.destroy_cb = ug_common_destroy_cb;
+
+ ug = ug_create(cgroup_d->ug, MSG_COMPOSER_UG, UG_MODE_FULLVIEW, service,
+ &cbs);
+ service_destroy(service);
+
+ if (ug == NULL)
+ {
+ free(priv_data);
+ ERR("%s ug_create is failed", MSG_COMPOSER_UG);
+ }
+ evas_object_smart_callback_del(cgroup_d->navi, "transition,finished",
+ ctui_list_edit_navi_pop);
+ cgroup_d->child_ug = ug;
+}
+
+API void phone_group_email_result_cb(void *data, int *list, int cnt)
+{
+ PH_TRACE;
+ service_h service;
+ Ecore_X_Window win_id;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+ int ret, i;
+ char *email;
+ contacts_record_h email_record = NULL;
+ char buf[PH_TEXT_MAX_LEN + 1] = { '\0' };
+ char temp[PH_TEXT_MAX_LEN + 1] = { '\0' };
+
+ p_retm_if(NULL == cgroup_d, "parameter(cgroup_d) is NULL");
+ p_retm_if(0 == cnt || NULL == list, "parameter(list) is NULL");
+
+ win_id = elm_win_xwindow_get(cgroup_d->win);
+ service_create(&service);
+ service_set_app_id(service, EMAIL_COMPOSER_PKG);
+ service_set_window(service, win_id);
+
+ for (i = 0; i < cnt; i++)
+ {
+ ret = contacts_db_get_record(_contacts_email._uri, list[i],
+ &email_record);
+ if (CONTACTS_ERROR_NONE != ret)
+ {
+ ERR("contacts_db_get_record() Failed(%d)", ret);
+ continue;
+ }
+ contacts_record_get_str_p(email_record, _contacts_email.email, &email);
+ if (email && *email)
+ {
+ if (*buf)
+ snprintf(temp, sizeof(temp), "%s", buf);
+
+ if (*temp)
+ snprintf(buf, sizeof(buf), "%s;%s", temp, email);
+ else
+ snprintf(buf, sizeof(buf), "%s", email);
+ }
+ contacts_record_destroy(email_record, true);
+ }
+ if (*buf)
+ {
+ PH_DBG("email %s", buf);
+ service_add_extra_data(service, SERVICE_DATA_TO, buf);
+ }
+
+ service_send_launch_request(service, NULL, NULL);
+ service_destroy(service);
+}
+
+static void group_notify_update(ct_group_data *cgroup_d)
+{
+ PH_TRACE;
+ if (GROUP_MODE_NORMAL == cgroup_d->group_mode)
+ phone_hide_notify(cgroup_d->layout);
+ else
+ {
+ if (0 < cgroup_d->count)
+ {
+ char buf[PH_TEXT_MAX_LEN + 1];
+ snprintf(buf, sizeof(buf), "%s (%d)", S_(PH_SYS_POP_SELECTED),
+ cgroup_d->count);
+ phone_show_notify(cgroup_d->layout, buf);
+ }
+ else
+ phone_show_notify(cgroup_d->layout,
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_SELECT_GROUP));
+ }
+}
+
+static void group_edit_result_cb(int grp_id, void *data, bool changed)
+{
+ PH_TRACE;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+ group_notify_update((ct_group_data *) data);
+
+ if (changed)
+ {
+ cgroup_d->group_mode = GROUP_MODE_NORMAL;
+ phone_hide_notify(cgroup_d->layout);
+ phone_group_set_navi(cgroup_d->layout);
+ }
+}
+
+static void group_edit_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_group_data *cgroup_d;
+ ct_group_list *info = (ct_group_list *) data;
+
+ cgroup_d = (ct_group_data *) evas_object_data_get(elm_object_item_widget_get(info->item),
+ "cgroup_d");
+ p_retm_if(NULL == cgroup_d, "evas_object_data_get() return NULL");
+
+ phone_hide_notify(cgroup_d->layout);
+ ctui_create_group_input_view(cgroup_d->win, cgroup_d->navi, (ct_group_list *) data,
+ group_edit_result_cb, cgroup_d);
+}
+
+static void group_navi_item_update(ct_group_data *cgroup_d)
+{
+ PH_TRACE;
+ if (0 < cgroup_d->count)
+ elm_object_disabled_set(cgroup_d->delete_button, EINA_FALSE);
+ else
+ elm_object_disabled_set(cgroup_d->delete_button, EINA_TRUE);
+}
+
+static void group_check_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_group_list *info = (ct_group_list *) data;
+ ct_group_data *cgroup_d;
+ p_retm_if(NULL == data, "data is NULL");
+
+ cgroup_d = (ct_group_data *) evas_object_data_get(elm_object_item_widget_get(info->item),
+ "cgroup_d");
+ p_retm_if(NULL == cgroup_d, "evas_object_data_get() return NULL");
+
+ if (EINA_TRUE == info->selected && false == info->is_read_only)
+ cgroup_d->count++;
+ else
+ cgroup_d->count--;
+ group_navi_item_update(cgroup_d);
+ group_notify_update(cgroup_d);
+}
+
+static void group_quick_ctxpopup_dismissed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+ p_retm_if(NULL == data, "invalid data");
+ Evas_Object *btn = obj;
+ p_retm_if(NULL == btn, "invalid btn");
+ Evas_Object *icon = elm_object_part_content_get(btn, PART_ICON);
+ p_retm_if(NULL == icon, "invalid icon");
+ elm_image_file_set(icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL);
+ elm_object_part_content_set(btn, PART_ICON, icon);
+ evas_object_del(cgroup_d->quick_menu_popup);
+ cgroup_d->quick_menu_popup = NULL;
+}
+
+static void group_quick_ctxpopup_hide_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *btn = (Evas_Object *) data;
+ p_retm_if(NULL == data, "invalid data");
+ Evas_Object *icon = elm_object_part_content_get(btn, PART_ICON);
+ p_retm_if(NULL == icon, "invalid icon");
+ elm_image_file_set(icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL);
+ elm_object_part_content_set(btn, PART_ICON, icon);
+}
+
+ct_list_data *create_group_list_date(Evas_Object *ctxpopup)
+{
+ PH_TRACE;
+ p_retv_if(NULL == ctxpopup, NULL);
+ ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data));
+ p_retv_if(NULL == clist_d, NULL);
+ Evas_Object * btn = (Evas_Object *)evas_object_data_get(ctxpopup, "quick_menu_button");
+ ct_group_data * cgroup_d = (ct_group_data *)evas_object_data_get(ctxpopup, "cgroup_data");
+ p_retv_if(NULL == cgroup_d,NULL);
+ group_quick_ctxpopup_dismissed_cb(cgroup_d, btn, NULL);
+ ct_group_list *info = (ct_group_list *)evas_object_data_get(ctxpopup, "group_list");
+ p_retv_if(NULL == info, NULL);
+
+ ph_view_info *view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info));
+ phone_set_view_info(view_info, cgroup_d->win, cgroup_d->navi,
+ cgroup_d->ug, cgroup_d->ug_request, cgroup_d->ug_cnt_max,
+ cgroup_d->ug_data);
+
+ clist_d->win = view_info->win;
+ clist_d->navi = view_info->navi;
+ clist_d->ug = view_info->ug;
+ clist_d->ug_data = view_info->ug_data;
+ clist_d->ug_request = view_info->ug_request;
+ clist_d->base_ab = -1;
+
+ clist_d->base_ab = info->id_ab;
+ clist_d->base_grp = info->id_grp;
+ clist_d->base_ab_mode = info->mode;
+ clist_d->title = SAFE_STRDUP(info->name);
+
+ free(view_info);
+ return clist_d;
+}
+
+static void list_email_group_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = create_group_list_date(obj);
+ p_retm_if(NULL == clist_d, "clist_d is NULL");
+ p_retm_if(NULL == evas_object_data_get(clist_d->navi, "cgroup_d"), " return NULL");
+
+ int list_op = 0;
+ if (-1 == clist_d->base_grp)
+ list_op = CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID;
+ else if (clist_d->base_grp)
+ list_op = CT_GET_LIST_PERSON_HAD_EMAIL_OF_GROUP_ID;
+ else
+ list_op = CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_EMAIL_OF_ADDRBOOK_ID;
+
+ ctui_create_list_select_view(clist_d->navi, phone_group_email_result_cb,
+ evas_object_data_get(clist_d->navi, "cgroup_d"), list_op,
+ clist_d->base_ab, clist_d->base_grp, 0);
+ free(clist_d);
+}
+
+static void list_message_group_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = create_group_list_date(obj);
+ p_retm_if(NULL == clist_d, "clist_d is NULL");
+ p_retm_if(NULL == evas_object_data_get(clist_d->navi, "cgroup_d"), " return NULL");
+
+ int list_op = 0;
+ if (-1 == clist_d->base_grp)
+ list_op = CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID;
+ else if (clist_d->base_grp)
+ list_op = CT_GET_LIST_PERSON_HAD_NUMBER_OF_GROUP_ID;
+ else
+ list_op = CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OF_ADDRBOOK_ID;
+
+ ctui_create_list_select_view(clist_d->navi, phone_group_message_result_cb,
+ evas_object_data_get(clist_d->navi, "cgroup_d"), list_op,
+ clist_d->base_ab, clist_d->base_grp, 0);
+ free(clist_d);
+}
+
+void item_new(Evas_Object *ctxpopup, const char * text, const char * icon, quick_menu_cb group_quick_menu)
+{
+ PH_TRACE;
+ if(!ctxpopup)
+ {
+ return;
+ }
+ Evas_Object *layout = elm_layout_add(ctxpopup);
+ evas_object_propagate_events_set(layout, EINA_FALSE);
+ elm_layout_file_set(layout, CONTACT_BUTTON_THEME_EDJ, "quick.munu");
+ evas_object_size_hint_min_set(layout, QUICK_MENU_SIZE, QUICK_MENU_SIZE);
+ Evas_Object *exp_icon = elm_icon_add(layout);
+ elm_image_file_set(exp_icon, icon, NULL);
+ elm_object_part_content_set(layout, PART_ICON, exp_icon);
+ elm_image_resizable_set(exp_icon, EINA_FALSE, EINA_FALSE);
+ evas_object_show(layout);
+ elm_object_part_text_set(layout,"elm.text.quick", text);
+ elm_ctxpopup_item_append(ctxpopup, NULL, layout, group_quick_menu, NULL);
+}
+
+static void group_quick_menu(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_group_list *info = (ct_group_list *)evas_object_data_get(obj, "group_list");
+ ct_group_data *cgroup_d = (ct_group_data *)data;
+ p_retm_if(NULL == cgroup_d, "invalid cgroup_d");
+ p_retm_if(NULL == data, "invalid data");
+ const char *file_icon = NULL;
+ const char *file_group = NULL;
+ Evas_Object *icon = elm_object_part_content_get(obj, PART_ICON);
+ elm_image_file_get(icon, &file_icon, &file_group);
+ p_retm_if(NULL == file_icon, "elm_image_file_set() return NULL");
+
+ if (0 == strcmp(file_icon, CTUI_IMG_ICON_EXPAND_CLOSED))
+ {
+ elm_image_file_set(icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL);
+ elm_object_part_content_set(obj, PART_ICON, icon);
+ }
+ else
+ {
+ elm_image_file_set(icon, CTUI_IMG_ICON_EXPAND_CLOSED, NULL);
+ elm_object_part_content_set(obj, PART_ICON, icon);
+
+ if (cgroup_d->quick_menu_popup)
+ {
+ evas_object_del(cgroup_d->quick_menu_popup);
+ cgroup_d->quick_menu_popup = NULL;
+ }
+ cgroup_d->quick_menu_popup = elm_ctxpopup_add(cgroup_d->navi);
+ evas_object_propagate_events_set(cgroup_d->quick_menu_popup, EINA_FALSE);
+ int rotate = (int) evas_object_data_get(cgroup_d->navi, "phone_rotate");
+ evas_object_data_set(cgroup_d->quick_menu_popup, "cgroup_data", cgroup_d);
+ evas_object_data_set(cgroup_d->quick_menu_popup, "group_list", info);
+ evas_object_data_set(cgroup_d->quick_menu_popup, "quick_menu_button", obj);
+
+ if (0 == rotate || 180 == rotate)
+ {
+ elm_ctxpopup_direction_priority_set(cgroup_d->quick_menu_popup,
+ ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP,
+ ELM_CTXPOPUP_DIRECTION_LEFT, ELM_CTXPOPUP_DIRECTION_RIGHT);
+ }
+
+ evas_object_smart_callback_add(cgroup_d->quick_menu_popup, "dismissed",
+ group_quick_ctxpopup_dismissed_cb, cgroup_d);
+ evas_object_event_callback_add(cgroup_d->quick_menu_popup, EVAS_CALLBACK_HIDE,
+ group_quick_ctxpopup_hide_cb, obj);
+
+ elm_ctxpopup_horizontal_set(cgroup_d->quick_menu_popup, EINA_TRUE);
+ item_new(cgroup_d->quick_menu_popup, T_(PH_GET_TEXT_BASIC, PHTEXT_EMAIL), IMG_MESSAGE_ICON, list_email_group_btn_cb);
+ item_new(cgroup_d->quick_menu_popup, T_(PH_GET_TEXT_BASIC, PHTEXT_MESSAGE),PH_IMG_ICON_MESSAGE_PRESS, list_message_group_btn_cb);
+
+ int x = 0;
+ int y = 0;
+ evas_pointer_canvas_xy_get(evas_object_evas_get(cgroup_d->navi), &x, &y);
+ evas_object_move(cgroup_d->quick_menu_popup, x, y);
+ evas_object_show(cgroup_d->quick_menu_popup);
+ }
+}
+
+static Evas_Object* group_gl_content_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ Evas_Object *icon;
+ Evas_Object *button;
+ Evas_Object *check;
+ ct_group_data *cgroup_d;
+ ct_group_list *info = (ct_group_list *) data;
+
+ cgroup_d = (ct_group_data *) evas_object_data_get(obj, "cgroup_d");
+ p_retvm_if(NULL == cgroup_d, NULL, "evas_object_data_get() return NULL");
+
+ if (0 == strcmp(part, "swallow.icon"))
+ {
+ if (CT_UG_REQUEST_SELECT_GROUP == cgroup_d->ug_request
+ || CT_UG_REQUEST_SELECT_GROUP_ADD_TO_HOME
+ == cgroup_d->ug_request)
+ return NULL;
+ if (GROUP_MODE_NORMAL == cgroup_d->group_mode)
+ return NULL;
+ else if (info->id_grp)
+ {
+ button = elm_button_add(obj);
+ p_retvm_if(NULL == button, NULL, "elm_button_add() return NULL");
+ evas_object_propagate_events_set(button, EINA_FALSE);
+ elm_object_style_set(button, "rename");
+ evas_object_smart_callback_add(button, "clicked", group_edit_btn_cb,
+ info);
+ return button;
+ }
+ }
+ else if (0 == strncmp(part, "swallow.content", 15))
+ {
+ int index = -1;
+ sscanf(part, "swallow.content%d", &index);
+ p_retvm_if(index<1 || 6<index, NULL, "index(%d) is out of range",
+ index);
+
+ if (info->img && *info->img)
+ {
+ icon = elm_icon_add(obj);
+ p_retvm_if(NULL == icon, NULL, "elm_icon_add() return NULL");
+ elm_image_file_set(icon, info->img, NULL);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_NONE, 1,
+ 1);
+ evas_object_size_hint_align_set(icon, 0.5, EVAS_HINT_FILL);
+ return icon;
+ }
+ else if (info->img_list[index - 1] && *info->img_list[index - 1])
+ {
+ icon = elm_icon_add(obj);
+ p_retvm_if(NULL == icon, NULL, "elm_icon_add() return NULL");
+ elm_image_file_set(icon, info->img_list[index - 1], NULL);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_NONE, 1,
+ 1);
+ evas_object_size_hint_align_set(icon, 0.5, EVAS_HINT_FILL);
+ return icon;
+ }
+ }
+ else if (0 == strcmp(part, "swallow.edit.icon")
+ && GROUP_MODE_EDIT == cgroup_d->group_mode)
+ {
+ if (CT_UG_REQUEST_SELECT_GROUP == cgroup_d->ug_request)
+ return NULL;
+ if (info->is_read_only == true)
+ {
+ check = elm_check_add(obj);
+ p_retvm_if(NULL == check, NULL, "elm_check_add() return NULL");
+ evas_object_show(check);
+ elm_object_disabled_set(check, EINA_TRUE);
+ return check;
+ }
+
+ check = elm_check_add(obj);
+ p_retvm_if(NULL == check, NULL, "elm_check_add() return NULL");
+ evas_object_show(check);
+ evas_object_propagate_events_set(check, EINA_FALSE);
+ elm_check_state_pointer_set(check, &info->selected);
+ elm_check_state_set(check, info->selected);
+ evas_object_smart_callback_add(check, "changed", group_check_changed_cb,
+ info);
+ return check;
+ }
+ else if(0 == strcmp(part,"quick.menu.button") && GROUP_MODE_NORMAL == cgroup_d->group_mode)
+ {
+ Evas_Object *btn = elm_button_add(obj);
+ evas_object_data_set(btn, "group_list", info);
+ elm_object_style_set(btn, "transparency");
+ Evas_Object *exp_icon = elm_icon_add(btn);
+ elm_image_file_set(exp_icon, CTUI_IMG_ICON_EXPAND_OPENED, NULL);
+ elm_object_part_content_set(btn, PART_ICON, exp_icon);
+ evas_object_propagate_events_set(btn, EINA_FALSE);
+ evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_UP, group_quick_menu, cgroup_d);
+ evas_object_show(btn);
+ return btn;
+ }
+ return NULL;
+}
+
+static void __group_return_id(ui_gadget_h ug, int group_id)
+{
+ PH_TRACE;
+ service_h service = NULL;
+ char buf[16] = { 0, };
+
+ service_create(&service);
+
+ if (group_id)
+ {
+ snprintf(buf, sizeof(buf), "%d", group_id);
+ service_add_extra_data(service, CT_UG_BUNDLE_RESULT_GROUP_ID, buf);
+ }
+
+ PH_DBG("group_id=%d", group_id);
+ ug_send_result(ug, service);
+
+ service_destroy(service);
+}
+
+static void group_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+ ct_group_list *info = (ct_group_list *) elm_object_item_data_get(item);
+ ph_view_info *view_info;
+ p_retm_if(NULL == info, "elm_object_item_data_get() return NULL");
+
+ elm_gengrid_item_selected_set(item, EINA_FALSE);
+
+ if (CT_UG_REQUEST_SELECT_GROUP == cgroup_d->ug_request)
+ {
+ __group_return_id(cgroup_d->ug, info->id_grp);
+ ug_destroy_me(cgroup_d->ug);
+ cgroup_d->ug = NULL;
+ }
+ else if (GROUP_MODE_NORMAL == cgroup_d->group_mode)
+ {
+ view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info));
+ phone_set_view_info(view_info, cgroup_d->win, cgroup_d->navi,
+ cgroup_d->ug, cgroup_d->ug_request, cgroup_d->ug_cnt_max,
+ cgroup_d->ug_data);
+
+ if (0 < info->id_grp)
+ ctui_list_create_contact_view_with_info(view_info,
+ CT_GET_LIST_PERSON_OF_GROUP_ID, info);
+ else
+ // not assigned
+ ctui_list_create_contact_view_with_info(view_info,
+ CT_GET_LIST_PERSON_NOT_ASSIGNED_OF_ADDRBOOK_ID, info);
+ free(view_info);
+ }
+ else
+ {
+
+ if (info->is_read_only == true)
+ return; //skip default group
+
+ info->selected = !info->selected;
+ elm_gengrid_item_update(info->item);
+
+ if (EINA_TRUE == info->selected)
+ cgroup_d->count++;
+ else
+ cgroup_d->count--;
+
+ group_navi_item_update(cgroup_d);
+ group_notify_update(cgroup_d);
+ }
+}
+
+static void group_create_itcs()
+{
+ PH_TRACE;
+ group_itcs[GROUP_ITC_GROUP_TITLE].func.text_get = group_gl_index_label_get;
+
+ group_itcs[GROUP_ITC_1IMAGE].func.text_get = group_gl_label_get;
+ group_itcs[GROUP_ITC_1IMAGE].func.content_get = group_gl_content_get;
+ group_itcs[GROUP_ITC_1IMAGE].func.del = group_gl_del;
+
+ group_itcs[GROUP_ITC_2IMAGE].func.text_get = group_gl_label_get;
+ group_itcs[GROUP_ITC_2IMAGE].func.content_get = group_gl_content_get;
+ group_itcs[GROUP_ITC_2IMAGE].func.del = group_gl_del;
+
+ group_itcs[GROUP_ITC_3IMAGE].func.text_get = group_gl_label_get;
+ group_itcs[GROUP_ITC_3IMAGE].func.content_get = group_gl_content_get;
+ group_itcs[GROUP_ITC_3IMAGE].func.del = group_gl_del;
+
+ group_itcs[GROUP_ITC_6IMAGE].func.text_get = group_gl_label_get;
+ group_itcs[GROUP_ITC_6IMAGE].func.content_get = group_gl_content_get;
+ group_itcs[GROUP_ITC_6IMAGE].func.del = group_gl_del;
+}
+
+static Elm_Gengrid_Item_Class* group_get_gengrid_item_class(const char *img,
+ int count)
+{
+ PH_TRACE;
+ PH_DBG("count = %d", count);
+ if (img && *img)
+ {
+ return &group_itcs[GROUP_ITC_1IMAGE];
+ }
+ else if (count <= 10)
+ {
+ return &group_itcs[GROUP_ITC_3IMAGE];
+ }
+ else
+ {
+ return &group_itcs[GROUP_ITC_6IMAGE];
+ }
+}
+
+static contacts_filter_h group_create_filter_int(contacts_filter_h filter,
+ const char *view_uri, int property_id, contacts_match_int_flag_e flag,
+ int match_value)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+
+ if (NULL == filter)
+ {
+ err = contacts_filter_create(view_uri, &filter);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_filter_create() Failed(%d)", err);
+ }
+ else
+ {
+ err = contacts_filter_add_operator(filter,
+ CONTACTS_FILTER_OPERATOR_AND);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_add_operator() Failed(%d)", err);
+ }
+
+ err = contacts_filter_add_int(filter, property_id, flag, match_value);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_add_int() Failed(%d)", err);
+
+ return filter;
+}
+
+static void __group_get_images(ct_group_list *info, contacts_list_h person_list)
+{
+ PH_TRACE;
+ int cnt = 0;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ if (person_list == NULL)
+ {
+ ERR("person list is null");
+ return;
+ }
+
+ err = contacts_list_get_current_record_p(person_list, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "phone_cts_get_list() Failed(%d)",
+ err);
+ while (record)
+ {
+ char *path = NULL;
+ contacts_record_get_str_p(record,
+ _contacts_person_grouprel.image_thumbnail_path, &path);
+ info->img_list[cnt++] = SAFE_STRDUP(path);
+ err = contacts_list_next(person_list);
+ if (CONTACTS_ERROR_NONE != err)
+ break;
+ contacts_list_get_current_record_p(person_list, &record);
+ if (5 < cnt)
+ break;
+ }
+
+}
+
+static void __group_append_gengrid_of_ab(ct_group_data *cgroup_d, int ab_id,
+ int ab_mode)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ unsigned int count = 0;
+ ct_group_list *info;
+ contacts_record_h record = NULL;
+ contacts_list_h group_list = NULL;
+ contacts_list_h person_list = NULL;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+
+ unsigned int person_grouprel_projection[] = {
+ _contacts_person_grouprel.person_id,
+ _contacts_person_grouprel.status,
+ _contacts_person_grouprel.display_name,
+ _contacts_person_grouprel.display_name_index,
+ _contacts_person_grouprel.addressbook_ids,
+ _contacts_person_grouprel.image_thumbnail_path,
+ _contacts_person_grouprel.link_count, };
+
+ err = phone_cts_get_list(_contacts_group._uri,
+ _contacts_group.address_book_id, ab_id, &group_list);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "phone_cts_get_list() Failed(%d)",
+ err);
+
+ err = contacts_list_get_current_record_p(group_list, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_get_current_record_p() Failed(%d)", err);
+ while (record)
+ {
+ int grp_id;
+ char* img = NULL;
+ char* group_system_id = NULL;
+ bool is_read_only = false;
+
+ err = contacts_record_get_int(record, _contacts_group.id, &grp_id);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ info = (ct_group_list *) calloc(1, sizeof(ct_group_list));
+ if (NULL == info)
+ {
+ ERR("calloc() return NULL");
+ break;
+ }
+ info->id_ab = ab_id;
+ info->mode = ab_mode;
+ info->id_grp = grp_id;
+ info->name = '\0';
+ err = contacts_record_get_str_p(record, _contacts_group.image_path,
+ &img);
+
+ if(CONTACTS_ERROR_NONE != err)
+ {
+ free(info);
+ info = NULL;
+ return;
+ }
+
+ info->img = SAFE_STRDUP(img);
+
+ contacts_record_get_str_p(record, _contacts_group.extra_data,
+ &group_system_id);
+ if (group_system_id && cgroup_d->group_mode != GROUP_MODE_NORMAL)
+ {
+ free(info);
+ info = NULL;
+ err = contacts_list_next(group_list);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ err = contacts_list_get_current_record_p(group_list, &record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+ continue;
+ }
+ else
+ {
+ info->name = SAFE_STRDUP(phone_get_group_name(record));
+ }
+
+ err = phone_cts_get_list(_contacts_person_grouprel._uri,
+ _contacts_person_grouprel.group_id, grp_id, &person_list);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "phone_cts_get_list() Failed(%d)",
+ err);
+
+ err = contacts_record_get_bool(record, _contacts_group.is_read_only,
+ &is_read_only);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_bool() Failed(%d)", err);
+ info->is_read_only = is_read_only;
+
+ err = contacts_list_get_count(person_list, &count);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_get_count() Failed(%d)", err);
+ info->count = count;
+ __group_get_images(info, person_list);
+
+ info->item = elm_gengrid_item_append(cgroup_d->gengrid,
+ group_get_gengrid_item_class(info->img, info->count), info,
+ group_gl_sel, cgroup_d);
+
+ err = contacts_list_next(group_list);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ err = contacts_list_get_current_record_p(group_list, &record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+ }
+ err = contacts_list_destroy(group_list, true);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_get_current_record_p() Failed(%d)", err);
+
+ err = contacts_query_create(_contacts_person_grouprel._uri, &query);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_query_create() Failed(%d)",
+ err);
+
+ filter = group_create_filter_int(filter, _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.address_book_id, CONTACTS_MATCH_EQUAL,
+ ab_id);
+ filter = group_create_filter_int(filter, _contacts_person_grouprel._uri,
+ _contacts_person_grouprel.group_id, CONTACTS_MATCH_NONE, 0);
+
+ do
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_filter(query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_distinct(query, true)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_projection(query,
+ person_grouprel_projection,
+ sizeof(person_grouprel_projection) / sizeof(int))))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_db_get_records_with_query(query, 0, 0,
+ &person_list)))
+ break;
+
+ err = contacts_list_get_count(person_list, &count);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_get_count() Failed(%d)", err);
+
+ if (0 < count && cgroup_d->group_mode == GROUP_MODE_NORMAL)
+ {
+ info = (ct_group_list *) calloc(1, sizeof(ct_group_list));
+ p_retm_if(NULL == info, "calloc() return NULL");
+ info->id_ab = ab_id;
+ info->count = count;
+ info->mode = ab_mode;
+ if (0 == ab_id)
+ info->name = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_NOT_ASSIGNED));
+ else
+ info->name = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_ALL_CONTACTS));
+ __group_get_images(info, person_list);
+ info->item = elm_gengrid_item_append(cgroup_d->gengrid,
+ group_get_gengrid_item_class(info->img, info->count), info,
+ group_gl_sel, cgroup_d);
+ }
+ }
+ while (0);
+
+ contacts_query_destroy(query);
+ contacts_filter_destroy(filter);
+}
+
+static void __group_fill_layout(ct_group_data *cgroup_d)
+{
+ PH_TRACE;
+ int ret;
+ contacts_record_h record = NULL;
+ contacts_list_h addressbook_list = NULL;
+
+ ret = contacts_db_get_all_records(_contacts_address_book._uri, 0, 0,
+ &addressbook_list);
+ p_retm_if(CONTACTS_ERROR_NONE != ret,
+ "contacts_db_get_all_records() Failed(%d)", ret);
+ ret = contacts_list_get_current_record_p(addressbook_list, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != ret,
+ "contacts_list_get_current_record_p() Failed(%d)", ret);
+ while (record)
+ {
+ int ab_id;
+ int ab_mode;
+ char *name;
+
+ ret = contacts_record_get_int(record, _contacts_address_book.id,
+ &ab_id);
+ p_retm_if(CONTACTS_ERROR_NONE != ret,
+ "contacts_record_get_int() Failed(%d)", ret);
+ if (0 == ab_id)
+ name = (char *) T_(CT_GET_TEXT_BASIC, CTTEXT_MY_PHONE);
+ else
+ {
+ ret = contacts_record_get_str_p(record, _contacts_address_book.name,
+ &name);
+ p_retm_if(CONTACTS_ERROR_NONE != ret,
+ "contacts_record_get_str() Failed(%d)", ret);
+ }
+ ret = contacts_record_get_int(record, _contacts_address_book.mode,
+ &ab_mode);
+ p_retm_if(CONTACTS_ERROR_NONE != ret,
+ "contacts_record_get_int() Failed(%d)", ret);
+
+ if (GROUP_MODE_NORMAL == cgroup_d->group_mode
+ || CONTACTS_ADDRESS_BOOK_MODE_READONLY != ab_mode)
+ {
+ elm_gengrid_item_append(cgroup_d->gengrid,
+ &group_itcs[GROUP_ITC_GROUP_TITLE], name, NULL, NULL);
+ __group_append_gengrid_of_ab(cgroup_d, ab_id, ab_mode);
+ }
+ ret = contacts_list_next(addressbook_list);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_next() Failed(%d)",
+ ret);
+ ret = contacts_list_get_current_record_p(addressbook_list, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != ret,
+ "contacts_list_get_current_record_p() Failed(%d)", ret);
+ }
+ ret = contacts_list_destroy(addressbook_list, true);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_destroy() Failed(%d)",
+ ret);
+}
+
+static void group_edit_mode_end(ct_group_data *cgroup_d, bool redraw)
+{
+ PH_TRACE;
+ p_retm_if(NULL == cgroup_d, "parameter(cgroup_d) is NULL");
+ cgroup_d->count = 0;
+ phone_hide_notify(cgroup_d->layout);
+ cgroup_d->group_mode = GROUP_MODE_NORMAL;
+ if (redraw)
+ phone_group_set_navi(cgroup_d->layout);
+ elm_gengrid_clear(cgroup_d->gengrid);
+ __group_fill_layout(cgroup_d);
+}
+
+static Eina_Bool group_wait_changed(void *user_data)
+{
+ PH_TRACE;
+ ct_group_data *cgroup_d = (ct_group_data *) user_data;
+ ecore_timer_del(cgroup_d->waiting_timer);
+ cgroup_d->waiting_timer = NULL;
+ if (cgroup_d->need_update)
+ {
+ PH_DBG("need to update");
+ cgroup_d->need_update = false;
+ group_changed(cgroup_d);
+ }
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool group_changed(void *user_data)
+{
+ PH_TRACE;
+ ct_group_data *cgroup_d = (ct_group_data *) user_data;
+ PH_DBG("group_changed");
+ if (cgroup_d->update_timer)
+ {
+ ecore_timer_del(cgroup_d->update_timer);
+ cgroup_d->update_timer = NULL;
+ }
+
+ if (cgroup_d->waiting_timer)
+ {
+ PH_DBG("waiting 3 seconds for group change");
+ cgroup_d->need_update = true;
+ return ECORE_CALLBACK_RENEW;;
+ }
+ else
+ {
+ cgroup_d->waiting_timer = ecore_timer_add(3.0, group_wait_changed,
+ cgroup_d);
+ }
+
+ elm_gengrid_clear(cgroup_d->gengrid);
+ __group_fill_layout(cgroup_d);
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void group_data_lazy_update(const char* view_uri, void *data)
+{
+ PH_TRACE;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+
+ if (cgroup_d->update_timer)
+ {
+ ecore_timer_del(cgroup_d->update_timer);
+ cgroup_d->update_timer = NULL;
+ }
+
+ PH_DBG("cgroup_d->is_background = %d", cgroup_d->is_background);
+
+ if (cgroup_d->is_background)
+ cgroup_d->update_timer = ecore_timer_add(3.0, group_changed, cgroup_d);
+ else
+ group_changed(cgroup_d);
+
+ if (cgroup_d->group_mode == GROUP_MODE_EDIT)
+ group_edit_mode_end(cgroup_d, true);
+}
+
+static void group_delete_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int ret;
+ bool completed = true;
+ Elm_Object_Item * item;
+ const Elm_Gengrid_Item_Class *itc_temp;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+
+ group_popup_hide_cb(cgroup_d, NULL, NULL);
+
+ item = elm_gengrid_first_item_get(cgroup_d->gengrid);
+
+ while (item)
+ {
+ itc_temp = elm_gengrid_item_item_class_get(item);
+ if (0
+ == strcmp(itc_temp->item_style,
+ group_itcs[GROUP_ITC_GROUP_TITLE].item_style))
+ {
+ item = elm_gengrid_item_next_get(item);
+ continue;
+ }
+
+ ct_group_list *info = (ct_group_list *) elm_object_item_data_get(item);
+ if (info && info->selected)
+ {
+ ret = contacts_db_delete_record(_contacts_group._uri, info->id_grp);
+ if (CONTACTS_ERROR_NONE != ret)
+ {
+ ERR("Error : contacts_db_delete_record() Failed(%d)", ret);
+ completed = false;
+ break;
+ }
+ }
+ item = elm_gengrid_item_next_get(item);
+ }
+ if (completed)
+ phone_show_tickernoti(S_(PH_SYS_POP_REMOVED));
+ else
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+
+ group_edit_mode_end(cgroup_d, true);
+}
+
+static void group_cancel_btn_cb(void *data)
+{
+ PH_TRACE;
+ Elm_Object_Item * item;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+ ct_group_list *info;
+ const Elm_Gengrid_Item_Class *itc_temp;
+
+ item = elm_gengrid_first_item_get(cgroup_d->gengrid);
+ while (item)
+ {
+ itc_temp = elm_gengrid_item_item_class_get(item);
+ if (0
+ == strcmp(itc_temp->item_style,
+ group_itcs[GROUP_ITC_GROUP_TITLE].item_style))
+ {
+ item = elm_gengrid_item_next_get(item);
+ continue;
+ }
+
+ info = (ct_group_list *) elm_object_item_data_get(item);
+ if (NULL == info)
+ continue;
+ info->selected = EINA_FALSE;
+ item = elm_gengrid_item_next_get(item);
+ }
+ group_edit_mode_end(cgroup_d, true);
+}
+
+static void group_edit_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+ if (cgroup_d->popup)
+ {
+ evas_object_del(cgroup_d->popup);
+ cgroup_d->popup = NULL;
+ }
+
+ cgroup_d->group_mode = GROUP_MODE_EDIT;
+ phone_group_set_navi(cgroup_d->layout);
+ elm_gengrid_clear(cgroup_d->gengrid);
+ __group_fill_layout(cgroup_d);
+ phone_show_notify(cgroup_d->layout,
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_SELECT_GROUP));
+
+}
+
+static void group_more_cb(void *data)
+{
+ PH_TRACE;
+ int rotate;
+ int x, y, w, h;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+
+ if (cgroup_d->popup)
+ {
+ evas_object_del(cgroup_d->popup);
+ cgroup_d->popup = NULL;
+ }
+
+ cgroup_d->popup = elm_ctxpopup_add(cgroup_d->navi);
+ p_retm_if(NULL == cgroup_d->popup, "elm_ctxpopup_add() return NULL");
+
+ rotate = (int) evas_object_data_get(cgroup_d->navi, "phone_rotate");
+ if (0 == rotate || 180 == rotate)
+ elm_ctxpopup_direction_priority_set(cgroup_d->popup,
+ ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP,
+ ELM_CTXPOPUP_DIRECTION_LEFT, ELM_CTXPOPUP_DIRECTION_RIGHT);
+
+ evas_object_smart_callback_add(cgroup_d->popup, "dismissed",
+ group_popup_hide_cb, cgroup_d);
+
+ elm_ctxpopup_item_append(cgroup_d->popup, S_(PH_SYS_SK_EDIT), NULL,
+ group_edit_cb, cgroup_d);
+
+ evas_object_geometry_get(cgroup_d->navi, &x, &y, &w, &h);
+ evas_object_move(cgroup_d->popup, 0, y + h);
+ evas_object_show(cgroup_d->popup);
+}
+
+static void group_add_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+ evas_object_data_set(cgroup_d->navi, "navi_it_pop_to", cgroup_d->navi_item);
+ ctui_create_group_input_view(cgroup_d->win, cgroup_d->navi, NULL, NULL,
+ NULL);
+}
+
+#ifdef _CT_GROUP_DEFAULT_GROUP_UPDATE_DB
+static void group_update_default_group_name(keynode_t *key, void *data)
+{
+ PH_TRACE;
+ int ret;
+ int text_index= -1;
+ contacts_record_h record = NULL;
+ contacts_record_h group_record = NULL;
+ contacts_list_h group_list = NULL;
+
+ group_list = NULL;
+ ret = contacts_db_get_all_records( _contacts_group._uri,0,0,&group_list);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_db_get_all_records() Failed(%d)", ret);
+ ret = contacts_list_get_current_record_p(group_list, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_get_current_record_p() Failed(%d)", ret);
+ while(record)
+ {
+ int grp_id;
+ char* group_sysid;
+ char* group_name;
+
+ ret = contacts_record_get_int(record,_contacts_group.id,&grp_id);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_record_get_int() Failed(%d)", ret);
+ ret = contacts_record_get_str_p(record,_contacts_group.extra_data,&group_sysid);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_record_get_str_p() Failed(%d)", ret);
+ ret = contacts_record_get_str_p(record,_contacts_group.name,&group_name);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_record_get_str_p() Failed(%d)", ret);
+ if(group_sysid == NULL)
+ {
+ PH_DBG("sysid null ,group_name__ = %s ", group_name);
+
+ ret = contacts_list_next(group_list);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_next() Failed(%d)", ret);
+
+ ret = contacts_list_get_current_record_p(group_list, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_get_current_record_p() Failed(%d)", ret);
+ continue;
+ }
+ PH_DBG("group_sysid = %s",group_sysid);
+ if(strcmp(group_sysid,FRIENDS)==0)
+ text_index = CTTEXT_FRIENDS;
+ else if(strcmp(group_sysid,FAMILY)==0)
+ text_index = CTTEXT_FRIENDS+1;
+ else if(strcmp(group_sysid,COWORKERS)==0)
+ text_index = CTTEXT_FRIENDS+2;
+ else
+ {
+ ret = contacts_list_next(group_list);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_next() Failed(%d)", ret);
+
+ ret = contacts_list_get_current_record_p(group_list, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_get_current_record_p() Failed(%d)", ret);
+ continue;
+ }
+
+ if(text_index == -1)
+ {
+ ret = contacts_list_next(group_list);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_next() Failed(%d)", ret);
+
+ ret = contacts_list_get_current_record_p(group_list, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_get_current_record_p() Failed(%d)", ret);
+ ERR("text_index is -1, failed");
+ continue;
+ }
+ else
+ PH_DBG("text_index = %d",text_index);
+
+ PH_DBG("group = %s , %s", group_name,T_(CT_GET_TEXT_BASIC, text_index));
+
+ if(strcmp(group_name,T_(CT_GET_TEXT_BASIC, text_index)) != 0)
+ {
+ ret = contacts_db_get_record(_contacts_group._uri,grp_id,&group_record);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_db_get_record() Failed(%d)", ret);
+
+ ret = contacts_record_set_str(group_record,_contacts_group.name,T_(CT_GET_TEXT_BASIC, text_index));
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Failed(%d)", ret);
+
+ ret = contacts_db_update_record(group_record);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_db_update_record() Failed(%d)", ret);
+
+ ret = contacts_record_destroy(group_record, true);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_record_destroy() Failed(%d)", ret);
+ }
+ ret = contacts_list_next(group_list);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_next() Failed(%d)", ret);
+
+ ret = contacts_list_get_current_record_p(group_list, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_get_current_record_p() Failed(%d)", ret);
+ }
+ ret = contacts_list_destroy(group_list, true);
+ p_retm_if(CONTACTS_ERROR_NONE != ret, "contacts_list_destroy() Failed(%d)", ret);
+
+}
+#endif
+
+static void __group_pop_as_topmost(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+ if (cgroup_d->navi_item == elm_naviframe_top_item_get(obj))
+ {
+ group_notify_update(cgroup_d);
+ }
+}
+
+static void group_view_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int ret;
+ ct_group_data *cgroup_d = (ct_group_data *) data;
+ p_retm_if(NULL == cgroup_d, "parameter(cgroup_d) is NULL");
+
+ ret = contacts_db_remove_changed_cb(_contacts_contact._uri,
+ group_data_lazy_update, cgroup_d);
+ p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_remove_changed_cb() Failed(%d)",
+ ret);
+ ret = contacts_db_remove_changed_cb(_contacts_group._uri,
+ group_data_lazy_update, cgroup_d);
+ p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_remove_changed_cb() Failed(%d)",
+ ret);
+ ret = contacts_db_remove_changed_cb(_contacts_person._uri,
+ group_data_lazy_update, cgroup_d);
+ p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_remove_changed_cb() Failed(%d)",
+ ret);
+
+#ifdef _CT_GROUP_DEFAULT_GROUP_UPDATE_DB
+ ret = vconf_ignore_key_changed(VCONFKEY_LANGSET, group_update_default_group_name);
+ p_warn_if(-1 == ret, "vconf_ignore_key_changed() Failed");
+#endif
+
+ if (cgroup_d->th)
+ {
+ elm_theme_extension_del(cgroup_d->th, GROUP_THEME_EDJ);
+ elm_theme_extension_del(cgroup_d->th, CONTACT_BUTTON_THEME_EDJ);
+ elm_theme_free(cgroup_d->th);
+ }
+
+ if (cgroup_d->child_ug)
+ ug_destroy(cgroup_d->child_ug);
+
+ if (cgroup_d->crop_ug)
+ ug_destroy((ui_gadget_h) cgroup_d->crop_ug);
+
+ if (cgroup_d->child_ug)
+ ug_destroy(cgroup_d->child_ug);
+
+ if (cgroup_d->popup)
+ evas_object_del(cgroup_d->popup);
+
+ if (cgroup_d->update_timer)
+ ecore_timer_del(cgroup_d->update_timer);
+
+ if (cgroup_d->waiting_timer)
+ ecore_timer_del(cgroup_d->waiting_timer);
+
+ evas_object_smart_callback_del(cgroup_d->navi, "transition,finished",
+ __group_pop_as_topmost);
+
+ free(cgroup_d);
+}
+
+static int group_create_layout(ct_group_data *cgroup_d, Evas_Object *parent)
+{
+ PH_TRACE;
+ int ret;
+ const int CT_GROUP_ITEM_WIDTH = 360;
+ const int CT_GROUP_ITEM_HEIGHT = 340;
+ double scale;
+ Evas_Object *layout;
+ Evas_Object *base;
+ Evas_Object *gengrid;
+ cgroup_d->navi = parent;
+
+ base = elm_layout_add(cgroup_d->navi);
+ p_retvm_if(NULL == base, -1, "elm_layout_add() return NULL");
+ elm_layout_file_set(base, SELECTION_INFO_EDJ, "selectioninfo_layout");
+ layout = phone_create_base_layout(base, false);
+ p_retvm_if(NULL == layout, -1, "phone_create_base_layout() return NULL");
+ elm_object_part_content_set(base, "contents", layout);
+ cgroup_d->layout = base;
+
+ gengrid = elm_gengrid_add(layout);
+ p_retvm_if(NULL == gengrid, -1, "elm_gengrid_add() return NULL");
+ elm_object_theme_set(gengrid, cgroup_d->th);
+ evas_object_size_hint_weight_set(gengrid, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_gengrid_align_set(gengrid, 0.5, 0.0);
+ evas_object_data_set(gengrid, "cgroup_d", cgroup_d);
+
+ scale = elm_config_scale_get();
+ elm_gengrid_group_item_size_set(gengrid, (int) (720 * scale),
+ (int) (50 * scale));
+ elm_gengrid_item_size_set(gengrid, (int) (CT_GROUP_ITEM_WIDTH * scale),
+ (int) (CT_GROUP_ITEM_HEIGHT * scale));
+ elm_gengrid_horizontal_set(gengrid, EINA_FALSE);
+
+ elm_scroller_policy_set(gengrid, ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_AUTO);
+ elm_object_part_content_set(layout, "elm.swallow.content", gengrid);
+ cgroup_d->gengrid = gengrid;
+
+#ifdef _CT_GROUP_DEFAULT_GROUP_UPDATE_DB
+ group_update_default_group_name(NULL, NULL);
+ ret = vconf_notify_key_changed(VCONFKEY_LANGSET, group_update_default_group_name, NULL);
+ p_warn_if(-1 == ret, "vconf_notify_key_changed() Failed");
+#endif
+
+ group_create_itcs();
+ __group_fill_layout(cgroup_d);
+
+ evas_object_event_callback_add(cgroup_d->layout, EVAS_CALLBACK_DEL,
+ group_view_delete_cb, cgroup_d);
+
+ ret = contacts_db_add_changed_cb(_contacts_contact._uri,
+ group_data_lazy_update, cgroup_d);
+ p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_add_changed_cb() Failed(%d)",
+ ret);
+
+ ret = contacts_db_add_changed_cb(_contacts_group._uri,
+ group_data_lazy_update, cgroup_d);
+ p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_add_changed_cb() Failed(%d)",
+ ret);
+
+ ret = contacts_db_add_changed_cb(_contacts_person._uri,
+ group_data_lazy_update, cgroup_d);
+ p_warn_if(CONTACTS_ERROR_NONE, "contacts_db_add_changed_cb() Failed(%d)",
+ ret);
+
+ return 0;
+
+}
+
+API void phone_group_set_navi(Evas_Object *layout)
+{
+ PH_TRACE;
+ ct_group_data *cgroup_d;
+ Elm_Object_Item *navi_it;
+
+ cgroup_d = (ct_group_data *) evas_object_data_get(layout, KEY_GROUP_DATA);
+ p_retm_if(NULL == cgroup_d, "cgroup_d is NULL");
+ navi_it = elm_naviframe_bottom_item_get(cgroup_d->navi);
+ p_retm_if(NULL == navi_it, "navi item is NULL");
+
+ phone_navi_item_reset(cgroup_d->navi_item, cgroup_d);
+
+ if (!cgroup_d->ug)
+ {
+ if (GROUP_MODE_NORMAL == cgroup_d->group_mode)
+ {
+ Evas_Object *group_button;
+
+ group_button = phone_create_toolbar_btn(cgroup_d->layout,
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_CREATE_GROUP), group_add_cb, cgroup_d);
+ elm_object_part_content_set(cgroup_d->layout, "toolbar",
+ group_button);
+
+ cgroup_d->menu_cb = group_more_cb;
+ }
+ else
+ {
+ cgroup_d->delete_button = phone_create_toolbar_btn(cgroup_d->layout,
+ T_(PH_GET_TEXT_BASIC, CTTEXT_REMOVE), group_delete_btn_cb, cgroup_d);
+ elm_object_part_content_set(cgroup_d->layout, "toolbar",
+ cgroup_d->delete_button);
+ elm_object_disabled_set(cgroup_d->delete_button, EINA_TRUE);
+
+ cgroup_d->back_cb = group_cancel_btn_cb;
+ }
+ }
+}
+
+API Evas_Object* phone_create_group_view(ph_view_info *view_info)
+{
+ PH_TRACE;
+ int ret;
+ Elm_Theme *th;
+ ct_group_data *cgroup_d = (ct_group_data *) calloc(1, sizeof(ct_group_data));
+ p_retvm_if(NULL == cgroup_d, NULL, "Fail to calloc ct_group_data");
+ cgroup_d->ug = view_info->ug;
+ cgroup_d->ug_request = view_info->ug_request;
+ cgroup_d->ug_cnt_max = view_info->ug_cnt_max;
+ cgroup_d->ug_data = view_info->ug_data;
+ cgroup_d->win = view_info->win;
+ cgroup_d->navi_item = elm_naviframe_bottom_item_get(view_info->navi);
+ cgroup_d->is_background = true;
+
+ th = elm_theme_new();
+ elm_theme_ref_set(th, NULL);
+ elm_theme_extension_add(th, GROUP_THEME_EDJ);
+ elm_theme_extension_add(th, CONTACT_BUTTON_THEME_EDJ);
+ cgroup_d->th = th;
+
+ ret = group_create_layout(cgroup_d, view_info->navi);
+ if (ret < 0)
+ {
+ free(cgroup_d);
+ return NULL;
+ }
+
+ evas_object_data_set(cgroup_d->layout, KEY_GROUP_DATA, cgroup_d);
+ evas_object_data_set(cgroup_d->navi, KEY_GROUP_DATA, cgroup_d);
+
+ evas_object_smart_callback_add(view_info->navi, "transition,finished",
+ __group_pop_as_topmost, cgroup_d);
+
+ return cgroup_d->layout;
+}
+
+API void phone_group_view_reset(Evas_Object *base)
+{
+ PH_TRACE;
+ ct_group_data *cgroup_d;
+ Elm_Object_Item * item;
+
+ cgroup_d = (ct_group_data *) evas_object_data_get(base, KEY_GROUP_DATA);
+ p_retm_if(NULL == cgroup_d, "cgroup_d is null");
+
+ if (cgroup_d->child_ug)
+ {
+ ug_destroy(cgroup_d->child_ug);
+ cgroup_d->child_ug = NULL;
+ }
+
+ item = elm_naviframe_bottom_item_get(cgroup_d->navi);
+ if (elm_naviframe_top_item_get(cgroup_d->navi) != item)
+ elm_naviframe_item_pop_to(item);
+
+ if (GROUP_MODE_EDIT == cgroup_d->group_mode)
+ group_edit_mode_end(cgroup_d, false);
+}
+
+API void phone_group_view_language_changed(Evas_Object *base)
+{
+ PH_TRACE;
+ ct_group_data *cgroup_d;
+ cgroup_d = (ct_group_data *) evas_object_data_get(base, KEY_GROUP_DATA);
+ p_retm_if(NULL == cgroup_d, "evas_object_data_get() return NULL");
+ group_changed(cgroup_d);
+
+ if (cgroup_d->group_mode == GROUP_MODE_EDIT)
+ group_notify_update(cgroup_d);
+}
+
+API void phone_group_set_background(Evas_Object *obj, bool is_background)
+{
+ PH_TRACE;
+ ct_group_data *cgroup_d;
+ cgroup_d = (ct_group_data *) evas_object_data_get(obj, KEY_GROUP_DATA);
+ p_retm_if(NULL == cgroup_d, "group data is null");
+
+ cgroup_d->is_background = is_background;
+ if (cgroup_d->update_timer)
+ {
+ ecore_timer_del(cgroup_d->update_timer);
+ cgroup_d->update_timer = NULL;
+ group_changed(cgroup_d);
+ }
+}
+
+API Evas_Object* phone_create_group_view_ug(ui_gadget_h ug, Evas_Object *parent,
+ int ug_request)
+{
+ PH_TRACE;
+ int ret;
+ Elm_Theme *th;
+ ct_group_data *cgroup_d = (ct_group_data *) calloc(1, sizeof(ct_group_data));
+ p_retvm_if(NULL == cgroup_d, NULL, "Fail to calloc ct_group_data");
+ cgroup_d->ug = ug;
+ cgroup_d->ug_request = ug_request;
+ cgroup_d->navi = elm_naviframe_add(parent);
+ p_retvm_if(NULL == cgroup_d->navi, FALSE,
+ "elm_naviframe_add() return NULL");
+
+ ea_object_event_callback_add(cgroup_d->navi, EA_CALLBACK_BACK, &Common::ViewManager::onBack, cgroup_d->win);
+ ea_object_event_callback_add(cgroup_d->navi, EA_CALLBACK_MORE, &Common::ViewManager::onMenu, NULL);
+ elm_object_part_content_set(parent, "elm.swallow.content", cgroup_d->navi);
+ evas_object_show(cgroup_d->navi);
+
+ th = elm_theme_new();
+ elm_theme_ref_set(th, NULL);
+ elm_theme_extension_add(th, GROUP_THEME_EDJ);
+ elm_theme_extension_add(th, CONTACT_BUTTON_THEME_EDJ);
+ cgroup_d->th = th;
+
+ ret = group_create_layout(cgroup_d, cgroup_d->navi);
+ if (ret < 0)
+ {
+ free(cgroup_d);
+ return NULL;
+ }
+ cgroup_d->navi_item = elm_naviframe_item_push(cgroup_d->navi,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_GROUP), NULL, NULL,
+ cgroup_d->layout, NULL);
+ evas_object_data_set(cgroup_d->layout, KEY_GROUP_DATA, cgroup_d);
+ return cgroup_d->layout;
+}
+
diff --git a/lib/list/ct-list-contact-view.cpp b/lib/list/ct-list-contact-view.cpp
new file mode 100755
index 0000000..6cd06ea
--- /dev/null
+++ b/lib/list/ct-list-contact-view.cpp
@@ -0,0 +1,1264 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
+#include <string.h>
+#include <ui-gadget-module.h>
+
+#include "phone.h"
+#include "ct-detail.h"
+#include "ct-list.h"
+#include "ct-list-utils.h"
+#include "ct-list-view-ug.h"
+#include "ct-list-edit-view.h"
+#include "ct-list-contact-view.h"
+#include "ct-group.h"
+#include "ct-list.h"
+#include "phone-common.h"
+
+static void __list_insert_records(ct_list_data *clist_d);
+
+API void ctui_list_new_btn_clicked_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ ct_detail_data *cdetail_d = NULL;
+ ph_view_info *view_info = NULL;
+
+ assert(clist_d);
+ p_ret_if(!clist_d);
+
+ switch (clist_d->ug_request)
+ {
+ //case PH_UG_REQUEST_SET_WITH_NUM:
+ //case PH_UG_REQUEST_SET_WITH_EMAIL:
+ //case PH_UG_REQUEST_SET_WITH_WEB:
+ case PH_UG_REQUEST_SET_WITH_IMG:
+ case PH_UG_REQUEST_SET_WITH_RINGTONE:
+ case CT_UG_REQUEST_UPDATE_CONTACT:
+ case CT_UG_REQUEST_UPDATE_WITH_NUM:
+ case CT_UG_REQUEST_UPDATE_WITH_EMAIL:
+ case CT_UG_REQUEST_UPDATE_WITH_WEB:
+ case CT_UG_REQUEST_SAVE_IMG:
+ case CT_UG_REQUEST_SAVE_RINGTONE:
+ view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info));
+ phone_set_view_info(view_info, clist_d->win, clist_d->navi,
+ clist_d->ug, clist_d->ug_request, clist_d->cnt_max_check,
+ clist_d->ug_data);
+ ctui_list_update_with_data(view_info, clist_d, 0, clist_d->base_grp,
+ clist_d->base_ab);
+ free(view_info);
+ break;
+ default:
+
+ // hide sweeped item
+ Elm_Object_Item *lastItem = clist_d->last_sweep_item;
+
+ if (NULL != lastItem)
+ {
+ elm_genlist_item_decorate_mode_set(lastItem, "slide", EINA_FALSE);
+ elm_genlist_item_select_mode_set(lastItem, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ clist_d->last_sweep_item = NULL;
+ }
+
+ cdetail_d = (ct_detail_data *) calloc(1, sizeof(ct_detail_data));
+ p_retm_if(!cdetail_d, "cdetail_d is NULL, Not enough memory");
+
+ ctui_ld_to_dd(clist_d, cdetail_d);
+
+ if (0 < cdetail_d->base_ab)
+ {
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ char temp[PH_TEXT_MAX_LEN + 1];
+
+ err = contacts_db_get_record(_contacts_address_book._uri,
+ cdetail_d->base_ab, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_record_get() Failed(%d)", err);
+
+ err = contacts_record_get_int(record,
+ _contacts_address_book.mode,
+ &(cdetail_d->base_ab_mode));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ temp[0] = '\0';
+ ctui_get_addressbook_name(cdetail_d->base_ab, temp,
+ sizeof(temp));
+ if (*temp)
+ cdetail_d->base_ab_name = strdup(temp);
+ }
+ else if (0 == cdetail_d->base_ab)
+ {
+ cdetail_d->base_ab_mode = CONTACTS_ADDRESS_BOOK_MODE_NONE;
+ cdetail_d->base_ab_name = strdup(
+ T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE));
+ }
+ cdetail_d->only_input = true;
+ ctui_create_input_view(cdetail_d);
+
+ break;
+ }
+}
+
+static void list_popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_list_data *clist_d = static_cast<ct_list_data*>( data );
+ if (NULL != clist_d->popup)
+ {
+ evas_object_del(clist_d->popup);
+ clist_d->popup = NULL;
+ }
+ elm_object_tree_focus_allow_set(clist_d->navi, EINA_TRUE);
+ }
+}
+
+static void list_menu_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_list_data *clist_d = static_cast<ct_list_data*>( data );
+ if (NULL != clist_d->m_Menu)
+ {
+ evas_object_del(clist_d->m_Menu);
+ clist_d->m_Menu = NULL;
+ }
+ elm_object_tree_focus_allow_set(clist_d->navi, EINA_TRUE);
+ }
+}
+
+static void list_remove_member_button_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ p_retm_if(NULL == clist_d->navi_item, "parameter(navi_item) is NULL");
+
+ list_menu_hide_cb(data, NULL, NULL);
+ clist_d->view_id = CT_LIST_MULTI_REMOVE_MEMBER;
+
+ if (clist_d->genlist)
+ elm_object_focus_set(clist_d->genlist, EINA_TRUE);
+ if (!clist_d->ug)
+ ctui_list_edit_mode_start(clist_d);
+}
+
+static void list_ab_popup_view_button_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int selected_id;
+ Evas_Object *popup;
+ Evas_Object *genlist;
+ Evas_Object *radio_main;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL");
+
+ popup = clist_d->popup;
+ p_retm_if(NULL == clist_d, "popup is NULL");
+
+ genlist = elm_object_content_get(popup);
+ p_retm_if(NULL == genlist, "elm_object_content_get() is NULL");
+
+ radio_main = (Evas_Object *) evas_object_data_get(genlist, "radio_main");
+ p_retm_if(NULL == radio_main, "evas_object_data_get() is NULL");
+
+ selected_id = elm_radio_value_get(radio_main);
+
+ if (clist_d->list_op != CT_GET_LIST_ALL_PERSON && selected_id == -1)
+ {
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON;
+ clist_d->base_ab = -1;
+ }
+ else if (clist_d->base_ab != selected_id)
+ {
+ clist_d->list_op = CT_GET_LIST_PERSON_OF_ADDRBOOK_ID;
+ clist_d->base_ab = selected_id;
+ }
+
+ ctui_set_view_mode(clist_d->base_ab);
+ ctui_list_genlist_update(clist_d);
+
+ list_popup_hide_cb(data, NULL, NULL);
+}
+
+static void list_ab_popup_cancel_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ list_popup_hide_cb(data, NULL, NULL);
+}
+
+static void list_ab_popup_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *genlist;
+ Evas_Object *radio_main;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ ct_ab_popup_data *ab_popup_data;
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ genlist = elm_object_item_widget_get(item);
+ p_retm_if(NULL == genlist, "elm_object_item_widget_get() return NULL");
+
+ ab_popup_data = (ct_ab_popup_data *) elm_object_item_data_get(item);
+ p_retm_if(NULL == ab_popup_data, "elm_object_item_data_get() return NULL");
+
+ radio_main = (Evas_Object *) evas_object_data_get(genlist, "radio_main");
+ p_retm_if(NULL == radio_main, "evas_object_data_get() return NULL");
+
+ elm_radio_value_set(radio_main, ab_popup_data->id);
+}
+
+static void list_view_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_list_data* clist_d = static_cast<ct_list_data*>(data);
+ p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL");
+
+ list_popup_hide_cb(data, NULL, NULL);
+
+ Evas_Object *popup = NULL;
+ popup = ctui_addrbook_popup(clist_d->win, list_ab_popup_sel, clist_d, CT_AB_POPUP_TYPE_LIST_VIEW);
+ p_retm_if(NULL == popup, "ctui_addrbook_popup() return NULL");
+ elm_object_part_text_set(popup, "title,text", T_(PH_GET_TEXT_BASIC, PHTEXT_CONTACTS_MENU_CONTACTS_TO_DISPLAY));
+ clist_d->popup = popup;
+
+ Evas_Object *btnOK = NULL;
+ btnOK = elm_button_add(popup);
+ p_retm_if(NULL == btnOK, "elm_button_add() return NULL");
+ elm_object_text_set(btnOK, S_(PH_SYS_SK_OK));
+ elm_object_part_content_set(popup, "button1", btnOK);
+ elm_object_style_set(btnOK, "popup_button/default");
+ evas_object_smart_callback_add(btnOK, "clicked", list_ab_popup_view_button_cb, clist_d);
+
+ Evas_Object *btnCancel = NULL;
+ btnCancel = elm_button_add(popup);
+ p_retm_if(NULL == btnCancel, "elm_button_add() return NULL");
+ elm_object_text_set(btnCancel, S_(PH_SYS_SK_CANCEL));
+ elm_object_part_content_set(popup, "button2", btnCancel);
+ elm_object_style_set(btnCancel, "popup_button/default");
+ evas_object_smart_callback_add(btnCancel, "clicked", list_ab_popup_cancel_button_cb, clist_d);
+ }
+}
+
+static void list_add_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+
+ evas_object_data_set(clist_d->navi, "navi_it_pop", clist_d->navi_item);
+ ctui_create_gadd_list_select_view(clist_d->win, clist_d->navi,
+ clist_d->base_grp, clist_d->base_ab, &clist_d->list, true);
+}
+
+static bool list_load_vcard_foreach_cb(contacts_record_h record, void *data)
+{
+ PH_TRACE;
+ int err;
+ ph_progress_info *p_info;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ contacts_record_h record_clone = NULL;
+
+ p_retvm_if(NULL == clist_d, -1, "parameter(clist_d) is NULL");
+
+ p_info = clist_d->p_info;
+ p_retvm_if(NULL == p_info, -1, "clist_d->p_info is NULL");
+
+ PH_DBG("list_load_vcard_foreach_cb total_cnt %d",
+ clist_d->cnt_import_total);
+
+ if (!p_info->alive)
+ {
+ p_info->result = FALSE;
+ p_info->completed = true;
+ return false;
+ }
+
+ err = contacts_record_clone(record, &record_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_clone() Failed(%d)", err);
+ return false;
+ }
+ clist_d->list_import_records = eina_list_append(
+ clist_d->list_import_records, record_clone);
+ clist_d->cnt_import_total++;
+
+ return true;
+}
+
+static PTHREAD_FN list_load_vcard_contacts_thread_fn(void* data)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ char *last = NULL;
+ const char *path = NULL;
+ ph_progress_info *p_info = clist_d->p_info;
+
+ err = contacts_connect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_connect2() Failed(%d)",
+ err);
+
+ path = (const char *) strtok_r((char *) clist_d->vcard_path, "?", &last);
+ while (path)
+ {
+ err = contacts_vcard_parse_to_contact_foreach(path,
+ list_load_vcard_foreach_cb, clist_d);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ p_info->result = FALSE;
+ ERR("contacts_svc_vcard_foreach() Failed(%d)", p_info->result);
+ break;
+ }
+ path = strtok_r(NULL, "?", &last);
+ }
+
+ p_info->next_job = true;
+
+ contacts_disconnect2();
+
+ pthread_exit(NULL);
+}
+
+static void __list_insert_records_cb(int err, int *ids, unsigned int count,
+ void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ contacts_error_e _err = CONTACTS_ERROR_NONE;
+
+ PH_DBG("err %d", err);
+
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ if (clist_d->p_info)
+ {
+ clist_d->p_info->completed = true;
+ clist_d->p_info->alive = false;
+ clist_d->p_info->result = false;
+ }
+ return;
+ }
+
+ _err = (contacts_error_e) contacts_list_destroy(clist_d->import_list, true);
+ p_retm_if(CONTACTS_ERROR_NONE != _err, "contacts_list_destroy() Failed(%d)",
+ _err);
+
+ PH_DBG("__list_insert_records_cb total count %d, count %d",
+ clist_d->cnt_import_total, clist_d->cnt_import);
+
+ if (clist_d->p_info)
+ {
+ if (!clist_d->p_info->alive)
+ {
+ clist_d->p_info->result = FALSE;
+ clist_d->p_info->completed = true;
+ return;
+ }
+ }
+ else
+ return;
+
+ if (clist_d->cnt_import == clist_d->cnt_import_total)
+ {
+ if (clist_d->p_info)
+ {
+ clist_d->p_info->completed = true;
+ clist_d->p_info->alive = false;
+ clist_d->p_info->result = true;
+ }
+ return;
+ }
+
+ __list_insert_records(clist_d);
+}
+
+static void __list_insert_records(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ const int LIST_BULK_LENGTH = 50;
+ Eina_List *l;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_temp = NULL;
+
+ err = contacts_list_create(&clist_d->import_list);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_list_create() Failed(%d)",
+ err);
+
+ EINA_LIST_FOREACH(clist_d->list_import_records, l, v_record_temp)
+ {
+ contacts_record_h record_temp = (contacts_record_h) v_record_temp;
+ err = contacts_list_add(clist_d->import_list, record_temp);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_add() Failed(%d) count %d",
+ err, clist_d->cnt_import);
+ clist_d->list_import_records = eina_list_remove_list(
+ clist_d->list_import_records, l);
+
+ clist_d->cnt_import++;
+
+ if ((clist_d->cnt_import % LIST_BULK_LENGTH) == 0)
+ break;
+ }
+ err = contacts_db_insert_records_async(clist_d->import_list,
+ __list_insert_records_cb, clist_d);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_insert_records_async() Failed(%d)", err);
+ ctui_create_contacts_error_popup(clist_d->navi, err);
+}
+
+static Eina_Bool list_load_vcard_timer_cb(void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ ph_progress_info *p_info;
+
+ p_retvm_if(NULL == clist_d, ECORE_CALLBACK_CANCEL,
+ "parameter(clist_d) is NULL");
+ p_info = clist_d->p_info;
+
+ if (p_info->next_job)
+ {
+ pthread_join(p_info->thread, NULL);
+ __list_insert_records(clist_d);
+ p_info->next_job = false;
+ }
+
+ if (!p_info->alive && !p_info->completed)
+ {
+ p_info->result = FALSE;
+ p_info->completed = true;
+ }
+
+ if (!p_info->completed)
+ {
+ return ECORE_CALLBACK_RENEW;
+ }
+ else
+ {
+ Eina_List *l;
+ void *v_record = NULL;
+ const char *message;
+
+ pthread_join(p_info->thread, NULL);
+
+ if (p_info->result)
+ message = T_(CT_GET_TEXT_BASIC, CTTEXT_IMPORTED);
+ else
+ message = S_(PH_SYS_POP_FAILED);
+
+ list_popup_hide_cb(data, NULL, NULL);
+ list_menu_hide_cb(data, NULL, NULL);
+ phone_show_tickernoti(message);
+
+ EINA_LIST_FOREACH(clist_d->list_import_records, l, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ contacts_record_destroy(record, true);
+ }
+ eina_list_free(clist_d->list_import_records);
+
+ free(p_info);
+ clist_d->p_info = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+ }
+}
+
+static void list_add_all_contacts_button_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int ret;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ ph_progress_info *p_info;
+
+ p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info));
+ if (NULL == p_info)
+ {
+ ERR("calloc() return NULL");
+ elm_exit();
+ }
+
+ clist_d->p_info = p_info;
+ clist_d->list = NULL;
+ clist_d->cnt_import_total = 0;
+ clist_d->cnt_import = 0;
+
+ p_info->cnt = 0;
+ p_info->alive = true;
+ p_info->result = TRUE;
+ p_info->completed = false;
+
+ ret = pthread_create(&p_info->thread, NULL,
+ list_load_vcard_contacts_thread_fn, clist_d);
+ if (0 != ret)
+ {
+ ERR("Thread creation failed(%d)", ret);
+ free(p_info);
+ clist_d->p_info = NULL;
+ elm_exit();
+ }
+ p_info->timer = ecore_timer_add(0.5, list_load_vcard_timer_cb, clist_d);
+ if (NULL == p_info->timer)
+ {
+ ERR("ecore_timer_add() return NULL");
+
+ p_info->alive = false;
+ pthread_join(p_info->thread, NULL);
+
+ free(p_info);
+ clist_d->p_info = NULL;
+ elm_exit();
+ }
+ clist_d->popup = phone_progressbar_popup(clist_d->win, p_info,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_IMPORTING_SD_CONTACTS));
+}
+
+static void list_message_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int list_op;
+ ct_list_data *clist_d = (ct_list_data *) data;
+
+ p_retm_if(NULL == clist_d, "clist_d is NULL");
+ list_menu_hide_cb(clist_d, NULL, NULL);
+
+ p_retm_if(NULL == evas_object_data_get(clist_d->navi, "cgroup_d"),
+ "evas_object_data_get() return NULL");
+
+ if (-1 == clist_d->base_grp)
+ list_op = CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID;
+ else if (clist_d->base_grp)
+ list_op = CT_GET_LIST_PERSON_HAD_NUMBER_OF_GROUP_ID;
+ else
+ list_op = CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OF_ADDRBOOK_ID;
+
+ ctui_create_list_select_view(clist_d->navi, phone_group_message_result_cb,
+ evas_object_data_get(clist_d->navi, "cgroup_d"), list_op,
+ clist_d->base_ab, clist_d->base_grp, 0);
+}
+
+static void list_email_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int list_op;
+ ct_list_data *clist_d = (ct_list_data *) data;
+
+ p_retm_if(NULL == clist_d, "clist_d is NULL");
+ list_menu_hide_cb(clist_d, NULL, NULL);
+
+ p_retm_if(NULL == evas_object_data_get(clist_d->navi, "cgroup_d"),
+ "evas_object_data_get() return NULL");
+
+ if (-1 == clist_d->base_grp)
+ list_op = CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID;
+ else if (clist_d->base_grp)
+ list_op = CT_GET_LIST_PERSON_HAD_EMAIL_OF_GROUP_ID;
+ else
+ list_op = CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_EMAIL_OF_ADDRBOOK_ID;
+
+ ctui_create_list_select_view(clist_d->navi, phone_group_email_result_cb,
+ evas_object_data_get(clist_d->navi, "cgroup_d"), list_op,
+ clist_d->base_ab, clist_d->base_grp, 0);
+}
+
+static Evas_Object* ct_send_message_email_create_popup(ct_list_data* clist_d)
+{
+ PH_TRACE;
+ Evas_Object* popup = elm_popup_add(clist_d->navi);
+ p_retvm_if(NULL == popup, NULL, "popup add failed");
+ elm_object_part_text_set(popup, TITLE_TEXT, T_(PH_GET_TEXT_BASIC, PHTEXT_SEND_MESSAGE_EMAIL));
+
+ if(!phone_popup_add_button(popup, S_(PH_SYS_SK_CANCEL), NULL, clist_d))
+ {
+ evas_object_del(popup);
+ return NULL;
+ }
+
+ elm_object_style_set(popup, "content_no_vhpad");
+ evas_object_show(popup);
+ return popup;
+}
+
+static char* ct_send_message_email_gen_it_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == data, NULL, "data is null");
+ return strdup((char*)data);
+}
+
+static void ct_send_message_email_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ct_list_data* clist_d = (ct_list_data*)data;
+
+ list_popup_hide_cb(data, NULL, NULL);
+ list_menu_hide_cb(data, NULL, NULL);
+
+ clist_d->popup = ct_send_message_email_create_popup(clist_d);
+ p_retm_if(NULL == clist_d->popup, "popup is null");
+
+ Evas_Object* genlist = elm_genlist_add(clist_d->popup);
+ if(NULL == genlist)
+ {
+ ERR("genlist is null");
+ list_popup_hide_cb(data, NULL, NULL);
+ return;
+ }
+ elm_object_content_set(clist_d->popup, genlist);
+
+ Elm_Genlist_Item_Class* itc = elm_genlist_item_class_new();
+ itc->item_style = "1text/popup";
+ itc->func.text_get = ct_send_message_email_gen_it_text_get;
+
+ Elm_Object_Item* item = elm_genlist_item_append(genlist, itc, T_(PH_GET_TEXT_BASIC, PHTEXT_SEND_MESSAGE),
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_object_item_disabled_set(item, EINA_TRUE);
+
+ item = elm_genlist_item_append(genlist, itc, T_(PH_GET_TEXT_BASIC, PHTEXT_SEND_EMAIL),
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_object_item_disabled_set(item, EINA_TRUE);
+
+ elm_genlist_item_class_free(itc);
+}
+
+static void ctui_list_more_btn_clicked_cb(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_list_data* clist_d = static_cast<ct_list_data*>(data);
+
+ // hide sweeped view
+ Elm_Object_Item *lastItem = clist_d->last_sweep_item;
+
+ if (NULL != lastItem)
+ {
+ elm_genlist_item_decorate_mode_set(lastItem, "slide", EINA_FALSE);
+ elm_genlist_item_select_mode_set(lastItem, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ clist_d->last_sweep_item = NULL;
+ }
+
+ list_popup_hide_cb(data, NULL, NULL);
+ list_menu_hide_cb(data, NULL, NULL);
+
+ clist_d->m_Menu = elm_ctxpopup_add(clist_d->navi);
+ if (clist_d->m_Menu)
+ {
+ int rotate = (int) evas_object_data_get(clist_d->navi, "phone_rotate");
+ if (0 == rotate || 180 == rotate)
+ elm_ctxpopup_direction_priority_set(clist_d->m_Menu, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_LEFT, ELM_CTXPOPUP_DIRECTION_RIGHT);
+ evas_object_smart_callback_add(clist_d->popup, "dismissed", list_menu_hide_cb, clist_d);
+
+ if (clist_d->list)
+ {
+ if (CONTACTS_ADDRESS_BOOK_MODE_READONLY != clist_d->base_ab_mode)
+ {
+ elm_ctxpopup_item_append(clist_d->m_Menu, S_(PH_SYS_SK_DELETE), NULL, ct_list_edit_cb, clist_d);
+
+ Elm_Object_Item* menu_item = NULL;
+
+ menu_item = elm_ctxpopup_item_append(clist_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_IMPORT_EXPORT), NULL, NULL, clist_d);
+ elm_object_item_disabled_set(menu_item, EINA_TRUE);
+ menu_item = elm_ctxpopup_item_append(clist_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_ACCOUNTS), NULL, NULL, clist_d);
+ elm_object_item_disabled_set(menu_item, EINA_TRUE);
+ elm_ctxpopup_item_append(clist_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_SEND_MESSAGE_EMAIL), NULL, ct_send_message_email_cb, clist_d);
+ menu_item = elm_ctxpopup_item_append(clist_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_CONTACTS_MENU_CONTACTS_TO_DISPLAY), NULL, list_view_button_cb, clist_d);
+
+ if (NULL != menu_item)
+ {
+ unsigned int acc_cnt = 1;
+ contacts_list_h list = NULL;
+ const unsigned int MIN_NUMBER_OF_ADDRESSBOOKS = 2;
+ int err = CONTACTS_ERROR_NONE;
+ err = contacts_db_get_all_records(_contacts_address_book._uri, 0, 0, &list);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_db_get_all_records() Failed(%d)", err);
+ err = contacts_list_get_count(list, &acc_cnt);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_list_get_count() Failed(%d)", err);
+ err = contacts_list_destroy(list, true);
+ if (CONTACTS_ERROR_NONE != err)
+ ERR("contacts_list_destroy() Failed(%d)", err);
+
+ if (acc_cnt < MIN_NUMBER_OF_ADDRESSBOOKS)
+ {
+ elm_object_item_disabled_set(menu_item, EINA_TRUE);
+ }
+ }
+ }
+
+ elm_ctxpopup_item_append(clist_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_CONTACTS_MENU_SETTINGS), NULL, ct_list_settings_cb, clist_d);
+ }
+
+ int x, y, w, h;
+ evas_object_geometry_get(clist_d->navi, &x, &y, &w, &h);
+ evas_object_move(clist_d->m_Menu, 0, y + h);
+ evas_object_show(clist_d->m_Menu);
+ }
+ else
+ {
+ ERR("ctui_list_more_btn_clicked_cb failed: %s", "elm_ctxpopup_add() return NULL");
+ }
+ }
+}
+
+static void list_more_button_cb(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_list_data* clist_d = static_cast<ct_list_data*>(data);
+
+ list_popup_hide_cb(data, NULL, NULL);
+ list_menu_hide_cb(data, NULL, NULL);
+
+ clist_d->m_Menu = elm_ctxpopup_add(clist_d->navi);
+ if (NULL != clist_d->m_Menu)
+ {
+ int rotate = (int) evas_object_data_get(clist_d->navi, "phone_rotate");
+ if (0 == rotate || 180 == rotate)
+ elm_ctxpopup_direction_priority_set(clist_d->m_Menu, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_LEFT, ELM_CTXPOPUP_DIRECTION_RIGHT);
+
+ evas_object_smart_callback_add(clist_d->m_Menu, "dismissed", list_menu_hide_cb, clist_d);
+
+ elm_ctxpopup_item_append(clist_d->m_Menu, S_(PH_SYS_BODY_MESSAGE), NULL, list_message_btn_cb, clist_d);
+ elm_ctxpopup_item_append(clist_d->m_Menu, T_(CT_GET_TEXT_BASIC ,CTTEXT_EMAIL), NULL, list_email_btn_cb, clist_d);
+ elm_ctxpopup_item_append(clist_d->m_Menu, S_(PH_SYS_BODY_REMOVE), NULL, list_remove_member_button_cb, clist_d);
+
+ int x, y, w, h;
+ evas_object_geometry_get(clist_d->navi, &x, &y, &w, &h);
+ evas_object_move(clist_d->m_Menu, 0, y + h);
+ evas_object_show(clist_d->m_Menu);
+ }
+ else
+ {
+ ERR("list_more_button_cb failed: %s", "elm_ctxpopup_add() return NULL");
+ }
+ }
+}
+
+static void list_navi_item_update(void *data)
+{
+ PH_TRACE;
+ Evas_Object *new_button;
+ ct_list_data *clist_d = (ct_list_data *) data;
+
+ p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL");
+ new_button = (Evas_Object *) evas_object_data_get(clist_d->navi, "new_button");
+
+ if (!clist_d->ug)
+ {
+ if (new_button)
+ {
+ if (CONTACTS_ADDRESS_BOOK_MODE_READONLY == clist_d->base_ab_mode)
+ elm_object_disabled_set(new_button, EINA_TRUE);
+ else
+ elm_object_disabled_set(new_button, EINA_FALSE);
+ }
+ if (NULL == clist_d->list)
+ {
+ clist_d->menu_cb = NULL;
+ }
+ else
+ {
+ clist_d->menu_cb = ctui_list_more_btn_clicked_cb;
+ }
+ }
+}
+
+static void __list_ug_destroy_me_cb(void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+
+ if (clist_d->service_operation)
+ phone_service_reply_simple(clist_d->service_operation,
+ SERVICE_RESULT_FAILED);
+
+ ug_destroy_me(clist_d->ug);
+}
+
+static Evas_Object *list_create_add_contact_button(Evas_Object *pLayout_search, ct_list_data &clist_d,
+ Evas_Smart_Cb click_cb_func)
+{
+ PH_TRACE;
+ Evas_Object *pAddBtn = elm_object_part_content_get(clist_d.searchbar, "button_add");
+ if (!pAddBtn)
+ {
+ pAddBtn = elm_button_add(pLayout_search);
+ if (pAddBtn)
+ {
+ elm_object_part_content_set(pLayout_search, "button_add", pAddBtn);
+ elm_object_style_set(pAddBtn, "plus");
+ evas_object_size_hint_weight_set(pAddBtn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_smart_callback_add(pAddBtn, "clicked", click_cb_func, &clist_d);
+ evas_object_data_set(clist_d.searchbar, "add_button", pAddBtn);
+ evas_object_show(pAddBtn);
+
+ Evas_Object *icon = elm_icon_add(pLayout_search);
+ elm_icon_standard_set(icon, PH_IMG_ICON_ADD);
+ elm_object_part_content_set(pAddBtn, "icon", icon);
+ }
+ }
+ return pAddBtn;
+}
+
+static void list_make_navi(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == clist_d, "clist_d is NULL");
+
+ if (NULL == clist_d->list_navi_item_update_fn)
+ clist_d->list_navi_item_update_fn = list_navi_item_update;
+
+ phone_navi_item_reset(clist_d->navi_item, clist_d);
+ // FIXME : should be rearragned accoring to new UX
+ if (CT_GET_LIST_VCARD == clist_d->list_op)
+ {
+ list_create_add_contact_button(clist_d->searchbar, *clist_d, list_add_all_contacts_button_cb);
+ }
+ else if (clist_d->navi_item != elm_naviframe_bottom_item_get(clist_d->navi))
+ { // from group view
+ if (!clist_d->ug)
+ {
+ if (clist_d->base_grp)
+ {
+ Evas_Object *add_button = NULL;
+ add_button = list_create_add_contact_button(clist_d->searchbar, *clist_d, list_add_button_cb);
+
+ if (CONTACTS_ADDRESS_BOOK_MODE_READONLY == clist_d->base_ab_mode)
+ elm_object_disabled_set(add_button, EINA_TRUE);
+
+ if (clist_d->list)
+ {
+ clist_d->menu_cb = list_more_button_cb;
+ }
+ }
+ }
+ }
+ else if (!clist_d->ug ||
+ !(PH_UG_REQUEST_LAUNCH_VOICECALL == clist_d->ug_request ||
+ CT_UG_REQUEST_LIST_WITH_BACK >= clist_d->ug_request ||
+ CT_UG_REQUEST_SELECT_CONTACT_ADD_TO_HOME == clist_d->ug_request ||
+ CT_UG_REQUEST_SELECT_GROUP_ADD_TO_HOME == clist_d->ug_request)
+ )
+ {
+
+ Evas_Object *create_button __attribute__ ((unused)) = NULL;
+ if (!clist_d->ug)
+ {
+ if (clist_d->list)
+ {
+ clist_d->menu_cb = ctui_list_more_btn_clicked_cb;
+ }
+ }
+ create_button = list_create_add_contact_button(clist_d->searchbar, *clist_d, ctui_list_new_btn_clicked_cb);
+ if (NULL == clist_d->ug
+ || clist_d->ug_request < CT_UG_REQUEST_SELECT_PERSON
+ || (CT_UG_REQUEST_UPDATE_CONTACT <= clist_d->ug_request
+ && clist_d->ug_request <= CT_UG_REQUEST_UPDATE_WITH_WEB)
+ || (CT_UG_REQUEST_SAVE_IMG <= clist_d->ug_request
+ && clist_d->ug_request <= CT_UG_REQUEST_SAVE_RINGTONE))
+ {
+ if (clist_d->ug_request)
+ {
+ clist_d->back_cb = __list_ug_destroy_me_cb;
+ }
+ }
+ else
+ {
+ clist_d->back_cb = __list_ug_destroy_me_cb;
+ }
+ }
+}
+
+static void list_call_btn_pressed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ if (NULL != data)
+ {
+ Evas_Object *icon = NULL;
+ icon = static_cast<Evas_Object *>(elm_object_part_content_get((const Evas_Object *) data, "icon"));
+ elm_image_file_set(icon, PH_IMG_ICON_CALL_PRESS, NULL);
+ }
+}
+
+static void list_call_btn_unpressed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ assert(obj);
+ p_retm_if(NULL == data, "data is NULL");
+ if (NULL != data && NULL != obj)
+ {
+ Evas_Object *icon = NULL;
+ icon = static_cast<Evas_Object *>(elm_object_part_content_get((const Evas_Object *) data, "icon"));
+ elm_image_file_set(icon, PH_IMG_ICON_CALL, NULL);
+
+ ct_list_data *clist_d = static_cast<ct_list_data*>(evas_object_data_get(obj, "clist_d"));
+ elm_genlist_item_select_mode_set(clist_d->last_sweep_item, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+}
+
+static void list_msg_btn_pressed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ p_retm_if(NULL == data, "data is NULL");
+ if (NULL != data)
+ {
+ Evas_Object *icon = NULL;
+ icon = static_cast<Evas_Object *>(elm_object_part_content_get((const Evas_Object *) data, "icon"));
+ elm_image_file_set(icon, PH_IMG_ICON_MESSAGE_PRESS, NULL);
+ }
+}
+
+static void list_msg_btn_unpressed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ assert(obj);
+ p_retm_if(NULL == data, "data is NULL");
+ if (NULL != data && NULL != obj)
+ {
+ Evas_Object *icon = NULL;
+ icon = static_cast<Evas_Object *>(elm_object_part_content_get((const Evas_Object *) data, "icon"));
+ elm_image_file_set(icon, PH_IMG_ICON_MESSAGE, NULL);
+
+ ct_list_data *clist_d = static_cast<ct_list_data*>(evas_object_data_get(obj, "clist_d"));
+ elm_genlist_item_select_mode_set(clist_d->last_sweep_item, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+}
+
+static Evas_Object* list_gl_icon_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ assert(data);
+ assert(obj);
+ assert(part);
+
+
+ if (NULL != data && NULL != obj && NULL != part)
+ {
+ ct_person_list *person_info = static_cast<ct_person_list*>(data);
+ p_retvm_if(NULL == person_info, NULL, "person_info is NULL");
+
+ ct_list_data *clist_d = static_cast<ct_list_data*>(evas_object_data_get(obj, "clist_d"));
+
+ if (strcmp(part, "elm.slide.swallow.1") == 0)
+ {
+ Evas_Object *btn;
+
+ if (NULL == person_info->number || '\0' == *person_info->number)
+ {
+ btn = phone_create_list_sweep_btn(obj, PH_IMG_ICON_DELETE);
+ p_retvm_if(NULL == btn, NULL, "phone_create_list_sweep_btn() return NULL");
+
+ elm_object_style_set(btn, "sweep/delete");
+ evas_object_data_set(btn, "clist_d", clist_d);
+ evas_object_propagate_events_set(btn, EINA_FALSE);
+ evas_object_smart_callback_add(btn, "clicked", ct_list_sweep_del_cb, (void *) person_info->id);
+
+ if (0 == person_info->id)
+ elm_object_disabled_set(btn, EINA_TRUE);
+ }
+ else
+ {
+ btn = phone_create_list_sweep_btn(obj, PH_IMG_ICON_CALL);
+ p_retvm_if(NULL == btn, NULL, "phone_create_list_sweep_btn() return NULL");
+ evas_object_data_set(btn, "clist_d", clist_d);
+ evas_object_smart_callback_add(btn, "clicked", ct_list_call, person_info);
+ evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_DOWN, list_call_btn_pressed_cb, btn);
+ evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_UP, list_call_btn_unpressed_cb, btn);
+ }
+ return btn;
+ }
+ else if (strcmp(part, "elm.slide.swallow.2") == 0)
+ {
+ Evas_Object *btn;
+
+ if (NULL == person_info->number || '\0' == *person_info->number)
+ return NULL;
+
+ btn = phone_create_list_sweep_btn(obj, PH_IMG_ICON_MESSAGE);
+ p_retvm_if(NULL == btn, NULL, "phone_create_list_sweep_btn() return NULL");
+
+ evas_object_data_set(btn, "clist_d", clist_d);
+ evas_object_smart_callback_add(btn, "clicked", ct_list_msg, person_info);
+ evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_DOWN, list_msg_btn_pressed_cb, btn);
+ evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_UP, list_msg_btn_unpressed_cb, btn);
+
+ return btn;
+ }
+ else if (strcmp(part, "elm.slide.swallow.3") == 0)
+ {
+ Evas_Object *btn;
+ btn = phone_create_list_sweep_btn(obj, PH_IMG_ICON_DELETE);
+ p_retvm_if(NULL == btn, NULL, "phone_create_list_sweep_btn() return NULL");
+
+ elm_object_style_set(btn, "sweep/delete");
+ evas_object_data_set(btn, "clist_d", clist_d);
+ evas_object_smart_callback_add(btn, "clicked", ct_list_sweep_del_cb, (void *) person_info->id);
+
+ if (0 == person_info->id)
+ elm_object_disabled_set(btn, EINA_TRUE);
+
+ return btn;
+ }
+ else if (0 == strcmp(part, "elm.icon"))
+ {
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ Evas_Object *icon;
+
+ if (!person_info->img_loaded)
+ {
+ if (person_info->id)
+ {
+ err = contacts_db_get_record(_contacts_person._uri, person_info->id, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() Failed(%d)", err);
+
+ err = contacts_record_get_str(record, _contacts_person.image_thumbnail_path, &(person_info->img_path));
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_get_str() Failed(%d)", err);
+
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_destroy() Failed(%d)", err);
+ }
+ person_info->img_loaded = true;
+ }
+
+ icon = elm_icon_add(obj);
+ if (icon)
+ {
+ elm_image_prescale_set(icon, CT_LIST_ICON_SIZE);
+ if (NULL != person_info->img_path)
+ {
+ elm_image_file_set(icon, person_info->img_path, NULL);
+ }
+ else
+ {
+ elm_image_file_set(icon, IMG_DEFAULT, NULL);
+ }
+
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ evas_object_show(icon);
+ }
+ return icon;
+ }
+ else if (0 == strcmp(part, "elm.edit.icon.1"))
+ {
+ Evas_Object *check;
+ check = ct_list_edit_add_check(obj, &person_info->checked, clist_d);
+ p_retvm_if(NULL == check, NULL, "ct_list_edit_add_check() return NULL");
+ evas_object_data_set(check, "person_info", person_info);
+ return check;
+ }
+ }
+
+ return NULL;
+}
+
+API void list_create_itcs(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ assert(clist_d);
+ if (NULL != clist_d)
+ {
+ clist_d->itcs[CT_LIST_ITEM_NO_NUMBER].item_style = "1text.1icon.2.tb";
+ clist_d->itcs[CT_LIST_ITEM_NO_NUMBER].decorate_item_style = "mode/slide3";
+ clist_d->itcs[CT_LIST_ITEM_NO_NUMBER].func.text_get = ct_list_gl_label_get;
+ clist_d->itcs[CT_LIST_ITEM_NO_NUMBER].func.content_get = list_gl_icon_get;
+ clist_d->itcs[CT_LIST_ITEM_NO_NUMBER].decorate_all_item_style = "edit_default";
+
+ clist_d->itcs[CT_LIST_ITEM].item_style = "1text.1icon.2.tb";
+ clist_d->itcs[CT_LIST_ITEM].decorate_item_style = "mode/slide";
+ clist_d->itcs[CT_LIST_ITEM].func.text_get = ct_list_gl_label_get;
+ clist_d->itcs[CT_LIST_ITEM].func.content_get = list_gl_icon_get;
+ clist_d->itcs[CT_LIST_ITEM].decorate_all_item_style = "edit_default";
+
+ clist_d->itcs[CT_LIST_ITEM_SEARCH_NO_NUMBER].item_style = "1text.1icon.2.tb";
+ clist_d->itcs[CT_LIST_ITEM_SEARCH_NO_NUMBER].decorate_item_style = "mode/slide3";
+ clist_d->itcs[CT_LIST_ITEM_SEARCH_NO_NUMBER].func.text_get = ct_list_gl_label_get;
+ clist_d->itcs[CT_LIST_ITEM_SEARCH_NO_NUMBER].func.content_get = list_gl_icon_get;
+ clist_d->itcs[CT_LIST_ITEM_SEARCH_NO_NUMBER].decorate_all_item_style = "edit_default";
+
+ clist_d->itcs[CT_LIST_ITEM_SEARCH].item_style = "2text.1icon.4.tb";
+ clist_d->itcs[CT_LIST_ITEM_SEARCH].decorate_item_style = "mode/slide";
+ clist_d->itcs[CT_LIST_ITEM_SEARCH].func.text_get = ct_list_gl_label_get;
+ clist_d->itcs[CT_LIST_ITEM_SEARCH].func.content_get = list_gl_icon_get;
+ clist_d->itcs[CT_LIST_ITEM_SEARCH].decorate_all_item_style = "edit_default";
+
+ clist_d->itcs[CT_LIST_ITEM_COUNT].item_style = "1text.1icon.2.tb";
+ clist_d->itcs[CT_LIST_ITEM_COUNT].func.text_get = ct_list_count_gl_label_get;
+ }
+}
+
+API void ctui_list_navi_set(int mode, ct_list_data *clist_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == clist_d, "clist_d is NULL");
+ Evas_Object *delete_item = (Evas_Object *) evas_object_data_get(clist_d->navi, "delete_button");
+ if(delete_item)
+ {
+ evas_object_del(delete_item);
+ }
+ evas_object_data_del(clist_d->navi, "new_button");
+ evas_object_data_del(clist_d->navi, "button_add");
+ phone_navi_item_reset(clist_d->navi_item, clist_d);
+
+ switch (mode)
+ {
+ case CT_LIST_MODE_DEFAULT:
+ list_make_navi(clist_d);
+ break;
+ case CT_LIST_MODE_EDIT:
+ ct_list_edit_make_edit_navi(clist_d);
+ if (CT_LIST_MULTI_ADD_MEMBER != clist_d->view_id)
+ ctui_navi_btn_disabled_set(clist_d->navi, EINA_TRUE);
+ ctui_list_update_selection_info(clist_d);
+ break;
+ default:
+ return;
+ }
+}
+
+Evas_Object* ct_list_create_contact_view(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ list_create_itcs(clist_d);
+ clist_d->gl_sel = ct_list_ug_gl_sel;
+ clist_d->gl_sel_data = clist_d;
+ clist_d->edit_sel_update = ctui_list_update_selection_info;
+ return ct_list_create_contact_layout(clist_d);
+}
+
+// Group > Group detail view : In case of UG, it can be check view
+API Evas_Object* ctui_list_create_contact_view_with_info(
+ ph_view_info *view_info, int list_op, ct_group_list *info)
+{
+ PH_TRACE;
+ ct_list_data *clist_d;
+ const char *ab_name = NULL;
+ char temp[PH_TEXT_MAX_LEN];
+
+ p_retv_if(CT_GET_LIST_VCARD == list_op, NULL);
+ clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data));
+ p_retvm_if(!clist_d, NULL, "clist_d is NULL, Not enough memory");
+
+ clist_d->win = view_info->win;
+ clist_d->navi = view_info->navi;
+ clist_d->ug = view_info->ug;
+ clist_d->ug_data = view_info->ug_data;
+ clist_d->ug_request = view_info->ug_request;
+ clist_d->base_ab = -1;
+
+ switch (clist_d->ug_request)
+ {
+ //case PH_UG_REQUEST_SELECT_NUMBER:
+ //case PH_UG_REQUEST_CHECK_FOR_NUMBER:
+ case CT_UG_REQUEST_SELECT_NUMBER:
+ case CT_UG_REQUEST_CHECK_FOR_NUMBER:
+ clist_d->list_op = list_op + 1;
+ break;
+ //case PH_UG_REQUEST_SELECT_EMAIL:
+ //case PH_UG_REQUEST_CHECK_FOR_EMAIL:
+ case CT_UG_REQUEST_SELECT_EMAIL:
+ case CT_UG_REQUEST_CHECK_FOR_EMAIL:
+ clist_d->list_op = list_op + 2;
+ break;
+ case CT_UG_REQUEST_SELECT_NUMBER_OR_EMAIL:
+ case CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL:
+ clist_d->list_op = list_op + 3;
+ break;
+ default:
+ clist_d->list_op = list_op;
+ break;
+ }
+
+ clist_d->base_ab = info->id_ab;
+ clist_d->base_grp = info->id_grp;
+ clist_d->base_ab_mode = info->mode;
+ ct_list_get_contacts(clist_d, &clist_d->list);
+ clist_d->base_layout = ct_list_create_contact_view(clist_d);
+ clist_d->title = SAFE_STRDUP(info->name);
+ clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, clist_d->title,
+ NULL, NULL, clist_d->base_layout, NULL);
+ if (0 < clist_d->base_ab)
+ {
+ temp[0] = '\0';
+ ctui_get_addressbook_name(clist_d->base_ab, temp, sizeof(temp));
+ ab_name = temp;
+ }
+ else
+ ab_name = T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE);
+
+ elm_object_item_part_text_set(clist_d->navi_item, "subtitle", ab_name);
+ clist_d->sub_title = strdup(ab_name);
+
+ switch (clist_d->ug_request)
+ {
+ case CT_UG_REQUEST_CHECK:
+ case CT_UG_REQUEST_CHECK_FOR_NUMBER:
+ case CT_UG_REQUEST_CHECK_FOR_EMAIL:
+ case CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL:
+ ctui_list_edit_mode_start(clist_d);
+ break;
+ default:
+ ctui_list_navi_set(CT_LIST_MODE_DEFAULT, clist_d);
+ break;
+ }
+ return clist_d->navi;
+}
+
+API void ctui_list_set_search_text(ct_list_data *clist_d, const char *text)
+{
+ PH_TRACE;
+ p_retm_if(!clist_d, "clist_d is NULL");
+ if (clist_d->searchbar)
+ {
+ Evas_Object *en;
+ en = elm_object_part_content_get(clist_d->searchbar,
+ "elm.swallow.content");
+ elm_entry_entry_set(en, text);
+ }
+}
diff --git a/lib/list/ct-list-contact-view.h b/lib/list/ct-list-contact-view.h
new file mode 100755
index 0000000..27b2421
--- /dev/null
+++ b/lib/list/ct-list-contact-view.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Module responsible for creating contacts-list view and handling efl-callbacks relevant to it.
+ */
+
+#ifndef __CONTACTS_LIST_CONTACT_VIEW_H__
+#define __CONTACTS_LIST_CONTACT_VIEW_H__
+
+/**
+ * Initialises layout for contact--list view based on specified data-structure.
+ * @param clist_d data-structure the contact-list will be based on.
+ * @return layout of contact-list.
+ * */
+Evas_Object* ct_list_create_contact_view(ct_list_data *clist_d);
+
+#endif //__CONTACTS_LIST_CONTACT_VIEW_H__
diff --git a/lib/list/ct-list-edit-view.cpp b/lib/list/ct-list-edit-view.cpp
new file mode 100755
index 0000000..69807a3
--- /dev/null
+++ b/lib/list/ct-list-edit-view.cpp
@@ -0,0 +1,1102 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <ui-gadget-module.h>
+#include <app.h>
+#include <fcntl.h>
+
+#include "phone.h"
+#include "phone-common.h"
+#include "ct-list.h"
+#include "ct-list-utils.h"
+#include "ct-list-view-ug.h"
+#include "ct-list-contact-view.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#define TIMER_DURATION 0.2
+#define FOUND_BY_NUMBER 1
+#define FOUND_BY_EMAIL 2
+
+static void list_edit_del_cb(void *data, Evas_Object *obj, void *event_info);
+ct_person_list *find_info_in_list_by_id(Eina_List *check_list, int person_id);
+ct_person_list *copy_contact_info(ct_person_list *person_info);
+
+Eina_List* update_list_person_check_info(Eina_List *check_list,ct_person_list * person_info)
+{
+ PH_TRACE;
+
+ ct_person_list * person_copy_info = copy_contact_info(person_info);
+
+ if (person_copy_info)
+ {
+ if (EINA_TRUE == person_copy_info->checked)
+ {
+ check_list = eina_list_append(check_list,(void *) person_copy_info);
+ }
+ else
+ {
+ if (check_list)
+ {
+ ct_person_list * person_info_list = find_info_in_list_by_id(check_list, person_copy_info->id);
+ if (person_info_list)
+ {
+ check_list = eina_list_remove(check_list,(void *) person_info_list);
+ free(person_info_list);
+ free(person_copy_info);
+ }
+ }
+ }
+ }
+ return check_list;
+}
+
+ct_person_list *copy_contact_info(ct_person_list *person_info)
+{
+ PH_TRACE;
+
+ ct_person_list *p_info = NULL;
+ if (person_info)
+ {
+ p_info = (ct_person_list *) calloc(1, sizeof(ct_person_list));
+ p_info->checked = person_info->checked;
+ p_info->id_ret = person_info->id_ret;
+ p_info->id_ret_type = person_info->id_ret_type;
+ p_info->id = person_info->id;
+ }
+ return p_info;
+}
+
+static inline void list_edit_items_checked_set(ct_list_data *clist_d,
+ Eina_Bool checked)
+{
+ PH_TRACE;
+ Eina_List *l;
+ void *v_person_info = NULL;
+
+ EINA_LIST_FOREACH(clist_d->list, l, v_person_info)
+ {
+ ct_person_list *person_info = (ct_person_list *) v_person_info;
+ if (NULL == person_info)
+ {
+ ERR("elm_object_item_data_get() return NULL");
+ continue;
+ }
+ person_info->checked = checked;
+ clist_d->list_check_info = update_list_person_check_info(clist_d->list_check_info, person_info);
+ }
+}
+
+static inline void list_edit_all_items_checked_set(Eina_List *list,
+ Eina_Bool checked)
+{
+ PH_TRACE;
+ Eina_List *l;
+ void *v_person_info;
+
+ EINA_LIST_FOREACH(list, l, v_person_info)
+ {
+ ct_person_list *person_info = (ct_person_list *) v_person_info;
+ if (NULL == person_info)
+ {
+ ERR("elm_object_item_data_get() return NULL");
+ continue;
+ }
+ person_info->checked = checked;
+ }
+}
+
+void ct_list_edit_mode_end(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ Evas_Object *en;
+ char buf[PH_TEXT_MAX_LEN + 1];
+
+ clist_d->list_mode = CT_LIST_MODE_DEFAULT;
+ ct_list_clear_pdata(clist_d);
+
+ if (clist_d->select_all_layout)
+ {
+ elm_box_unpack(clist_d->box, clist_d->select_all_layout);
+ evas_object_del(clist_d->select_all_layout);
+ clist_d->select_all_layout = NULL;
+ }
+ clist_d->cnt_checked = 0;
+ list_edit_all_items_checked_set(clist_d->list, EINA_FALSE);
+ if (clist_d->list_check_info)
+ {
+ ctui_list_free_contacts(clist_d->list_check_info);
+ clist_d->list_check_info = NULL;
+ }
+
+ if (NULL == clist_d->count_item && clist_d->cnt_list_total
+ && !(clist_d->search_str && *clist_d->search_str))
+ {
+ clist_d->count_item = elm_genlist_item_append(clist_d->genlist,
+ &clist_d->itcs[CT_LIST_ITEM_COUNT],
+ (void *) clist_d->cnt_list_total, NULL, ELM_GENLIST_ITEM_NONE,
+ NULL, NULL);
+ elm_object_item_disabled_set(clist_d->count_item, EINA_TRUE);
+ }
+
+ if (clist_d->genlist)
+ elm_object_focus_set(clist_d->genlist, EINA_TRUE);
+
+ if (clist_d->search_str && *clist_d->search_str)
+ ctui_list_searchbar_cancel_cb(clist_d->searchbar, NULL, NULL);
+
+ elm_genlist_decorate_mode_set(clist_d->genlist, EINA_FALSE);
+ ctui_list_navi_set(CT_LIST_MODE_DEFAULT, clist_d);
+
+ if (CT_LIST_IN_MULTI_TAB != clist_d->tab_mode
+ && CT_UG_REQUEST_SELECT_PERSON <= clist_d->ug_request)
+ {
+ snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title,
+ clist_d->cnt_list_total);
+ elm_object_item_text_set(clist_d->navi_item, buf);
+ }
+
+ en = elm_object_part_content_get(clist_d->searchbar, "elm.swallow.content");
+ elm_entry_entry_set(en, NULL);
+
+ phone_hide_notify(clist_d->base_layout);
+
+ phone_set_searchbar_add_button_visible(*clist_d, true);
+}
+
+static void list_edit_cancel_cb(void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ if(clist_d)
+ {
+ ct_list_edit_mode_end(clist_d);
+ }
+}
+
+static void list_edit_delete_persons(ct_list_data *clist_d);
+
+static void list_edit_remove_record_cb(int err, void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ ph_progress_info *p_info = NULL;
+
+ p_retm_if(NULL == clist_d, "Invalid parameter(clist_d is NULL)");
+ p_info = clist_d->p_info;
+ p_retm_if(NULL == p_info, "Invalid parameter(p_info is NULL)");
+
+ if (p_info->update_ids)
+ {
+ free(p_info->update_ids);
+ p_info->update_ids = NULL;
+ }
+
+ if (p_info->update_list)
+ {
+ contacts_list_destroy(p_info->update_list, true);
+ p_info->update_list = NULL;
+ }
+
+ if (CONTACTS_ERROR_NONE != err || p_info->alive == false)
+ {
+ if (p_info->popup)
+ {
+ evas_object_del(p_info->popup);
+ p_info->popup = NULL;
+ }
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+ free(p_info);
+ clist_d->p_info = NULL;
+ clist_d->updating = false;
+ ct_list_edit_mode_end(clist_d);
+ return;
+ }
+ else if (p_info->cnt == p_info->cnt_checked_total)
+ {
+ if (p_info->popup)
+ {
+ evas_object_del(p_info->popup);
+ p_info->popup = NULL;
+ }
+ if (clist_d->base_grp)
+ phone_show_tickernoti(S_(PH_SYS_POP_REMOVED));
+ else
+ phone_show_tickernoti(S_(PH_SYS_POP_DELETED));
+ free(p_info);
+ clist_d->p_info = NULL;
+ clist_d->updating = false;
+ ct_list_edit_mode_end(clist_d);
+ return;
+ }
+ else
+ {
+ list_edit_delete_persons(clist_d);
+ }
+}
+
+static void list_edit_remove_group_relation(int group_id, int person_id,
+ contacts_list_h list_result)
+{
+ PH_TRACE;
+ contacts_list_h list = NULL;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ p_retm_if(group_id <= 0, "Invalid parameter(group_id is %d)", group_id);
+ p_retm_if(person_id <= 0, "Invalid parameter(person_id is %d)", person_id);
+ p_retm_if(NULL == list_result, "Invalid parameter(list is NULL)");
+
+ do
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_create(_contacts_contact_grouprel._uri,
+ &query)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_filter_create(
+ _contacts_contact_grouprel._uri, &filter)))
+ break;
+
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_filter_add_int(filter,
+ _contacts_contact_grouprel.group_id,
+ CONTACTS_MATCH_EQUAL, group_id)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_filter_add_operator(filter,
+ CONTACTS_FILTER_OPERATOR_AND)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_filter_add_int(filter,
+ _contacts_contact_grouprel.person_id,
+ CONTACTS_MATCH_EQUAL, person_id)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_filter(query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_db_get_records_with_query(query, 0, 0, &list)))
+ break;
+
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ contacts_record_h record = NULL;
+ int temp = 0;
+ int contact_id = 0;
+ contacts_record_h record_group_relation = NULL;
+ phone_cts_get_int_from_list(list,
+ _contacts_contact_grouprel.contact_id, &contact_id);
+ err = contacts_db_get_record(_contacts_contact._uri, contact_id,
+ &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ while (CONTACTS_ERROR_NONE
+ == (contacts_record_get_child_record_at_p(record,
+ _contacts_contact.group_relation, temp++,
+ &record_group_relation)))
+ {
+ int group_relation_group_id = 0;
+ contacts_record_get_int(record_group_relation,
+ _contacts_group_relation.group_id,
+ &group_relation_group_id);
+ if (group_id == group_relation_group_id)
+ {
+ err = contacts_record_remove_child_record(record,
+ _contacts_contact.group_relation,
+ record_group_relation);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_remove_child_record() Failed(%d)",
+ err);
+ contacts_list_add(list_result, record);
+ break;
+ }
+ }
+ err = contacts_list_next(list);
+ }
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+ contacts_list_destroy(list, true);
+ return;
+ }
+ while (0);
+ ERR("update_group_relation Failed(%d)", err);
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+ contacts_list_destroy(list, true);
+ return;
+}
+
+void list_edit_delete_persons_without_progressbar_cb(int err, void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ p_retm_if(NULL == clist_d, "Invalid parameter(clist_d is NULL)");
+
+ PH_DBG("err = %d", err);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ clist_d->updating = false;
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+ }
+ else if (clist_d->update_delete_list)
+ {
+ contacts_list_destroy(clist_d->update_delete_list, true);
+ clist_d->update_delete_list = NULL;
+ phone_show_tickernoti(S_(PH_SYS_POP_REMOVED));
+ }
+
+ if (clist_d->update_add_list)
+ {
+ contacts_db_update_records_async(clist_d->update_add_list,
+ ct_list_add_contacts_to_group_without_progressbar_cb, clist_d);
+ }
+ else
+ {
+ elm_naviframe_item_pop(clist_d->navi);
+ }
+}
+
+void list_edit_delete_persons_without_progressbar(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL");
+ Eina_List *l = NULL;
+ void *v_person_info = NULL;
+ contacts_list_h list = NULL;
+
+ int err = contacts_list_create(&list);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_list_create() Failed(%d)", err);
+
+ EINA_LIST_FOREACH(clist_d->list_check_info, l, v_person_info)
+ {
+ ct_person_list *person_info = (ct_person_list *) v_person_info;
+ if (person_info)
+ {
+ PH_DBG("person_info->display = %s", person_info->display);
+ list_edit_remove_group_relation(clist_d->base_grp, person_info->id, list);
+ }
+ }
+
+ unsigned int count = 0;
+ contacts_list_get_count(list, &count);
+ if (count)
+ {
+ clist_d->update_delete_list = list;
+ }
+ else
+ {
+ contacts_list_destroy(clist_d->update_delete_list, true);
+ clist_d->update_delete_list = NULL;
+ }
+}
+
+static void list_edit_delete_persons(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ const int LIST_BULK_LENGTH = 50;
+ int count = 0;
+ int *ids = NULL;
+ double value = 0.0;
+ char percent_total[PH_TEXT_MAX_LEN + 1] = { 0, };
+ char percent[PH_TEXT_MAX_LEN + 1] = { 0, };
+ ph_progress_info *p_info = NULL;
+ void *v_person_info = NULL;
+ Eina_List *l = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_list_h list = NULL;
+
+ p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL");
+ p_info = clist_d->p_info;
+ p_retm_if(NULL == p_info, "parameter(p_info) is NULL");
+
+ if (p_info->update_ids)
+ {
+ free(p_info->update_ids);
+ p_info->update_ids = NULL;
+ }
+
+ if (clist_d->base_grp)
+ {
+ err = contacts_list_create(&list);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_create() Failed(%d)", err);
+ }
+ else
+ {
+ if (p_info->cnt_checked_total - p_info->cnt < LIST_BULK_LENGTH)
+ ids = (int *) calloc(1,
+ sizeof(int) * (p_info->cnt_checked_total - p_info->cnt));
+ else
+ ids = (int *) calloc(1, sizeof(int) * LIST_BULK_LENGTH);
+ p_retm_if(NULL == ids, "calloc() return NULL");
+ }
+
+ if (p_info->cnt == 0 && p_info->cnt_checked_total > 0)
+ {
+ EINA_LIST_FOREACH(clist_d->list_check_info, l, v_person_info)
+ {
+ ct_person_list *person_info = (ct_person_list *) v_person_info;
+ if (NULL == person_info)
+ continue;
+ clist_d->list_delete_records = eina_list_append(
+ clist_d->list_delete_records, (void*) person_info->id);
+ }
+ }
+ if(p_info->cnt == 0)
+ {
+ create_no_content_layout(clist_d, clist_d->content_layout);
+ }
+ void *person_id;
+ l = NULL;
+ EINA_LIST_FOREACH(clist_d->list_delete_records, l, person_id)
+ {
+ if (clist_d->base_grp > 0)
+ list_edit_remove_group_relation(clist_d->base_grp, (int) person_id,
+ list);
+ else
+ {
+ if (ids)
+ ids[count] = (int) person_id;
+ }
+
+ clist_d->list_delete_records = eina_list_remove_list(
+ clist_d->list_delete_records, l);
+ count++;
+ p_info->cnt++;
+
+ if (LIST_BULK_LENGTH == count
+ || p_info->cnt == p_info->cnt_checked_total)
+ break;
+ }
+
+ if (clist_d->base_grp)
+ {
+ p_info->update_list = list;
+ err = contacts_db_update_records_async(list, list_edit_remove_record_cb,
+ clist_d);
+ p_retm_if(err != CONTACTS_ERROR_NONE,
+ "contacts_db_update_records_async() fail(%d)", err);
+ }
+ else
+ {
+ p_info->update_ids = ids;
+ err = contacts_db_delete_records_async(_contacts_person._uri, ids,
+ count, list_edit_remove_record_cb, clist_d);
+ p_retm_if(err != CONTACTS_ERROR_NONE,
+ "contacts_db_delete_records_async() fail(%d)", err);
+ }
+
+ value = (double) p_info->cnt / (double) p_info->cnt_checked_total;
+ elm_progressbar_value_set(p_info->progressbar, value);
+ snprintf(percent, sizeof(percent), "%d%%",
+ (int) (100.0 * (double) p_info->cnt
+ / (double) p_info->cnt_checked_total));
+ snprintf(percent_total, sizeof(percent_total), "%d/%d", p_info->cnt,
+ p_info->cnt_checked_total);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext1", percent);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext2", percent_total);
+
+ PH_DBG("list_edit_delete_persons %d", count);
+}
+
+static Eina_Bool __list_edit_delete_start_timer_cb(void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ list_edit_delete_persons(clist_d);
+
+ if (clist_d && clist_d->list_check_info)
+ {
+ ctui_list_free_contacts(clist_d->list_check_info);
+ clist_d->list_check_info = NULL;
+ }
+ return ECORE_CALLBACK_CANCEL;
+}
+
+void list_edit_popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_list_data *pCListD = static_cast<ct_list_data *>(data);
+ if (NULL != pCListD->popup)
+ {
+ evas_object_del(pCListD->popup);
+ pCListD->popup = NULL;
+ }
+ elm_object_tree_focus_allow_set(pCListD->navi, EINA_TRUE);
+ }
+}
+
+void list_edit_menu_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_list_data *pCListD = static_cast<ct_list_data *>(data);
+ if (NULL != pCListD->m_Menu)
+ {
+ evas_object_del(pCListD->m_Menu);
+ pCListD->m_Menu = NULL;
+ }
+ elm_object_tree_focus_allow_set(pCListD->navi, EINA_TRUE);
+ }
+}
+
+void createDeletePopup(void *data)
+{
+ PH_TRACE;
+ if (!data)
+ {
+ return;
+ }
+
+ ct_list_data *pCListD = static_cast<ct_list_data *>(data);
+ char buffer[PH_TEXT_MAX_LEN] = { 0 };
+ snprintf(buffer, sizeof(buffer) / sizeof(buffer[0]), "%s %d %s",
+ T_(PH_GET_TEXT_BASIC,PHTEXT_CONTACTS_POP_DELETE),
+ pCListD->cnt_checked,
+ T_(PH_GET_TEXT_BASIC,PHTEXT_CONTACTS_POP_CONTACTS));
+ Evas_Object *pPopup = elm_popup_add(pCListD->win);
+ if (pPopup)
+ {
+ evas_object_size_hint_weight_set(pPopup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_object_text_set(pPopup, buffer);
+ evas_object_show(pPopup);
+ }
+ pCListD->popup = pPopup;
+ Evas_Object *pDelete = elm_button_add(pPopup);
+ if (pDelete)
+ {
+ elm_object_text_set(pDelete,
+ T_(PH_GET_TEXT_BASIC,PHTEXT_CONTACTS_BUTTON_DELETE));
+ elm_object_part_content_set(pPopup, "button1", pDelete);
+ elm_object_style_set(pDelete, "popup_button/default");
+ evas_object_smart_callback_add(pDelete, "clicked", list_edit_del_cb,
+ pCListD);
+ evas_object_show(pDelete);
+ }
+
+ Evas_Object *pCancel = elm_button_add(pPopup);
+ if (pCancel)
+ {
+ elm_object_text_set(pCancel,
+ T_(PH_GET_TEXT_BASIC,PHTEXT_CONTACTS_BUTTON_CANCEL));
+ elm_object_part_content_set(pPopup, "button2", pCancel);
+ elm_object_style_set(pCancel, "popup_button/default");
+ evas_object_smart_callback_add(pCancel, "clicked",
+ list_edit_popup_hide_cb, pCListD);
+ evas_object_show(pCancel);
+ }
+}
+
+void createContListDeletePopupCB(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ list_edit_popup_hide_cb(data, NULL, NULL);
+
+ ct_list_data *clist_d = static_cast<ct_list_data*>(data);
+ ph_progress_info *p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info));
+ if (NULL != p_info)
+ {
+ clist_d->updating = true;
+ clist_d->p_info = p_info;
+ p_info->cnt_checked_total = clist_d->cnt_checked;
+ p_info->alive = true;
+ p_info->result = TRUE;
+ p_info->popup = phone_progressbar_popup(clist_d->win, p_info,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_DELETING_CONTACTS));
+ p_info->timer = ecore_timer_add(0.5,
+ __list_edit_delete_start_timer_cb, clist_d);
+ }
+ else
+ {
+ ERR("createContListDeletePopupCB() failed: %s",
+ "calloc return NULL");
+ }
+ }
+}
+
+void createContListDeleteConfirmationPopupCB(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ list_edit_popup_hide_cb(data, NULL, NULL);
+
+ ct_list_data *clist_d = static_cast<ct_list_data*>(data);
+ Evas_Object *btn = phone_create_confirm_popup(&clist_d->popup, clist_d->win, S_(PH_SYS_POP_DELETE_Q), createContListDeletePopupCB, data);
+ evas_object_data_set(btn, "clist_d", clist_d);
+ }
+}
+
+static void list_edit_del_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ ph_progress_info *p_info;
+ list_edit_popup_hide_cb(data, NULL, NULL);
+
+ p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info));
+ p_retm_if(NULL == p_info, "calloc return NULL");
+
+ clist_d->updating = true;
+ clist_d->p_info = p_info;
+ p_info->cnt_checked_total = clist_d->cnt_checked;
+ p_info->alive = true;
+ p_info->result = TRUE;
+ p_info->popup = phone_progressbar_popup(clist_d->win, p_info, T_(CT_GET_TEXT_BASIC, CTTEXT_DELETING_CONTACTS));
+ p_info->timer = ecore_timer_add(0.5, __list_edit_delete_start_timer_cb, clist_d);
+}
+
+static void list_edit_check_done(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int cnt_checked;
+ int person_count = 0;
+ int number_count = 0;
+ int email_count = 0;
+ int *result_list_number = NULL;
+ int *result_list_email = NULL;
+ int *result_list_person = NULL;
+ Eina_List *l;
+ void *v_person_info;
+ ct_list_data *clist_d = (ct_list_data *) data;
+
+ // called by setting - import contacts (list - vcard contacts)
+ if (CT_GET_LIST_VCARD == clist_d->list_op)
+ {
+ clist_d->select_result_cb(clist_d->select_result_cb_data, NULL, 0);
+ phone_hide_notify(clist_d->base_layout);
+ return;
+ }
+ cnt_checked = eina_list_count(clist_d->list_check_info);
+
+ PH_DBG("clist_d->ug_request %d count %d", clist_d->ug_request, cnt_checked);
+ if (CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request)
+ result_list_number = (int *) calloc(cnt_checked, sizeof(int));
+ else if (CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request)
+ result_list_email = (int *) calloc(cnt_checked, sizeof(int));
+ else if (CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request)
+ {
+ result_list_number = (int *) calloc(cnt_checked, sizeof(int));
+ result_list_email = (int *) calloc(cnt_checked, sizeof(int));
+ }
+ else
+ result_list_person = (int *) calloc(cnt_checked, sizeof(int));
+
+ EINA_LIST_FOREACH(clist_d->list_check_info, l, v_person_info)
+ {
+ ct_person_list *person_info = (ct_person_list *) v_person_info;
+
+ if (NULL == person_info || !person_info->checked)
+ continue;
+ if (FOUND_BY_NUMBER == person_info->id_ret_type)
+ {
+ result_list_number[number_count++] = person_info->id_ret;
+ }
+ else if (FOUND_BY_EMAIL == person_info->id_ret_type)
+ {
+ if (result_list_email)
+ result_list_email[email_count++] = person_info->id_ret;
+ }
+ else
+ {
+ if (result_list_person)
+ result_list_person[person_count++] = person_info->id;
+ }
+ }
+
+ // setting - import,export / group-view - message,email,chaton,calendar
+ if (clist_d->select_result_cb)
+ { // called by setting view - check person_info
+ if (CT_UG_REQUEST_CHECK_FOR_NUMBER != clist_d->ug_request)
+ ctui_list_edit_navi_pop(clist_d, NULL, NULL);
+ elm_naviframe_item_pop(clist_d->navi);
+ }
+ if (clist_d->contact_add_cb)
+ { // called by group,favorite view - check person_info
+ if (0 < cnt_checked)
+ {
+ clist_d->contact_add_cb(clist_d->win, clist_d->navi, cnt_checked);
+ phone_hide_notify(clist_d->base_layout);
+ }
+ else
+ elm_naviframe_item_pop_to((Elm_Object_Item *)
+ evas_object_data_get(clist_d->navi, "navi_it_pop"));
+ if (result_list_person)
+ free(result_list_person);
+ if (result_list_number)
+ free(result_list_number);
+ if (result_list_email)
+ free(result_list_email);
+ return;
+ }
+
+ if (CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request)
+ {
+ if (clist_d->service_operation)
+ phone_list_ug_return_values(clist_d->service_operation,
+ result_list_number, cnt_checked,
+ CT_OPERATION_RESULT_TYPE_PHONE);
+ else
+ phone_list_ug_return_ids(clist_d->ug, result_list_number,
+ cnt_checked, CT_UG_BUNDLE_RESULT_NUMBER_ID_LIST);
+ }
+ else if (CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request)
+ {
+ if (clist_d->service_operation)
+ phone_list_ug_return_values(clist_d->service_operation,
+ result_list_email, cnt_checked,
+ CT_OPERATION_RESULT_TYPE_EMAIL);
+ else
+ phone_list_ug_return_ids(clist_d->ug, result_list_email,
+ cnt_checked, CT_UG_BUNDLE_RESULT_EMAIL_ID_LIST);
+ }
+ else if (CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request)
+ {
+ phone_list_ug_return_number_email_ids(clist_d->ug, result_list_number,
+ number_count, result_list_email, email_count);
+ }
+ else
+ {
+ if (clist_d->service_operation)
+ phone_list_ug_return_values(clist_d->service_operation,
+ result_list_person, cnt_checked,
+ CT_OPERATION_RESULT_TYPE_ITEM_ID);
+ else
+ phone_list_ug_return_ids(clist_d->ug, result_list_person,
+ cnt_checked, CT_UG_BUNDLE_RESULT_PERSON_ID_LIST);
+ }
+ if (result_list_person)
+ free(result_list_person);
+ if (result_list_number)
+ free(result_list_number);
+ if (result_list_email)
+ free(result_list_email);
+
+ ug_destroy_me(clist_d->ug);
+}
+
+static void list_gadd_view_cancel_btn_cb(void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ p_retm_if(NULL == clist_d, "clist_d is NULL");
+
+ phone_hide_notify(clist_d->navi);
+ elm_naviframe_item_pop_to((Elm_Object_Item *) evas_object_data_get(clist_d->navi, "navi_it_pop"));
+}
+
+static void __list_edit_ug_destroy_me_cb(void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+
+ if (clist_d->service_operation)
+ phone_service_reply_simple(clist_d->service_operation,
+ SERVICE_RESULT_FAILED);
+
+ ug_destroy_me(clist_d->ug);
+}
+
+static void list_edit_back_cb(void *data)
+{
+ ct_list_data *clist_d = (ct_list_data *) data;
+ assert(clist_d);
+
+ if (!clist_d)
+ {
+ return;
+ }
+
+ evas_object_smart_callback_del(clist_d->navi, "transition,finished",ctui_list_edit_navi_pop);
+ elm_naviframe_item_pop(clist_d->navi);
+}
+
+void ct_list_edit_make_edit_navi(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ Evas_Object *delete_button = NULL; // used for delete button or remove button
+ Evas_Object *done_button = NULL;
+ phone_navi_item_reset(clist_d->navi_item, clist_d);
+
+ if (CT_UG_REQUEST_CHECK == clist_d->ug_request
+ || CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request
+ || CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request
+ || CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request)
+ {
+ done_button = phone_create_toolbar_btn(clist_d->base_layout,
+ S_(CT_SYS_SK_DONE), list_edit_check_done, clist_d);
+ elm_object_part_content_set(clist_d->base_layout, "toolbar",
+ done_button);
+ evas_object_data_set(clist_d->navi, "done_button", done_button);
+ if (CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request)
+ {
+ evas_object_smart_callback_add(clist_d->navi, "transition,finished",
+ ctui_list_edit_navi_pop, clist_d);
+ clist_d->back_cb = list_edit_back_cb;
+ }
+
+ if (clist_d->navi_item != elm_naviframe_bottom_item_get(clist_d->navi))
+ { // group view, setting view : CHECK MODE
+ if (clist_d->select_result_cb || clist_d->ug)
+ {
+ elm_object_style_set(done_button, "naviframe/toolbar/default");
+ }
+ else
+ {
+ clist_d->back_cb = list_gadd_view_cancel_btn_cb;
+ elm_object_style_set(done_button, "naviframe/toolbar/left");
+ }
+ }
+ else
+ { // check UG
+ clist_d->back_cb = __list_edit_ug_destroy_me_cb;
+ }
+ }
+ else if (!clist_d->ug)
+ {
+ // group detail : all or not assign, do not dispaly del button
+ if (clist_d->navi_item == elm_naviframe_bottom_item_get(clist_d->navi)
+ || clist_d->base_grp)
+ {
+ delete_button = phone_create_toolbar_btn(clist_d->base_layout,
+ CT_LIST_MULTI_REMOVE_MEMBER == clist_d->view_id ? S_(PH_SYS_BODY_REMOVE) : S_(PH_SYS_SK_DELETE),
+ createContListDeleteConfirmationPopupCB, clist_d);
+ elm_object_part_content_set(clist_d->base_layout, "toolbar",
+ delete_button);
+ evas_object_data_set(clist_d->navi, "delete_button", delete_button);
+ }
+
+ clist_d->back_cb = list_edit_cancel_cb;
+ }
+}
+
+static void list_edit_select_all(void *data, Eina_Bool checked)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+
+ list_edit_items_checked_set(clist_d, checked);
+ elm_genlist_realized_items_update(clist_d->genlist);
+
+ if (checked)
+ clist_d->cnt_checked = clist_d->cnt_list_total;
+ else
+ clist_d->cnt_checked = 0;
+
+ ctui_list_update_selection_info(clist_d);
+}
+
+void ct_list_item_checked_set(Elm_Object_Item *item, ct_list_data *clist_d)
+{
+ PH_TRACE;
+ ct_person_list *person_info = (ct_person_list *) elm_object_item_data_get(item);
+ p_retm_if(NULL == person_info, "elm_object_item_data_get() returns NULL");
+
+ if (person_info->checked)
+ {
+ if (clist_d->cnt_max_check)
+ {
+ if (clist_d->cnt_max_check <= clist_d->cnt_checked)
+ {
+ phone_show_popup(clist_d->navi,
+ T_(CT_GET_TEXT_ERR, CTTEXT_EXCEED_LIMIT), 2.0);
+ person_info->checked = EINA_FALSE;
+ return;
+ }
+ }
+ clist_d->cnt_checked++;
+ }
+ else
+ clist_d->cnt_checked--;
+ elm_genlist_item_update(item);
+
+ clist_d->list_check_info = update_list_person_check_info(clist_d->list_check_info, person_info);
+}
+
+static void list_edit_item_check_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Elm_Object_Item * item;
+ ct_person_list *person_info;
+ ct_list_data *clist_d = (ct_list_data *) data;
+
+ person_info = (ct_person_list *) evas_object_data_get(obj, "person_info");
+ p_retm_if(NULL == person_info, "evas_object_data_get() return NULL");
+
+ item = person_info->item;
+ p_retm_if(NULL == item, "person_info->item is NULL");
+
+ if (person_info->checked)
+ {
+ person_info->checked = !person_info->checked;
+ ct_list_item_checked_set(item, clist_d);
+ ctui_list_update_selection_info(clist_d);
+ return;
+ }
+
+
+ elm_genlist_item_update(item);
+
+ if (CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request)
+ ct_list_ug_handle_check_for_number(item, clist_d);
+ else if (CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request)
+ ct_list_ug_handle_check_for_email(item, clist_d);
+ else if (CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request)
+ ct_list_ug_handle_check_for_number_or_email(item, clist_d);
+ else
+ {
+ person_info->checked = !person_info->checked;
+ ct_list_item_checked_set(item, clist_d);
+ ctui_list_update_selection_info(clist_d);
+ }
+
+}
+
+Evas_Object* ct_list_edit_add_check(Evas_Object *parent, Eina_Bool *checked,
+ ct_list_data *clist_d)
+{
+ PH_TRACE;
+ Evas_Object *check = elm_check_add(parent);
+ elm_check_state_set(check, *checked);
+ evas_object_propagate_events_set(check, EINA_FALSE);
+ evas_object_smart_callback_add(check, "changed", list_edit_item_check_cb,
+ clist_d);
+ return check;
+}
+
+API void ctui_list_edit_mode_start(ct_list_data *clist_d)
+{
+ PH_TRACE;
+
+ //Sweep Off in Edit mode
+ ctui_list_set_unsweep(clist_d);
+
+ clist_d->list_mode = CT_LIST_MODE_EDIT;
+
+ // Append 'Select All' layout
+ if ((CT_UG_REQUEST_CHECK_FOR_NUMBER != clist_d->ug_request)
+ && (CT_UG_REQUEST_CHECK_FOR_EMAIL != clist_d->ug_request)
+ && (CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL != clist_d->ug_request)
+ && (CT_LIST_MULTI_ADD_MEMBER != clist_d->view_id))
+ if (((!clist_d->ug_request || clist_d->select_result_cb)
+ || (clist_d->base_grp > 0 && clist_d->contact_add_cb))
+ && (0 == clist_d->cnt_max_check
+ || clist_d->cnt_list_total <= clist_d->cnt_max_check))
+ {
+ clist_d->select_all_layout = phone_create_select_all(clist_d->box,
+ S_(PH_SYS_BODY_SELECT_ALL), list_edit_select_all,
+ clist_d);
+ elm_box_pack_start(clist_d->box, clist_d->select_all_layout);
+ }
+
+ if (clist_d->count_item)
+ {
+ elm_object_item_del(clist_d->count_item);
+ clist_d->count_item = NULL;
+ }
+ elm_genlist_decorate_mode_set(clist_d->genlist, EINA_TRUE);
+
+ if (CT_LIST_IN_MULTI_TAB != clist_d->tab_mode && !clist_d->title
+ && CT_UG_REQUEST_SELECT_PERSON <= clist_d->ug_request)
+ {
+ elm_object_item_text_set(clist_d->navi_item,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_SELECT_CONTACTS));
+ }
+ if (0 < clist_d->cnt_list_total)
+ phone_show_notify(clist_d->base_layout,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_SELECT_CONTACTS));
+
+ ctui_list_navi_set(CT_LIST_MODE_EDIT, clist_d);
+
+ if (clist_d->genlist)
+ elm_object_focus_set(clist_d->genlist, EINA_TRUE);
+
+ phone_set_searchbar_add_button_visible(*clist_d, false);
+}
+
+void ct_list_edit_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_list_data* clist_d = static_cast<ct_list_data*>(data);
+ p_retm_if(NULL == clist_d->navi_item, "parameter(navi_item) is NULL");
+
+ list_edit_popup_hide_cb(data, NULL, NULL);
+ list_edit_menu_hide_cb(data, NULL, NULL);
+ ctui_list_edit_mode_start(clist_d);
+ }
+}
+
+void ct_list_settings_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ct_list_data* clist_d = static_cast<ct_list_data*>(data);
+ p_retm_if(NULL == clist_d->navi_item, "parameter(navi_item) is NULL");
+
+ list_edit_popup_hide_cb(data, NULL, NULL);
+ list_edit_menu_hide_cb(data, NULL, NULL);
+
+ clist_d->child_ug = phone_launch_settings_ug(clist_d->ug, CONTACTS_SETTINGS_UG,
+ ct_list_destroy_child_ug, clist_d);
+ }
+}
+
+API void ctui_list_set_selectall(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ PH_DBG("ctui_list_set_selectall view_id %d", clist_d->view_id);
+ if (NULL != clist_d->select_all_layout
+ || CT_LIST_MODE_DEFAULT == clist_d->list_mode
+ || CT_LIST_MULTI_ADD_MEMBER == clist_d->view_id)
+ return;
+ // Append 'Select All' layout
+ if ((CT_UG_REQUEST_CHECK_FOR_NUMBER != clist_d->ug_request)
+ && (CT_UG_REQUEST_CHECK_FOR_EMAIL != clist_d->ug_request)
+ && (CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL != clist_d->ug_request))
+ if (((!clist_d->ug_request || clist_d->select_result_cb)
+ || (clist_d->base_grp > 0 && clist_d->contact_add_cb))
+ && (0 == clist_d->cnt_max_check
+ || clist_d->cnt_list_total <= clist_d->cnt_max_check))
+ {
+ clist_d->select_all_layout = phone_create_select_all(clist_d->box,
+ S_(PH_SYS_BODY_SELECT_ALL), list_edit_select_all,
+ clist_d);
+ elm_box_pack_start(clist_d->box, clist_d->select_all_layout);
+ }
+
+}
+
diff --git a/lib/list/ct-list-edit-view.h b/lib/list/ct-list-edit-view.h
new file mode 100755
index 0000000..ca3ec6f
--- /dev/null
+++ b/lib/list/ct-list-edit-view.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CONTACTS_LIST_EDIT_VIEW_H__
+#define __CONTACTS_LIST_EDIT_VIEW_H__
+
+/**
+ * Module responsible for editing selected contact.
+ */
+
+void ct_list_edit_mode_end(ct_list_data *clist_d);
+void ct_list_edit_cb(void *data, Evas_Object *obj, void *event_info);
+void ct_list_settings_cb(void *data, Evas_Object *obj, void *event_info);
+void ct_list_edit_make_edit_navi(ct_list_data *clist_d);
+Evas_Object* ct_list_edit_add_check(Evas_Object *parent, Eina_Bool *checked,
+ ct_list_data *clist_d);
+void ct_list_item_checked_set(Elm_Object_Item *item, ct_list_data *clist_d);
+
+/**
+ * Deletes group contacts from database.
+ * @param clist_d Contact list data.
+ */
+void list_edit_delete_persons_without_progressbar(ct_list_data *clist_d);
+
+/**
+ * The callback function to get the result of contacts_db_update_records_async operation.
+ * @param error Error code for batch operation.
+ * @param user_data The user data passed from the batch operation.
+ */
+void list_edit_delete_persons_without_progressbar_cb(int err, void *data);
+
+#endif //__CONTACTS_LIST_EDIT_VIEW_H__
diff --git a/lib/list/ct-list-main.cpp b/lib/list/ct-list-main.cpp
new file mode 100755
index 0000000..4b95b4f
--- /dev/null
+++ b/lib/list/ct-list-main.cpp
@@ -0,0 +1,994 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * ct-list is an UI-control responsible for drawing and handling list-specific event of contacts-app
+ * (some kind of "sub-application" used by "host" contacts-app).
+ */
+
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <ui-gadget-module.h>
+#include <efl_assist.h>
+#include "phone.h"
+#include "ct-list.h"
+#include "ct-group.h"
+#include "ct-detail.h"
+#include "ct-list-utils.h"
+#include "ct-list-view-ug.h"
+#include "ct-list-contact-view.h"
+#include "ct-list-edit-view.h"
+#include "ViewManager.h"
+
+API void ctui_list_view_reset(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ evas_object_data_del(clist_d->navi, "done_button");
+ evas_object_data_del(clist_d->navi, "edit_button");
+ evas_object_data_del(clist_d->navi, "new_button");
+ evas_object_data_del(clist_d->navi, "view_button");
+ evas_object_data_del(clist_d->navi, "account_button");
+
+ if (CT_UG_REQUEST_CHECK != clist_d->ug_request
+ && CT_UG_REQUEST_CHECK_FOR_NUMBER != clist_d->ug_request
+ && CT_UG_REQUEST_CHECK_FOR_EMAIL != clist_d->ug_request
+ && CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL != clist_d->ug_request)
+ {
+ if (CT_LIST_MODE_EDIT == clist_d->list_mode)
+ {
+ ct_list_edit_mode_end(clist_d);
+ }
+ }
+
+ if (elm_naviframe_top_item_get(clist_d->navi) != clist_d->navi_item)
+ {
+ elm_naviframe_item_pop_to(clist_d->navi_item);
+ }
+ else
+ {
+ ctui_list_set_unsweep(clist_d);
+ }
+
+ if (clist_d->child_ug)
+ {
+ ug_destroy(clist_d->child_ug);
+ clist_d->child_ug = NULL;
+ }
+}
+
+API void ctui_list_view_language_changed(Evas_Object *navi)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(navi, "clist_d");
+ p_retm_if(NULL == clist_d, "evas_object_data_get() return NULL");
+ ctui_list_genlist_update(clist_d);
+ if (clist_d->searchbar)
+ elm_object_part_text_set(clist_d->searchbar, "elm.guidetext",
+ S_(CT_SYS_BODY_SEARCH));
+
+ ctui_list_update_selection_info(clist_d);
+
+ void *cdetail_d = evas_object_data_get(navi, "cdetail_d");
+ if (cdetail_d)
+ ct_detail_view_language_changed((ct_detail_data *) cdetail_d);
+}
+
+static int create_list_view(Evas_Object *base, ct_list_data *clist_d)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_SHORT_LEN];
+
+ if (NULL == clist_d->navi)
+ {
+ p_retvm_if(NULL == base, FALSE, "base is NULL");
+ clist_d->navi = elm_naviframe_add(base);
+ p_retvm_if(NULL == clist_d->navi, FALSE, "navi is NULL");
+ ea_object_event_callback_add(clist_d->navi, EA_CALLBACK_BACK, &Common::ViewManager::onBack, clist_d->win);
+ ea_object_event_callback_add(clist_d->navi, EA_CALLBACK_MORE, &Common::ViewManager::onMenu, NULL);
+ elm_naviframe_prev_btn_auto_pushed_set(clist_d->navi, EINA_FALSE);
+ elm_object_part_content_set(base, "elm.swallow.content", clist_d->navi);
+ evas_object_show(clist_d->navi);
+ }
+ ct_list_init_account_data(clist_d);
+ if (CT_GET_LIST_VCARD != clist_d->list_op)
+ ct_list_get_contacts(clist_d, &clist_d->list);
+ clist_d->base_layout = ct_list_create_contact_view(clist_d);
+
+ FREEandSTRDUP(clist_d->title, T_(CT_GET_TEXT_BASIC, CTTEXT_ALL_CONTACTS));
+ snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title,
+ clist_d->cnt_list_total);
+ clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, buf, NULL, NULL,
+ clist_d->base_layout, NULL);
+
+ return TRUE;
+}
+
+static Evas_Object* list_create_vcard_list_view(Evas_Object *base,
+ ct_list_data *clist_d)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_SHORT_LEN];
+
+ p_retvm_if(NULL == base, FALSE, "base is NULL");
+
+ clist_d->navi = elm_naviframe_add(base);
+ p_retvm_if(NULL == clist_d->navi, FALSE, "navi is NULL");
+ ea_object_event_callback_add(clist_d->navi, EA_CALLBACK_BACK, &Common::ViewManager::onBack, clist_d->win);
+ ea_object_event_callback_add(clist_d->navi, EA_CALLBACK_MORE, &Common::ViewManager::onMenu, NULL);
+ elm_naviframe_prev_btn_auto_pushed_set(clist_d->navi, EINA_FALSE);
+ evas_object_show(clist_d->navi);
+
+ clist_d->base_layout = ct_list_create_contact_view(clist_d);
+
+ clist_d->title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_VCARD_CONTACTS));
+ snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title,
+ clist_d->cnt_list_total);
+ clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, buf, NULL, NULL,
+ clist_d->base_layout, NULL);
+ if (clist_d->select_result_cb)
+ ctui_list_edit_mode_start(clist_d);
+ else
+ ctui_list_navi_set(CT_LIST_MODE_DEFAULT, clist_d);
+
+ elm_object_part_content_set(base, "elm.swallow.content", clist_d->navi);
+
+ return clist_d->navi;
+}
+
+static int __list_parse_bundle_by_operation(service_h service,
+ ct_list_data* clist_d)
+{
+ PH_TRACE;
+ char* val = NULL;
+ char* val1 = NULL;
+ char *operation = NULL;
+
+ service_get_operation(service, &operation);
+ p_retvm_if(NULL == operation, 0, "operation is NULL");
+ PH_DBG("operaion = %s", operation);
+
+ if (strcmp(operation, CT_OPERATION_SOCIAL_CHOOSE) == 0)
+ {
+ service_get_extra_data(service, CT_OPERATION_ITEM_TYPE, &val);
+ if (val)
+ {
+ if (strcmp(val, CT_OPERATION_ITEM_TYPE_PERSON) != 0)
+ {
+ ERR("CT_OPERATION_ITEM_TYPE_PERSON not matched %s", val);
+ free(val);
+ return -1;
+ }
+ free(val);
+ val = NULL;
+ }
+ else
+ {
+ ERR("CT_OPERATION_ITEM_TYPE is mandatory");
+ return -1;
+ }
+ clist_d->service_operation = service;
+ clist_d->ug_request = CT_UG_REQUEST_UPDATE_CONTACT;
+ clist_d->list_op = CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID;
+
+ service_get_extra_data(service, CT_OPERATION_PHONE, &val1);
+ if (val1)
+ {
+ clist_d->ug_request = CT_UG_REQUEST_UPDATE_WITH_NUM;
+ clist_d->ug_data = val1;
+ return 1;
+ }
+
+ service_get_extra_data(service, CT_OPERATION_EMAIL, &val1);
+ if (val1)
+ {
+ clist_d->ug_request = CT_UG_REQUEST_UPDATE_WITH_EMAIL;
+ clist_d->ug_data = val1;
+ return 1;
+ }
+
+ service_get_extra_data(service, CT_OPERATION_URL, &val1);
+ if (val1)
+ {
+ clist_d->ug_request = CT_UG_REQUEST_UPDATE_WITH_WEB;
+ clist_d->ug_data = val1;
+ return 1;
+ }
+ }
+ else if (strcmp(operation, CT_OPERATION_SOCIAL_PICK) == 0)
+ {
+ service_get_extra_data(service, CT_OPERATION_ITEM_TYPE, &val);
+ if (val)
+ {
+ if (strcmp(val, CT_OPERATION_ITEM_TYPE_PERSON) != 0)
+ {
+ ERR("CT_OPERATION_ITEM_TYPE_PERSON not matched %s", val);
+ free(val);
+ return -1;
+ }
+ free(val);
+ val = NULL;
+ }
+ else
+ {
+ ERR("CT_OPERATION_ITEM_TYPE is mandatory");
+ return -1;
+ }
+
+ service_get_extra_data(service, CT_OPERATION_SELECTION_MODE, &val);
+ if (val)
+ {
+ if (strcmp(val, CT_OPERATION_SELECTION_MODE_SINGLE) == 0)
+ {
+ service_get_extra_data(service, CT_OPERATION_RESULT_TYPE,
+ &val1);
+ if (val1)
+ {
+ if (strcmp(val1, CT_OPERATION_RESULT_TYPE_PHONE) == 0)
+ {
+ clist_d->ug_request = CT_UG_REQUEST_SELECT_NUMBER;
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_NUMBER;
+ }
+ else if (strcmp(val1, CT_OPERATION_RESULT_TYPE_EMAIL) == 0)
+ {
+ clist_d->ug_request = CT_UG_REQUEST_SELECT_EMAIL;
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_EMAIL;
+ }
+ else if (strcmp(val1, CT_OPERATION_RESULT_TYPE_ITEM_ID)
+ == 0)
+ {
+ clist_d->ug_request = CT_UG_REQUEST_SELECT_PERSON;
+ }
+ else if (strcmp(val1, CT_OPERATION_RESULT_TYPE_VCARD) == 0)
+ {
+ clist_d->ug_request = CT_UG_REQUEST_SELECT_VCARD;
+
+ }
+ else
+ {
+ ERR("CT_OPERATION_RESULT_TYPE is wrong value %s", val1);
+ free(val);
+ free(val1);
+ return -1;
+ }
+ free(val1);
+ clist_d->service_operation = service;
+ }
+ else
+ {
+ ERR("CT_OPERATION_RESULT_TYPE is wrong value %s", val1);
+ free(val);
+ free(val1);
+ return -1;
+ }
+ }
+ else if (strcmp(val, CT_OPERATION_SELECTION_MODE_MULTIPLE) == 0)
+ {
+ service_get_extra_data(service, CT_OPERATION_RESULT_TYPE,
+ &val1);
+ if (val1)
+ {
+ if (strcmp(val1, CT_OPERATION_RESULT_TYPE_PHONE) == 0)
+ {
+ clist_d->ug_request = CT_UG_REQUEST_CHECK_FOR_NUMBER;
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_NUMBER;
+ }
+ else if (strcmp(val1, CT_OPERATION_RESULT_TYPE_EMAIL) == 0)
+ {
+ clist_d->ug_request = CT_UG_REQUEST_CHECK_FOR_EMAIL;
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_EMAIL;
+ }
+ else if (strcmp(val1, CT_OPERATION_RESULT_TYPE_ITEM_ID)
+ == 0)
+ {
+ clist_d->ug_request = CT_UG_REQUEST_CHECK;
+ }
+ else
+ {
+ ERR("CT_OPERATION_RESULT_TYPE is wrong value %s", val1);
+ free(val);
+ free(val1);
+ return -1;
+ }
+ free(val1);
+ clist_d->service_operation = service;
+ }
+ else
+ {
+ ERR("CT_OPERATION_RESULT_TYPE is wrong value %s", val1);
+ free(val);
+ free(val1);
+ return -1;
+ }
+ }
+ else
+ {
+ ERR("CT_OPERATION_SELECTION_MODE is wrong %s", val);
+ free(val);
+ return -1;
+ }
+ free(val);
+ }
+ else
+ {
+ ERR("CT_OPERATION_SELECTION_MODE is mandatory");
+ return -1;
+ }
+ }
+ else
+ {
+ ERR("operation wrong");
+ return -1;
+ }
+
+ return 1;
+}
+
+static void *list_on_create(ui_gadget_h ug, enum ug_mode mode,
+ service_h service, void *priv)
+{
+ PH_TRACE;
+ int ret;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *bg, *base;
+ Evas_Object *parent;
+ ct_list_data *clist_d = (ct_list_data *) priv;
+ char *operation = NULL;
+
+ p_retvm_if(NULL == ug || NULL == priv, NULL,
+ "The parameter is invalid(ug=%p, priv=%p)", ug, priv);
+
+ clist_d->win = (Evas_Object *) ug_get_window();
+ parent = (Evas_Object *) ug_get_parent_layout(ug);
+ p_retvm_if(NULL == parent, NULL, "ug_get_parent_layout() return NULL");
+ clist_d->ug = ug;
+
+ bindtextdomain(PACKAGE, LOCALEDIR);
+
+ err = contacts_connect2();
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_connect2() Failed(%d)", err);
+
+ service_get_operation(service, &operation);
+ if (operation)
+ {
+ ret = __list_parse_bundle_by_operation(service, clist_d);
+ free(operation);
+ if (ret < 0)
+ {
+ ERR("__list_parse_bundle_by_operation invalid parameter");
+ ret = ct_list_parse_bundle(service, clist_d);
+ }
+ }
+ else
+ {
+ ret = ct_list_parse_bundle(service, clist_d);
+ }
+
+ if (UG_MODE_FULLVIEW == mode)
+ base = phone_create_base_layout(parent, true);
+ else
+ base = phone_create_base_layout(parent, false);
+
+ clist_d->base_ab = -1;
+
+ if (-2 == ret)
+ {
+ Evas_Object *popup;
+ popup = elm_popup_add(base);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_object_text_set(popup, S_(CT_SYS_POP_FILE_NOT_FOUND));
+ elm_popup_timeout_set(popup, 1.5);
+ evas_object_show(popup);
+ evas_object_smart_callback_add(popup, "timeout", ctui_list_ug_hide_cb,
+ clist_d->ug);
+ return base;
+ }
+ p_retvm_if(-1 == ret, NULL, "ct_list_parse_bundle() Failed");
+
+ bg = phone_create_bg(base);
+ if (NULL == bg)
+ {
+ ERR("phone_create_bg() return NULL");
+ evas_object_del(base);
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_disconnect2() Failed(%d)", err);
+ return NULL;
+ }
+
+ if (clist_d->ug_request == CT_UG_REQUEST_SELECT_GROUP
+ || clist_d->ug_request == CT_UG_REQUEST_SELECT_GROUP_ADD_TO_HOME)
+ {
+ Evas_Object *layout = phone_create_group_view_ug(clist_d->ug, base,
+ clist_d->ug_request);
+ phone_group_set_navi(layout);
+ }
+ else if (FALSE == create_list_view(base, clist_d))
+ {
+ evas_object_del(base);
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_disconnect2() Failed(%d)", err);
+ }
+ else
+ {
+ if (CT_UG_REQUEST_CHECK == clist_d->ug_request
+ || CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request
+ || CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request
+ || CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL
+ == clist_d->ug_request)
+ ctui_list_edit_mode_start(clist_d);
+ else
+ ctui_list_navi_set(CT_LIST_MODE_DEFAULT, clist_d);
+ }
+
+ return base;
+}
+
+static void list_on_message(ui_gadget_h ug, service_h msg, service_h service,
+ void *priv)
+{
+ PH_TRACE;
+}
+
+static void list_on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ct_list_data *clist_d = (ct_list_data *) priv;
+ err = contacts_setting_get_name_display_order(&(clist_d->order_display));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_setting_get_name_display_order() Failed(%d)", err);
+ clist_d->is_background = true;
+}
+
+static void list_on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) priv;
+ ct_detail_data *cdetail_d;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_name_display_order_e order_display;
+
+ clist_d->is_background = false;
+
+ err = contacts_setting_get_name_display_order(&order_display);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_setting_get_name_display_order() Failed(%d)", err);
+
+ if (clist_d->order_display != order_display)
+ {
+ ctui_list_genlist_update(clist_d);
+ cdetail_d = (ct_detail_data *) evas_object_data_get(clist_d->navi, "cdetail_d");
+ if (cdetail_d)
+ ctui_detail_genlist_update(cdetail_d);
+ }
+ if (clist_d->update_timer)
+ {
+ ecore_timer_del(clist_d->update_timer);
+ clist_d->update_timer = NULL;
+ ctui_list_genlist_update(clist_d);
+ }
+}
+
+static void list_on_event(ui_gadget_h ug, enum ug_event event,
+ service_h service, void *priv)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) priv;
+
+ switch (event)
+ {
+ case UG_EVENT_ROTATE_PORTRAIT:
+ case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+ break;
+ case UG_EVENT_ROTATE_LANDSCAPE:
+ case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+ break;
+ case UG_EVENT_LANG_CHANGE:
+ ctui_list_view_language_changed(clist_d->navi);
+ break;
+ default:
+ break;
+ }
+}
+
+static void list_on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ct_list_data *clist_d = (ct_list_data *) priv;
+ p_retm_if(NULL == priv, "The parameter is invalid(priv=%p)", priv);
+ p_retm_if(NULL == ug, "The parameter is invalid(ug=%p)", ug);
+
+ free(clist_d->ug_data);
+
+ if (clist_d->ug)
+ {
+ evas_object_del((Evas_Object *) ug_get_layout(ug));
+ }
+
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_disconnect2() Failed(%d)",
+ err);
+}
+
+extern "C" API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ ct_list_data *clist_d;
+
+ p_retvm_if(!ops, -1, "ops is NULL");
+
+ clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data));
+ p_retvm_if(!clist_d, -1, "UG data is NULL, Not enough memory");
+
+ ops->create = list_on_create;
+ ops->start = NULL;
+ ops->pause = list_on_pause;
+ ops->resume = list_on_resume;
+ ops->destroy = list_on_destroy;
+ ops->message = list_on_message;
+ ops->event = list_on_event;
+ ops->key_event = NULL;
+ ops->priv = clist_d;
+ ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+ return 0;
+}
+
+extern "C" API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ p_retm_if(!ops, "ops is NULL");
+
+ free(ops->priv);
+ ops->priv = NULL;
+}
+
+// Setting - export,import / Group - Message,Email,Share,ChatOn
+API Evas_Object* ctui_create_list_select_view(Evas_Object *navi,
+ ct_select_result_cb result_cb,
+ void *result_cb_data,
+ int list_op,
+ int id_ab,
+ int id_grp,
+ int cnt_max)
+{
+ PH_TRACE;
+ PH_DBG("list_op = %d, id_ab = %d, id_grp = %d", list_op, id_ab, id_grp);
+
+ ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data));
+ p_retvm_if(!clist_d, NULL, "clist_d is NULL, Not enough memory");
+
+ clist_d->navi = navi;
+ clist_d->select_result_cb = result_cb;
+ clist_d->select_result_cb_data = result_cb_data;
+ clist_d->list_op = list_op;
+ clist_d->base_ab = id_ab;
+ clist_d->base_grp = id_grp;
+
+ if (cnt_max > 0)
+ {
+ clist_d->cnt_max_check = cnt_max;
+ }
+
+ switch (list_op)
+ {
+ case CT_GET_LIST_ALL_PERSON_HAD_NUMBER:
+ case CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID:
+ case CT_GET_LIST_PERSON_HAD_NUMBER_OF_GROUP_ID:
+ case CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OF_ADDRBOOK_ID:
+ clist_d->ug_request = CT_UG_REQUEST_CHECK_FOR_NUMBER;
+ break;
+ case CT_GET_LIST_ALL_PERSON_HAD_EMAIL:
+ case CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID:
+ case CT_GET_LIST_PERSON_HAD_EMAIL_OF_GROUP_ID:
+ case CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_EMAIL_OF_ADDRBOOK_ID:
+ clist_d->ug_request = CT_UG_REQUEST_CHECK_FOR_EMAIL;
+ break;
+ case CT_GET_LIST_ALL_PERSON_HAD_NUMBER_OR_EMAIL:
+ case CT_GET_LIST_PERSON_HAD_NUMBER_OR_EMAIL_OF_ADDRBOOK_ID:
+ case CT_GET_LIST_PERSON_HAD_NUMBER_OR_EMAIL_OF_GROUP_ID:
+ case CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OR_EMAIL_OF_ADDRBOOK_ID:
+ clist_d->ug_request = CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL;
+ break;
+ default:
+ clist_d->ug_request = CT_UG_REQUEST_CHECK;
+ break;
+ }
+
+ ct_list_get_contacts(clist_d, &clist_d->list);
+ clist_d->base_layout = ct_list_create_contact_view(clist_d);
+
+ ct_list_get_title(clist_d, list_op, id_ab, id_grp);
+
+ if (clist_d->sub_title)
+ {
+ clist_d->navi_item = elm_naviframe_item_push(clist_d->navi,
+ clist_d->title, NULL, NULL, clist_d->base_layout, NULL);
+ elm_object_item_part_text_set(clist_d->navi_item, "subtitle",
+ clist_d->sub_title);
+ }
+ else
+ {
+ clist_d->navi_item = elm_naviframe_item_push(clist_d->navi,
+ clist_d->title, NULL, NULL, clist_d->base_layout, NULL);
+ }
+
+ ctui_list_edit_mode_start(clist_d);
+
+ return clist_d->navi;
+}
+
+API void ctui_create_favorite_list_select_view(Evas_Object *win,
+ Evas_Object *navi,
+ Eina_List *list)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_SHORT_LEN];
+ ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data));
+ p_retm_if(!clist_d, "clist_d is NULL, Not enough memory");
+
+ clist_d->win = win;
+ clist_d->navi = navi;
+ clist_d->contact_add_cb = ct_list_add_contacts_to_favorite;
+ clist_d->ug_request = CT_UG_REQUEST_CHECK;
+ clist_d->list = list;
+ clist_d->base_layout = ct_list_create_contact_view(clist_d);
+ clist_d->title = strdup(T_(CT_GET_TEXT_BASE_OP, CTTEXT_ADD_TO_FAVOURITES));
+ clist_d->cnt_list_total = eina_list_count(list);
+ clist_d->base_ab = -1;
+
+ snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title,
+ clist_d->cnt_list_total);
+
+ clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, buf, NULL, NULL,
+ clist_d->base_layout, NULL);
+ ctui_list_edit_mode_start(clist_d);
+ evas_object_data_set(clist_d->navi, "favor_list_d", clist_d);
+}
+
+API Elm_Object_Item *ctui_create_gadd_list_select_view(Evas_Object *win,
+ Evas_Object *navi,
+ int group_id,
+ int ab_id,
+ Eina_List **list,
+ bool save_contacts)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_SHORT_LEN];
+
+ ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data));
+ p_retvm_if(!clist_d, NULL, "clist_d is NULL, Not enough memory");
+
+ clist_d->win = win;
+ clist_d->navi = navi;
+ if (save_contacts)
+ {
+ clist_d->contact_add_cb = ct_list_add_contacts_to_group;
+ }
+ else
+ {
+ clist_d->contact_add_cb = ct_list_add_contacts;
+ }
+ clist_d->view_id = CT_LIST_MULTI_ADD_MEMBER;
+ clist_d->list_op = CT_GET_LIST_PERSON_OF_ADDRBOOK_ID;
+ clist_d->ug_request = CT_UG_REQUEST_CHECK;
+ clist_d->base_grp = group_id;
+ clist_d->base_ab = ab_id;
+ clist_d->list_grp_person = list;
+ ct_list_get_contacts(clist_d, &clist_d->list);
+ clist_d->base_layout = ct_list_create_contact_view(clist_d);
+ clist_d->title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_SELECT_CONTACTS));
+ snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title,
+ clist_d->cnt_list_total);
+
+ clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, buf, NULL, NULL,
+ clist_d->base_layout, NULL);
+ ctui_list_edit_mode_start(clist_d);
+ evas_object_data_set(clist_d->navi, "gadd_list_d", clist_d);
+
+ return clist_d->navi_item;
+}
+
+API void ctui_list_update_group_list_without_progressbar(Evas_Object *navi,
+ int group_id,
+ Eina_List *add_list,
+ Eina_List *remove_list)
+{
+ PH_TRACE;
+ p_retm_if(!navi, "parameter navi is NULL");
+ ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data));
+ p_retm_if(!clist_d, "clist_d is NULL, Not enough memory");
+
+ clist_d->navi = navi;
+ clist_d->base_grp = group_id;
+ clist_d->list_grp_person = &add_list;
+ clist_d->list_check_info = remove_list;
+
+ if (eina_list_count(add_list) > 0)
+ {
+ ct_list_add_contacts_to_group_without_progressbar(clist_d);
+ }
+
+ Eina_List *l_d = NULL;
+ void *v_person_info_d = NULL;
+ EINA_LIST_FOREACH(clist_d->list_check_info, l_d, v_person_info_d)
+ {
+ ct_person_list *person_info_d = (ct_person_list *) v_person_info_d;
+ if (person_info_d)
+ {
+ Eina_List *l = NULL;
+ void *v_person_info = NULL;
+ EINA_LIST_FOREACH(*clist_d->list_grp_person, l, v_person_info)
+ {
+ ct_person_list *person_info = (ct_person_list *) v_person_info;
+ if (person_info)
+ {
+ if (person_info_d->id == person_info->id)
+ {
+ clist_d->list_check_info = eina_list_remove(clist_d->list_check_info, person_info_d);
+ }
+ }
+ }
+ }
+ }
+ if (eina_list_count(clist_d->list_check_info) > 0)
+ {
+ list_edit_delete_persons_without_progressbar(clist_d);
+ }
+
+ if (clist_d->update_delete_list)
+ {
+ contacts_db_update_records_async(clist_d->update_delete_list,
+ list_edit_delete_persons_without_progressbar_cb, clist_d);
+ }
+ else if (clist_d->update_add_list)
+ {
+ contacts_db_update_records_async(clist_d->update_add_list,
+ ct_list_add_contacts_to_group_without_progressbar_cb, clist_d);
+ }
+ else
+ {
+ phone_show_tickernoti(S_(CT_SYS_POP_SUCCESS));
+ elm_naviframe_item_pop(clist_d->navi);
+ }
+}
+
+API Evas_Object* ctui_create_vcard_list_select_view(Evas_Object *navi,
+ Eina_List *list,
+ const char *path,
+ ct_select_result_cb result_cb,
+ void *result_cb_data)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_SHORT_LEN];
+
+ ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data));
+ p_retvm_if(!clist_d, NULL, "clist_d is NULL, Not enough memory");
+
+ clist_d->navi = navi;
+ clist_d->list = list;
+ clist_d->cnt_list_total = eina_list_count(list);
+ clist_d->vcard_path = path;
+ clist_d->select_result_cb = result_cb;
+ clist_d->select_result_cb_data = result_cb_data;
+ clist_d->list_op = CT_GET_LIST_VCARD;
+ clist_d->ug_request = CT_UG_REQUEST_CHECK;
+ clist_d->base_ab = -1;
+
+ clist_d->base_layout = ct_list_create_contact_view(clist_d);
+ clist_d->title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_VCARD_CONTACTS));
+ snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title,
+ clist_d->cnt_list_total);
+
+ clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, buf, NULL, NULL,
+ clist_d->base_layout, NULL);
+ ctui_list_edit_mode_start(clist_d);
+
+ evas_object_data_set(clist_d->navi, "clist_d", clist_d);
+ return clist_d->navi;
+}
+
+// Show contact list view from vcf file
+API Evas_Object* ctui_create_vcard_list_view(Evas_Object *win, Eina_List *list,
+ const char *path)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data));
+ p_retvm_if(!clist_d, NULL, "clist_d is NULL, Not enough memory");
+
+ clist_d->win = win;
+ clist_d->list = list;
+ clist_d->cnt_list_total = eina_list_count(list);
+ clist_d->vcard_path = path;
+ clist_d->base_ab = -1;
+
+ Evas_Object *conform = elm_conformant_add(win);
+ p_retvm_if(NULL == conform, NULL, "elm_conformant_add() Failed");
+ evas_object_show(conform);
+
+ Evas_Object *base = phone_create_base_layout(win, true);
+ if (base)
+ {
+ clist_d->list_op = CT_GET_LIST_VCARD;
+ Evas_Object *navi = list_create_vcard_list_view(base, clist_d);
+
+ evas_object_data_set(win, "naviframe", (void *) navi);
+
+ Evas_Object *bg = phone_create_bg(base);
+ if (NULL == bg)
+ {
+ ERR("phone_create_bg() return NULL");
+ evas_object_del(base);
+ free(clist_d);
+ return NULL;
+ }
+
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, base);
+ elm_win_resize_object_add(win, conform);
+ elm_object_content_set(conform, base);
+ evas_object_show(base);
+ evas_object_show(conform);
+ evas_object_data_set(clist_d->navi, "clist_d", clist_d);
+
+ return base;
+ }
+ else
+ {
+ free(clist_d);
+ return NULL;
+ }
+}
+
+API Evas_Object* ctui_create_phone_list_view(const ph_view_info *view_info)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data));
+ p_retvm_if(!clist_d, NULL, "clist_d is NULL, Not enough memory");
+
+ clist_d->ug = view_info->ug;
+ clist_d->win = view_info->win;
+ clist_d->navi = view_info->navi;
+ clist_d->tab_mode = CT_LIST_IN_MULTI_TAB;
+ clist_d->navi_item = elm_naviframe_bottom_item_get(view_info->navi);
+
+ switch (view_info->ug_request)
+ {
+ case PH_UG_REQUEST_CHECK_FOR_EMAIL:
+ case PH_UG_REQUEST_SELECT_EMAIL:
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_EMAIL;
+ break;
+ case PH_UG_REQUEST_CHECK_FOR_NUMBER:
+ case PH_UG_REQUEST_SELECT_NUMBER:
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_NUMBER;
+ break;
+ case PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL:
+ case PH_UG_REQUEST_SELECT_NUMBER_OR_EMAIL:
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_NUMBER_OR_EMAIL;
+ break;
+ default:
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON;
+ break;
+ }
+
+ clist_d->base_ab = ctui_get_view_mode();
+ if (clist_d->base_ab > -1)
+ {
+ clist_d->list_op = CT_GET_LIST_PERSON_OF_ADDRBOOK_ID;
+ }
+ else
+ clist_d->base_ab = -1;
+
+ clist_d->ug_request = view_info->ug_request;
+ clist_d->ug_data = view_info->ug_data;
+ clist_d->cnt_max_check = view_info->ug_cnt_max;
+
+ ct_list_init_account_data(clist_d);
+
+ ct_list_get_contacts(clist_d, &clist_d->list);
+ clist_d->base_layout = ct_list_create_contact_view(clist_d);
+ evas_object_data_set(clist_d->navi, "clist_d", clist_d);
+
+ return clist_d->base_layout;
+}
+
+API void ctui_create_list_single_select_view(Evas_Object *win,
+ Evas_Object *navi, Evas_Smart_Cb sel_cb, void *cb_data, int id_caller)
+{
+ PH_TRACE;
+ ct_list_data *clist_d;
+ char buf[PH_TEXT_MAX_LEN + 1];
+
+ clist_d = (ct_list_data *) calloc(1, sizeof(ct_list_data));
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON;
+ clist_d->selected_person_id = id_caller;
+ clist_d->navi = navi;
+ clist_d->win = win;
+ clist_d->gl_sel = sel_cb;
+ clist_d->gl_sel_data = cb_data;
+
+ ct_list_init_account_data(clist_d);
+ ct_list_get_contacts(clist_d, &clist_d->list);
+ list_create_itcs(clist_d);
+ clist_d->base_layout = ct_list_create_contact_layout(clist_d);
+
+ FREEandSTRDUP(clist_d->title, T_(CT_GET_TEXT_BASIC, CTTEXT_ALL_CONTACTS));
+ snprintf(buf, sizeof(buf), "%s (%d)", clist_d->title,
+ clist_d->cnt_list_total);
+ clist_d->navi_item = elm_naviframe_item_push(clist_d->navi, buf, NULL, NULL,
+ clist_d->base_layout, NULL);
+}
+
+API void ctui_list_view_resume(Evas_Object *navi)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(navi, "clist_d");
+ p_retm_if(NULL == clist_d, "evas_object_data_get() return NULL");
+
+ clist_d->is_background = false;
+
+ contacts_name_display_order_e order_display;
+ int err = contacts_setting_get_name_display_order(&order_display);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_setting_get_name_display_order() Failed(%d)", err);
+
+ if (clist_d->order_display != order_display)
+ ctui_list_genlist_update(clist_d);
+
+ if (clist_d->update_timer)
+ {
+ ecore_timer_del(clist_d->update_timer);
+ clist_d->update_timer = NULL;
+ ctui_list_genlist_update(clist_d);
+ }
+}
+
+API void ctui_list_set_background(Evas_Object *obj, bool is_background)
+{
+ PH_TRACE;
+ ct_list_data *clist_d;
+ clist_d = (ct_list_data *) evas_object_data_get(obj, "clist_d");
+ p_retm_if(NULL == clist_d, "log data is null");
+
+ clist_d->is_background = is_background;
+ if (clist_d->update_timer)
+ {
+ ecore_timer_del(clist_d->update_timer);
+ clist_d->update_timer = NULL;
+ ctui_list_lazy_update(_contacts_person._uri, clist_d);
+ }
+}
+
+API void ctui_list_view_pause(Evas_Object *navi)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(navi, "clist_d");
+ p_retm_if(NULL == clist_d, "evas_object_data_get() return NULL");
+
+ err = contacts_setting_get_name_display_order(&(clist_d->order_display));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_setting_get_name_display_order() Failed(%d)", err);
+
+}
+
diff --git a/lib/list/ct-list-utils.cpp b/lib/list/ct-list-utils.cpp
new file mode 100755
index 0000000..f26359c
--- /dev/null
+++ b/lib/list/ct-list-utils.cpp
@@ -0,0 +1,1153 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <ui-gadget-module.h>
+#include "phone.h"
+#include "ct-detail.h"
+#include "ct-list.h"
+#include "ct-list-contact-view.h"
+#include "ct-list-utils.h"
+
+static const char *NAVI_ITEM_POP = "navi_it_pop";
+
+int ct_list_parse_bundle(service_h service, ct_list_data* clist_d)
+{
+ PH_TRACE;
+ char* val = NULL;
+
+ if (service)
+ {
+ service_get_extra_data(service, CT_UG_BUNDLE_TYPE, &val);
+ if (val)
+ clist_d->ug_request = atoi(val);
+ PH_DBG("type = %d", clist_d->ug_request);
+ free(val);
+
+ switch (clist_d->ug_request)
+ {
+ case CT_UG_REQUEST_SELECT_GROUP:
+ case CT_UG_REQUEST_SELECT_GROUP_ADD_TO_HOME:
+ return 0;
+ case CT_UG_REQUEST_LIST:
+ case CT_UG_REQUEST_LIST_WITH_BACK:
+ case CT_UG_REQUEST_SELECT_PERSON:
+ case CT_UG_REQUEST_SHARE_CONTACT_INFO:
+ case CT_UG_REQUEST_SELECT_VCARD:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val);
+ if (val)
+ {
+ clist_d->list_op = CT_GET_LIST_PERSON_OF_ADDRBOOK_ID;
+ clist_d->base_ab = atoi(val);
+ free(val);
+ }
+
+ break;
+ case CT_UG_REQUEST_SELECT_NUMBER:
+ case CT_UG_REQUEST_SELECT_CONTACT_ADD_TO_HOME:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val);
+ if (val)
+ {
+ clist_d->list_op =
+ CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID;
+ clist_d->base_ab = atoi(val);
+ free(val);
+ }
+ else
+ {
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_NUMBER;
+ }
+ break;
+ case CT_UG_REQUEST_SELECT_EMAIL:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val);
+ if (val)
+ {
+ clist_d->list_op =
+ CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID;
+ clist_d->base_ab = atoi(val);
+ free(val);
+ }
+ else
+ {
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_EMAIL;
+ }
+ break;
+ case CT_UG_REQUEST_SELECT_NUMBER_OR_EMAIL:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val);
+ if (val)
+ {
+ clist_d->list_op =
+ CT_GET_LIST_PERSON_HAD_NUMBER_OR_EMAIL_OF_ADDRBOOK_ID;
+ clist_d->base_ab = atoi(val);
+ free(val);
+ }
+ else
+ {
+ clist_d->list_op =
+ CT_GET_LIST_ALL_PERSON_HAD_NUMBER_OR_EMAIL;
+ }
+ break;
+ case CT_UG_REQUEST_UPDATE_CONTACT:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val);
+ if (val)
+ {
+ clist_d->list_op = CT_GET_LIST_PERSON_OF_ADDRBOOK_ID;
+ clist_d->base_ab = atoi(val);
+ free(val);
+ }
+ service_get_extra_data(service, CT_UG_BUNDLE_NUM,
+ &clist_d->ug_data);
+ if (clist_d->ug_data)
+ break;
+ service_get_extra_data(service, CT_UG_BUNDLE_EMAIL,
+ &clist_d->ug_data);
+ if (clist_d->ug_data)
+ break;
+ service_get_extra_data(service, CT_UG_BUNDLE_WEB,
+ &clist_d->ug_data);
+ if (clist_d->ug_data)
+ break;
+ break;
+ case CT_UG_REQUEST_UPDATE_WITH_NUM:
+ service_get_extra_data(service, CT_UG_BUNDLE_NUM,
+ &clist_d->ug_data);
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val);
+ if (val)
+ {
+ clist_d->base_ab = atoi(val);
+ free(val);
+ }
+ clist_d->list_op = CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID;
+ break;
+ case CT_UG_REQUEST_UPDATE_WITH_EMAIL:
+ service_get_extra_data(service, CT_UG_BUNDLE_EMAIL,
+ &clist_d->ug_data);
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val);
+ if (val)
+ {
+ clist_d->base_ab = atoi(val);
+ free(val);
+ }
+ clist_d->list_op = CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID;
+ break;
+ case CT_UG_REQUEST_UPDATE_WITH_WEB:
+ service_get_extra_data(service, CT_UG_BUNDLE_WEB,
+ &clist_d->ug_data);
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val);
+ if (val)
+ {
+ clist_d->base_ab = atoi(val);
+ free(val);
+ }
+ clist_d->list_op = CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID;
+ break;
+ case CT_UG_REQUEST_CHECK:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val);
+ if (val)
+ {
+ clist_d->list_op = CT_GET_LIST_PERSON_OF_ADDRBOOK_ID;
+ clist_d->base_ab = atoi(val);
+ free(val);
+ }
+ else
+ {
+ service_get_extra_data(service, CT_UG_BUNDLE_MAX, &val);
+ if (val)
+ {
+ clist_d->cnt_max_check = atoi(val);
+ free(val);
+ }
+ }
+ break;
+ case CT_UG_REQUEST_CHECK_FOR_NUMBER:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val);
+ if (val)
+ {
+ clist_d->list_op =
+ CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID;
+ clist_d->base_ab = atoi(val);
+ free(val);
+ }
+ else
+ {
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_NUMBER;
+ service_get_extra_data(service, CT_UG_BUNDLE_MAX, &val);
+ if (val)
+ clist_d->cnt_max_check = atoi(val);
+ free(val);
+ }
+ break;
+ case CT_UG_REQUEST_CHECK_FOR_EMAIL:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val);
+ if (val)
+ {
+ clist_d->list_op =
+ CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID;
+ clist_d->base_ab = atoi(val);
+ free(val);
+ }
+ else
+ {
+ clist_d->list_op = CT_GET_LIST_ALL_PERSON_HAD_EMAIL;
+ service_get_extra_data(service, CT_UG_BUNDLE_MAX, &val);
+ if (val)
+ clist_d->cnt_max_check = atoi(val);
+ free(val);
+ }
+ break;
+ case CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL:
+ val = NULL;
+ service_get_extra_data(service, CT_UG_BUNDLE_ACCOUNTID, &val);
+ if (val)
+ {
+ clist_d->list_op =
+ CT_GET_LIST_PERSON_HAD_NUMBER_OR_EMAIL_OF_ADDRBOOK_ID;
+ clist_d->base_ab = atoi(val);
+ free(val);
+ }
+ else
+ {
+ clist_d->list_op =
+ CT_GET_LIST_ALL_PERSON_HAD_NUMBER_OR_EMAIL;
+ service_get_extra_data(service, CT_UG_BUNDLE_MAX, &val);
+ if (val)
+ clist_d->cnt_max_check = atoi(val);
+ free(val);
+ }
+ break;
+ break;
+ case PH_UG_REQUEST_SET_WITH_IMG:
+ case PH_UG_REQUEST_SET_WITH_RINGTONE:
+ case CT_UG_REQUEST_SAVE_IMG:
+ case CT_UG_REQUEST_SAVE_RINGTONE:
+ service_get_extra_data(service, CT_UG_BUNDLE_PATH,
+ &clist_d->ug_data);
+ if (CT_UG_REQUEST_SAVE_IMG == clist_d->ug_request)
+ clist_d->list_op =
+ CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID;
+ if (-1 == access(clist_d->ug_data, R_OK))
+ {
+ ERR("Invalid filepath(%s)", clist_d->ug_data);
+ return -2;
+ }
+ break;
+ default:
+ ERR("Invalid request(%d)", clist_d->ug_request);
+ return -1;
+ }
+ }
+ return 0;
+}
+
+static void list_img_crop_result_for_add(ui_gadget_h ug, service_h service,
+ void *data)
+{
+ PH_TRACE;
+ contacts_record_h record_image = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) data;
+
+ p_retm_if(NULL == ug || NULL == data, "ug or data is NULL");
+
+ if (service)
+ {
+ char *normal = NULL;
+ char *full = NULL;
+
+ service_get_extra_data(service, "crop_image_path", &normal);
+ p_retm_if(!normal, "return value is NULL.\n");
+
+ service_get_extra_data(service, "image_path", &full);
+ record_image = ctui_get_record_image(cdetail_d->contact);
+
+ err = contacts_record_set_str(record_image, _contacts_image.path,
+ normal);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ free(normal);
+ free(full);
+ }
+ cdetail_d->only_input = true;
+ ctui_create_input_view(cdetail_d);
+}
+
+static void list_destory_detail_child_ug(ui_gadget_h ug, void *priv)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d = (ct_detail_data *) priv;
+ p_retm_if(NULL == ug, "ug is NULL");
+ ug_destroy(ug);
+
+ p_retm_if(NULL == priv, "priv is NULL");
+ cdetail_d->child_ug = NULL;
+}
+
+void ct_list_destroy_child_ug(void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data*) data;
+ clist_d->child_ug = NULL;
+}
+
+API void ctui_list_update_with_data(ph_view_info *view_info, void *data,
+ int person_id, int grp_id, int ab_id)
+{
+ PH_TRACE;
+ ct_detail_data *cdetail_d;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ struct ug_cbs cbs = { 0 };
+
+ cdetail_d = (ct_detail_data *) calloc(1, sizeof(ct_detail_data));
+ p_retm_if(!cdetail_d, "cdetail_d is NULL, Not enough memory");
+
+ cdetail_d->win = view_info->win;
+ cdetail_d->navi = view_info->navi;
+ cdetail_d->ug = view_info->ug;
+ cdetail_d->prev_navi_item = elm_naviframe_top_item_get(view_info->navi);
+ cdetail_d->prev_view_data = data;
+ cdetail_d->person_id = person_id;
+ cdetail_d->base_grp = grp_id;
+ cdetail_d->base_ab = ab_id;
+ cdetail_d->ug_request = view_info->ug_request;
+
+ if (person_id)
+ {
+ Eina_List *list_contact;
+ err = contacts_db_get_record(_contacts_person._uri, person_id,
+ &(cdetail_d->person));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ list_contact = ctui_person_get_writable_contact_list(person_id);
+ if (NULL == list_contact)
+ {
+ err = contacts_record_create(_contacts_contact._uri,
+ &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+ }
+ else
+ {
+ err = contacts_record_clone((contacts_record_h) list_contact->data,
+ &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_clone() Failed(%d)", err);
+ ctui_free_record_list(list_contact);
+ }
+ }
+
+ if (NULL == cdetail_d->contact)
+ {
+ err = contacts_record_create(_contacts_contact._uri,
+ &(cdetail_d->contact));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+ }
+
+ switch (view_info->ug_request)
+ {
+ //case PH_UG_REQUEST_SET_WITH_NUM:
+ case CT_UG_REQUEST_UPDATE_WITH_NUM:
+ err = contacts_record_create(_contacts_number._uri, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_str(record, _contacts_number.number,
+ view_info->ug_data);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_set_int(record, _contacts_number.type,
+ CONTACTS_NUMBER_TYPE_CELL);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(cdetail_d->contact,
+ _contacts_contact.number, record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_add_child_record() Failed(%d)", err);
+ break;
+ //case PH_UG_REQUEST_SET_WITH_EMAIL:
+ case CT_UG_REQUEST_UPDATE_WITH_EMAIL:
+ err = contacts_record_create(_contacts_email._uri, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_str(record, _contacts_email.email,
+ view_info->ug_data);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(cdetail_d->contact,
+ _contacts_contact.email, record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_add_child_record() Failed(%d)", err);
+ break;
+ //case PH_UG_REQUEST_SET_WITH_WEB:
+ case CT_UG_REQUEST_UPDATE_WITH_WEB:
+ err = contacts_record_create(_contacts_url._uri, &record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_create() Failed(%d)", err);
+
+ err = contacts_record_set_str(record, _contacts_url.url,
+ view_info->ug_data);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_record_add_child_record(cdetail_d->contact,
+ _contacts_contact.url, record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_add_child_record() Failed(%d)", err);
+ break;
+ case CT_UG_REQUEST_UPDATE_CONTACT:
+ break;
+ case PH_UG_REQUEST_SET_WITH_IMG:
+ case CT_UG_REQUEST_SAVE_IMG: //only handle for add
+ cbs.result_cb = list_img_crop_result_for_add;
+ cbs.destroy_cb = list_destory_detail_child_ug;
+ cbs.priv = cdetail_d;
+ cdetail_d->child_ug = phone_image_crop_ug(cdetail_d->ug,
+ view_info->ug_data, &cbs);
+ return;
+ case PH_UG_REQUEST_SET_WITH_RINGTONE:
+ case CT_UG_REQUEST_SAVE_RINGTONE: //only handle for add
+ err = contacts_record_set_str(cdetail_d->contact,
+ _contacts_contact.ringtone_path, view_info->ug_data);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+ break;
+ default:
+ ERR("Invalid type(%d)", view_info->ug_request);
+ break;
+ }
+ cdetail_d->only_input = true;
+ ctui_create_input_view(cdetail_d);
+}
+
+void ct_list_call(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_list_data *clist_d;
+ ct_person_list *person_info = (ct_person_list *) data;
+ p_retm_if(NULL == person_info, "parameter(person_info) is NULL");
+ p_retm_if(NULL == person_info->number || '\0' == *person_info->number,
+ "number is NULL");
+ phone_launch_voice_call(person_info->id, person_info->number);
+
+ clist_d = (ct_list_data *) evas_object_data_get(obj, "clist_d");
+ if (clist_d)
+ ctui_list_set_unsweep(clist_d);
+}
+
+void ct_list_msg(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_list_data *clist_d;
+ ct_person_list *person_info = (ct_person_list *) data;
+
+ p_retm_if(NULL == data, "parameter(person_info) is NULL");
+ p_retm_if(NULL == person_info->number || '\0' == *person_info->number,
+ "number is NULL");
+
+ clist_d = (ct_list_data *) evas_object_data_get(obj, "clist_d");
+ p_retm_if(NULL == clist_d, "evas_object_data_get() return NULL");
+
+ clist_d->child_ug = ctui_msg_ug(clist_d->ug, person_info->number,
+ NULL, ct_list_destroy_child_ug, clist_d);
+
+ ctui_list_set_unsweep(clist_d);
+}
+
+void ct_list_popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_list_data *clist_d;
+
+ clist_d = (ct_list_data *) evas_object_data_get((Evas_Object *) data, "clist_d");
+ p_retm_if(NULL == clist_d, "evas_object_data_get(clist_d) return NULL");
+ evas_object_del(clist_d->popup);
+ clist_d->popup = NULL;
+}
+
+static void list_sweep_delete_contact(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ct_list_data *clist_d;
+ contacts_record_h record = NULL;
+ int contact_id = 0;
+
+ PH_DBG("##### [TSP_TEST] list->sweep delete start#####");
+
+ clist_d = (ct_list_data *) evas_object_data_get(obj, "clist_d");
+ p_retm_if(NULL == clist_d, "evas_object_data_get() return NULL");
+ evas_object_del(clist_d->popup);
+ clist_d->popup = NULL;
+
+ evas_object_data_set(clist_d->navi, "ct_list_update_ui", (void *) 1);
+
+ err = contacts_db_get_record(_contacts_person._uri, (int) data, &record);
+ p_retm_if(err != CONTACTS_ERROR_NONE, "contacts_db_get_record() fail");
+ err = contacts_record_get_int(record, _contacts_person.display_contact_id,
+ &contact_id);
+ p_retm_if(err != CONTACTS_ERROR_NONE, "contacts_record_get_int() fail");
+ err = contacts_db_delete_record(_contacts_person._uri, (int) data);
+ if (CONTACTS_ERROR_NONE == err)
+ phone_show_tickernoti(S_(PH_SYS_POP_DELETED));
+ else
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+}
+
+void ct_list_sweep_del_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int id;
+ ct_list_data *clist_d;
+ Evas_Object *btn;
+
+ clist_d = (ct_list_data *) evas_object_data_get(obj, "clist_d");
+ p_retm_if(NULL == clist_d, "evas_object_data_get() return NULL");
+
+ id = (int) data;
+ btn = phone_create_confirm_popup(&clist_d->popup, clist_d->win,
+ S_(PH_SYS_POP_DELETE_Q), list_sweep_delete_contact,
+ (void *) id);
+ evas_object_data_set(btn, "clist_d", clist_d);
+
+ ctui_list_set_unsweep(clist_d);
+}
+
+void ct_list_get_title(ct_list_data *clist_d, int list_op, int id_ab,
+ int id_grp)
+{
+ PH_TRACE;
+ char *title = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ // TODO: Fixme
+ switch (list_op)
+ {
+ case CT_GET_LIST_ALL_PERSON:
+ case CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID:
+ case CT_GET_LIST_ALL_PERSON_HAD_EMAIL:
+ case CT_GET_LIST_ALL_PERSON_HAD_NUMBER:
+ {
+ char buf[PH_TEXT_SHORT_LEN];
+ snprintf(buf, sizeof(buf), "%s (%d)",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_ALL_CONTACTS),
+ clist_d->cnt_list_total);
+ clist_d->title = strdup(buf);
+ }
+ break;
+ case CT_GET_LIST_PERSON_OF_ADDRBOOK_ID:
+ case CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID:
+ case CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID:
+ if (0 < id_ab)
+ {
+ char temp[PH_TEXT_MAX_LEN];
+ temp[0] = '\0';
+ ctui_get_addressbook_name(id_ab, temp, sizeof(temp));
+ if (*temp)
+ title = strdup(temp);
+ }
+ else
+ title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE));
+ clist_d->sub_title = title;
+ clist_d->title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_ALL_CONTACTS));
+ break;
+ case CT_GET_LIST_PERSON_OF_GROUP_ID:
+ case CT_GET_LIST_PERSON_HAD_NUMBER_OF_GROUP_ID:
+ case CT_GET_LIST_PERSON_HAD_EMAIL_OF_GROUP_ID:
+ err = contacts_db_get_record(_contacts_group._uri, id_grp, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_record_get() Failed(%d)", err);
+
+ clist_d->title = SAFE_STRDUP(phone_get_group_name(record));
+
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ if (0 < id_ab)
+ {
+ char temp[PH_TEXT_MAX_LEN];
+ temp[0] = '\0';
+ ctui_get_addressbook_name(id_ab, temp, sizeof(temp));
+ if (*temp)
+ title = strdup(temp);
+ }
+ else
+ title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE));
+ clist_d->sub_title = title;
+ break;
+ case CT_GET_LIST_PERSON_NOT_ASSIGNED_OF_ADDRBOOK_ID:
+ case CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OF_ADDRBOOK_ID:
+ case CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_EMAIL_OF_ADDRBOOK_ID:
+ clist_d->title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_NOT_ASSIGNED));
+ if (0 < id_ab)
+ {
+ char temp[PH_TEXT_MAX_LEN];
+ temp[0] = '\0';
+ ctui_get_addressbook_name(id_ab, temp, sizeof(temp));
+ if (*temp)
+ title = strdup(temp);
+ }
+ else
+ title = strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE));
+ clist_d->sub_title = title;
+ break;
+
+ }
+}
+
+static void __list_add_contacts_to_favorite(ct_list_data *clist_d);
+
+static void __list_add_contacts_to_favorite_cb(int err, void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ ph_progress_info *p_info = NULL;
+
+ p_retm_if(NULL == clist_d, "Invalid parameter(clist_d is NULL)");
+ p_info = clist_d->p_info;
+ p_retm_if(NULL == p_info, "Invalid parameter(p_info is NULL)");
+
+ if (p_info->update_list)
+ {
+ contacts_list_destroy(p_info->update_list, true);
+ p_info->update_list = NULL;
+ }
+
+ if (CONTACTS_ERROR_NONE != err || p_info->alive == false)
+ {
+ if (p_info->popup)
+ {
+ evas_object_del(p_info->popup);
+ p_info->popup = NULL;
+ }
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+ free(p_info);
+ clist_d->p_info = NULL;
+ clist_d->updating = false;
+ elm_naviframe_item_pop_to((Elm_Object_Item *)
+ evas_object_data_get(clist_d->navi, NAVI_ITEM_POP));
+ return;
+ }
+ else if (p_info->cnt == p_info->cnt_checked_total)
+ {
+ if (p_info->popup)
+ {
+ evas_object_del(p_info->popup);
+ p_info->popup = NULL;
+ }
+ phone_show_tickernoti(S_(CT_SYS_POP_SUCCESS));
+ free(p_info);
+ clist_d->p_info = NULL;
+ elm_naviframe_item_pop_to((Elm_Object_Item *)
+ evas_object_data_get(clist_d->navi, NAVI_ITEM_POP));
+ return;
+ }
+ else
+ {
+ __list_add_contacts_to_favorite(clist_d);
+ }
+
+}
+
+static void __list_add_contacts_to_favorite(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ const int LIST_BULK_LENGTH = 50;
+ int count = 0;
+ int base_count = 0;
+ double value = 0.0;
+ char percent_total[PH_TEXT_MAX_LEN + 1] = { 0, };
+ char percent[PH_TEXT_MAX_LEN + 1] = { 0, };
+ ph_progress_info *p_info = NULL;
+ contacts_record_h record = NULL;
+ contacts_list_h list = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ Eina_List *l;
+ void *v_person_info;
+
+ p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL");
+ p_info = clist_d->p_info;
+ p_retm_if(NULL == p_info, "parameter(p_info) is NULL");
+
+ err = contacts_list_create(&list);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_list_create() Failed(%d)",
+ err);
+
+ EINA_LIST_FOREACH(clist_d->list_check_info, l, v_person_info)
+ {
+ ct_person_list *person_info = (ct_person_list *) v_person_info;
+ if (NULL == person_info)
+ continue;
+ if (base_count < p_info->cnt)
+ {
+ base_count++;
+ continue;
+ }
+
+ err = contacts_db_get_record(_contacts_person._uri, person_info->id,
+ &record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_get_record() Failed(%d)", err);
+ p_info->result = FALSE;
+ p_info->completed = true;
+ break;
+ }
+ err = contacts_record_set_bool(record, _contacts_person.is_favorite,
+ true);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_set_bool() Failed(%d)", err);
+ p_info->result = FALSE;
+ p_info->completed = true;
+ break;
+ }
+
+ err = contacts_list_add(list, record);
+
+ count++;
+ if (LIST_BULK_LENGTH == count
+ || (count + p_info->cnt) == p_info->cnt_checked_total)
+ {
+ p_info->cnt += count;
+ break;
+ }
+
+ }
+ value = (double) p_info->cnt / (double) p_info->cnt_checked_total;
+ elm_progressbar_value_set(p_info->progressbar, value);
+ snprintf(percent, sizeof(percent), "%d%%",
+ (int) (100.0 * (double) p_info->cnt
+ / (double) p_info->cnt_checked_total));
+ snprintf(percent_total, sizeof(percent_total), "%d/%d", p_info->cnt,
+ p_info->cnt_checked_total);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext1", percent);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext2", percent_total);
+
+ p_info->update_list = list;
+ contacts_db_update_records_async(list, __list_add_contacts_to_favorite_cb,
+ clist_d);
+}
+
+void ct_list_add_contacts_to_favorite(Evas_Object *win, Evas_Object *navi,
+ int cnt)
+{
+ PH_TRACE;
+ ct_list_data *clist_d;
+ ph_progress_info *p_info;
+
+ clist_d = (ct_list_data *) evas_object_data_get(navi, "favor_list_d");
+ p_retm_if(NULL == clist_d, "evas_object_data_get return NULL");
+
+ p_retm_if(clist_d->p_info, "thread is running");
+
+ p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info));
+ p_retm_if(NULL == p_info, "calloc return NULL");
+
+ clist_d->p_info = p_info;
+ p_info->cnt_checked_total = cnt;
+ p_info->alive = true;
+ p_info->result = TRUE;
+ p_info->popup = phone_progressbar_popup(win, p_info,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_ADDING_ING));
+ __list_add_contacts_to_favorite(clist_d);
+}
+
+static void __list_add_group_relation(int group_id, int person_id,
+ contacts_list_h list_result)
+{
+ PH_TRACE;
+ contacts_record_h record_group = NULL;
+ contacts_list_h list = NULL;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ p_retm_if(group_id <= 0, "Invalid parameter(group_id is %d)", group_id);
+ p_retm_if(person_id <= 0, "Invalid parameter(person_id is %d)", person_id);
+ p_retm_if(NULL == list_result, "Invalid parameter(list is NULL)");
+
+ do
+ {
+ int address_book_id = 0;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_db_get_record(_contacts_group._uri, group_id,
+ &record_group)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_record_get_int(record_group,
+ _contacts_group.address_book_id, &address_book_id)))
+ break;
+
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_create(_contacts_contact._uri, &query)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_filter_create(_contacts_contact._uri,
+ &filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_filter_add_int(filter,
+ _contacts_contact.address_book_id, CONTACTS_MATCH_EQUAL,
+ address_book_id)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_filter_add_operator(filter,
+ CONTACTS_FILTER_OPERATOR_AND)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_filter_add_int(filter,
+ _contacts_contact.person_id, CONTACTS_MATCH_EQUAL,
+ person_id)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_query_set_filter(query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_db_get_records_with_query(query, 0, 0, &list)))
+ break;
+
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ contacts_record_h record = NULL;
+ contacts_record_h record_clone = NULL;
+ contacts_record_h record_group_relation = NULL;
+ if (CONTACTS_ERROR_NONE != (err =
+ contacts_list_get_current_record_p(list, &record)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_record_clone(record, &record_clone)))
+ {
+ ERR("contacts_record_clone() Failed(%d)", err);
+ break;
+ }
+ if (CONTACTS_ERROR_NONE
+ != (err = contacts_record_create(
+ _contacts_group_relation._uri,
+ &record_group_relation)))
+ {
+ ERR("contacts_record_create() Failed(%d)", err);
+ break;
+ }
+ contacts_record_set_int(record_group_relation,
+ _contacts_group_relation.group_id, group_id);
+ contacts_record_add_child_record(record_clone,
+ _contacts_contact.group_relation, record_group_relation);
+ contacts_list_add(list_result, record_clone);
+
+ err = contacts_list_next(list);
+ }
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+ contacts_list_destroy(list, true);
+ contacts_record_destroy(record_group, true);
+ return;
+ }
+ while (0);
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+ contacts_list_destroy(list, true);
+ contacts_record_destroy(record_group, true);
+ return;
+}
+
+static void __list_add_contacts_to_group(ct_list_data *clist_d);
+
+static void __list_add_contacts_to_group_cb(int err, void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ ph_progress_info *p_info = NULL;
+
+ p_retm_if(NULL == clist_d, "Invalid parameter(clist_d is NULL)");
+ p_info = clist_d->p_info;
+ p_retm_if(NULL == p_info, "Invalid parameter(p_info is NULL)");
+
+ if (p_info->update_list)
+ {
+ contacts_list_destroy(p_info->update_list, true);
+ p_info->update_list = NULL;
+ }
+
+ if (CONTACTS_ERROR_NONE != err || p_info->alive == false)
+ {
+ char *err_msg = NULL;
+ if (p_info->popup)
+ {
+ evas_object_del(p_info->popup);
+ p_info->popup = NULL;
+ }
+ switch (err)
+ {
+ case CONTACTS_ERROR_DB:
+ err_msg = (char *) T_(CT_GET_TEXT_ERR, CTTEXT_ERR_DB_LOCKED);
+ break;
+ case CONTACTS_ERROR_FILE_NO_SPACE:
+ err_msg = (char *) S_(CT_SYS_POP_NOT_ENOUGH_MEMORY);
+ break;
+ default:
+ err_msg = (char *) S_(PH_SYS_POP_FAILED);
+ break;
+ }
+
+ phone_show_tickernoti(err_msg);
+ free(p_info);
+ clist_d->p_info = NULL;
+ clist_d->updating = false;
+ Elm_Object_Item *item = (Elm_Object_Item *)
+ evas_object_data_get(clist_d->navi, NAVI_ITEM_POP);
+ if (item)
+ {
+ elm_naviframe_item_pop_to(item);
+ }
+ else
+ {
+ elm_naviframe_item_pop(clist_d->navi);
+ }
+ return;
+ }
+ else if (p_info->cnt == p_info->cnt_checked_total)
+ {
+ if (p_info->popup)
+ {
+ evas_object_del(p_info->popup);
+ p_info->popup = NULL;
+ }
+ phone_show_tickernoti(S_(CT_SYS_POP_SUCCESS));
+ free(p_info);
+ clist_d->p_info = NULL;
+ Elm_Object_Item *item = (Elm_Object_Item *)
+ evas_object_data_get(clist_d->navi, NAVI_ITEM_POP);
+ if (item)
+ {
+ elm_naviframe_item_pop_to(item);
+ }
+ else
+ {
+ elm_naviframe_item_pop(clist_d->navi);
+ }
+ return;
+ }
+ else
+ {
+ __list_add_contacts_to_group(clist_d);
+ }
+}
+
+void ct_list_add_contacts_to_group_without_progressbar_cb(int err, void *data)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) data;
+ p_retm_if(NULL == clist_d, "Invalid parameter(clist_d is NULL)");
+
+ PH_DBG("err = %d", err);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ clist_d->updating = false;
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+ }
+ else if (clist_d->update_add_list)
+ {
+ contacts_list_destroy(clist_d->update_add_list, true);
+ clist_d->update_add_list = NULL;
+
+ phone_show_tickernoti(S_(CT_SYS_POP_SUCCESS));
+ }
+
+ elm_naviframe_item_pop(clist_d->navi);
+}
+
+void ct_list_add_contacts_to_group_without_progressbar(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL");
+ Eina_List *l = NULL;
+ void *v_person_info = NULL;
+ contacts_list_h list = NULL;
+
+ int err = contacts_list_create(&list);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_list_create() Failed(%d)", err);
+ EINA_LIST_FOREACH(*clist_d->list_grp_person, l, v_person_info)
+ {
+ ct_person_list *person_info = (ct_person_list *) v_person_info;
+ if (person_info)
+ {
+ if (person_info->checked)
+ {
+ PH_DBG("person_info->display = %s", person_info->display);
+ __list_add_group_relation(clist_d->base_grp, person_info->id, list);
+ }
+ }
+ }
+
+ unsigned int count = 0;
+ contacts_list_get_count(list, &count);
+ if (count)
+ {
+ clist_d->update_add_list = list;
+ }
+ else
+ {
+ contacts_list_destroy(clist_d->update_add_list, true);
+ clist_d->update_add_list = NULL;
+ }
+}
+
+static void __list_add_contacts_to_group(ct_list_data *clist_d)
+{
+ PH_TRACE;
+ const int LIST_BULK_LENGTH = 50;
+ int count = 0;
+ int base_count = 0;
+ double value = 0.0;
+ char percent_total[PH_TEXT_MAX_LEN + 1] = { 0, };
+ char percent[PH_TEXT_MAX_LEN + 1] = { 0, };
+
+ contacts_list_h list = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ ph_progress_info *p_info = NULL;
+ Eina_List *l = NULL;
+ void *v_person_info = NULL;
+
+
+ p_retm_if(NULL == clist_d, "parameter(clist_d) is NULL");
+ p_info = clist_d->p_info;
+ p_retm_if(NULL == p_info, "parameter(p_info) is NULL");
+
+ err = contacts_list_create(&list);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_list_create() Failed(%d)",
+ err);
+
+ EINA_LIST_FOREACH(clist_d->list, l, v_person_info)
+ {
+ ct_person_list *person_info = (ct_person_list *) v_person_info;
+ if (NULL == person_info)
+ continue;
+
+ if (person_info->checked)
+ {
+ if (base_count < p_info->cnt)
+ {
+ base_count++;
+ continue;
+ }
+
+ __list_add_group_relation(clist_d->base_grp, person_info->id, list);
+
+ count++;
+ if (LIST_BULK_LENGTH == count
+ || (count + p_info->cnt) == p_info->cnt_checked_total)
+ {
+ p_info->cnt += count;
+ break;
+ }
+ }
+ }
+
+ value = (double) p_info->cnt / (double) p_info->cnt_checked_total;
+ elm_progressbar_value_set(p_info->progressbar, value);
+ snprintf(percent, sizeof(percent), "%d%%",
+ (int) (100.0 * (double) p_info->cnt
+ / (double) p_info->cnt_checked_total));
+ snprintf(percent_total, sizeof(percent_total), "%d/%d", p_info->cnt,
+ p_info->cnt_checked_total);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext1", percent);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext2", percent_total);
+
+ p_info->update_list = list;
+ contacts_db_update_records_async(list, __list_add_contacts_to_group_cb,
+ clist_d);
+}
+
+void ct_list_add_contacts_to_group(Evas_Object *win, Evas_Object *navi, int cnt)
+{
+ PH_TRACE;
+ ct_list_data *clist_d;
+ ph_progress_info *p_info;
+
+ clist_d = (ct_list_data *) evas_object_data_get(navi, "gadd_list_d");
+ p_retm_if(NULL == clist_d, "evas_object_data_get return NULL");
+
+ p_retm_if(clist_d->p_info, "thread is running");
+
+ p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info));
+ p_retm_if(NULL == p_info, "calloc return NULL");
+
+ clist_d->p_info = p_info;
+ p_info->cnt_checked_total = cnt;
+ p_info->alive = true;
+ p_info->result = TRUE;
+ p_info->popup = phone_progressbar_popup(win, p_info,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_ADDING_MEMBERS_TO_GROUP));
+ __list_add_contacts_to_group(clist_d);
+}
+
+
+void ct_list_add_contacts(Evas_Object *win, Evas_Object *navi, int cnt)
+{
+ PH_TRACE;
+ p_retm_if(NULL == navi, "navi return NULL");
+ ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(navi, "gadd_list_d");
+ p_retm_if(NULL == clist_d, "evas_object_data_get return NULL");
+
+ if (clist_d->list_grp_person)
+ {
+ Eina_List *l = NULL;
+ void *v_person_info = NULL;
+ EINA_LIST_FOREACH(clist_d->list, l, v_person_info)
+ {
+ ct_person_list *person_info = (ct_person_list *) v_person_info;
+ if (person_info)
+ {
+ if (person_info->checked)
+ {
+ PH_DBG("person_info->display = %s", person_info->display);
+ *clist_d->list_grp_person = eina_list_append(
+ *clist_d->list_grp_person, person_info);
+ person_info->is_in_group = true;
+ }
+ }
+ }
+ }
+
+ elm_naviframe_item_pop_to((Elm_Object_Item *)
+ evas_object_data_get(navi, NAVI_ITEM_POP));
+}
diff --git a/lib/list/ct-list-utils.h b/lib/list/ct-list-utils.h
new file mode 100755
index 0000000..9dd6aa7
--- /dev/null
+++ b/lib/list/ct-list-utils.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CONTACTS_LIST_UTILS_H__
+#define __CONTACTS_LIST_UTILS_H__
+
+/**
+ * Helper-like functionality used in the following managing contacts routines:
+ * * add specified contact to group/favorites
+ * * create/destroy user-gadgets for calls and messages
+ */
+
+int ct_list_parse_bundle(service_h service, ct_list_data* clist_d);
+void ct_list_call(void *data, Evas_Object *obj, void *event_info);
+void ct_list_msg(void *data, Evas_Object *obj, void *event_info);
+void ct_list_popup_hide_cb(void *data, Evas_Object *obj, void *event_info);
+void ct_list_sweep_del_cb(void *data, Evas_Object *obj, void *event_info);
+void ct_list_get_title(ct_list_data *data, int list_op, int id_ab, int id_grp);
+void ct_list_add_contacts_to_group(Evas_Object *win, Evas_Object *navi,
+ int cnt);
+
+/**
+ * Adds group contacts to database.
+ * @param clist_d Contact list data.
+ */
+void ct_list_add_contacts_to_group_without_progressbar(ct_list_data *clist_d);
+
+/**
+ * The callback function to get the result of contacts_db_update_records_async operation.
+ * @param error Error code for batch operation.
+ * @param user_data The user data passed from the batch operation.
+ */
+void ct_list_add_contacts_to_group_without_progressbar_cb(int err, void *data);
+/**
+ * Add checked contacts to group.
+ * @param win a window object.
+ * @param navi a naviframe object.
+ * @param cnt the number of checked contacts.
+ */
+void ct_list_add_contacts(Evas_Object *win, Evas_Object *navi, int cnt);
+
+void ct_list_add_contacts_to_favorite(Evas_Object *win, Evas_Object *navi,
+ int cnt);
+void ct_list_destroy_child_ug(void *data);
+
+#endif //__CONTACTS_LIST_UTILS_H__
diff --git a/lib/list/ct-list-view-ug.cpp b/lib/list/ct-list-view-ug.cpp
new file mode 100755
index 0000000..0b1164d
--- /dev/null
+++ b/lib/list/ct-list-view-ug.cpp
@@ -0,0 +1,888 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <ui-gadget-module.h>
+
+#include "phone.h"
+#include "ct-list.h"
+#include "ct-detail.h"
+#include "ct-list-utils.h"
+#include "ct-list-edit-view.h"
+#include "ct-list-contact-view.h"
+#include "phone-common.h"
+#define MAX_SIZE_POPUP 300
+
+static void list_ug_nums_popup_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(obj, "clist_d");
+ int person_id = (int) evas_object_data_get(obj, "person_id");
+
+ if (CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request
+ || CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request)
+ {
+ Elm_Object_Item *item;
+ ct_person_list *person_info;
+
+ item = (Elm_Object_Item *) evas_object_data_get(obj, "item");
+ p_retm_if(NULL == item, "evas_object_data_get() return NULL");
+
+ person_info = (ct_person_list *) elm_object_item_data_get(item);
+ p_retm_if(NULL == person_info,
+ "elm_object_item_data_get() return NULL");
+
+ person_info->id_ret = (int) data;
+ person_info->id_ret_type = 1;
+ person_info->checked = !person_info->checked;
+ ct_list_item_checked_set(item, clist_d);
+ ctui_list_update_selection_info(clist_d);
+ ct_list_popup_hide_cb(obj, NULL, NULL);
+ }
+ else if (PH_UG_REQUEST_LAUNCH_VOICECALL == clist_d->ug_request)
+ {
+ char *num_info = (char*) elm_object_item_text_get((Elm_Object_Item *) event_info);
+ char *number;
+ strtok(num_info, " ");
+ number = strtok(NULL, " ");
+ PH_DBG("%s", number);
+ ct_list_popup_hide_cb(obj, NULL, NULL);
+ phone_launch_voice_call(person_id, number);
+ }
+ else
+ {
+ if (clist_d->service_operation)
+ phone_ug_return_value(clist_d->service_operation, 0, (int) data, 0,
+ 0);
+ else
+ phone_ug_return_id(clist_d->ug, person_id, (int) data, 0);
+ ug_destroy_me(clist_d->ug);
+ }
+
+}
+
+static void list_ug_emails_popup_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) evas_object_data_get(obj, "clist_d");
+ int contact_id = (int) evas_object_data_get(obj, "person_id");
+
+ if (CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request
+ || CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request)
+ {
+ Elm_Object_Item * item;
+ ct_person_list *person_info;
+
+ item = (Elm_Object_Item *) evas_object_data_get(obj, "item");
+ p_retm_if(NULL == item, "evas_object_data_get() return NULL");
+
+ person_info = (ct_person_list *) elm_object_item_data_get(item);
+ p_retm_if(NULL == person_info,
+ "elm_object_item_data_get() return NULL");
+
+ person_info->id_ret = (int) data;
+ person_info->id_ret_type = 2;
+ person_info->checked = !person_info->checked;
+ ct_list_item_checked_set(item, clist_d);
+ ctui_list_update_selection_info(clist_d);
+ ct_list_popup_hide_cb(obj, NULL, NULL);
+ }
+ else
+ {
+ if (clist_d->service_operation)
+ phone_ug_return_value(clist_d->service_operation, 0, 0, (int) data,
+ 0);
+ else
+ phone_ug_return_id(clist_d->ug, contact_id, 0, (int) data);
+
+ ug_destroy_me(clist_d->ug);
+ }
+}
+
+API Evas_Object* ctui_list_create_values_list(const char *view_uri,
+ Evas_Object *popup, Evas_Object *list, Eina_List *values,
+ void (*cb)(void *, Evas_Object *, void *))
+{
+ PH_TRACE;
+ int id;
+ int val_type;
+ char *email_str_p;
+ const char *type_str;
+ char buf[PH_TEXT_MAX_LEN];
+ Eina_List *l;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record = NULL;
+
+ if (NULL == list)
+ {
+ list = elm_list_add(popup);
+ evas_object_size_hint_max_set(list, -1, MAX_SIZE_POPUP * elm_config_scale_get()); // TODO : should be revise
+ }
+
+ EINA_LIST_FOREACH(values, l, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ if (NULL == record)
+ continue;
+
+ if (0 == strcmp(view_uri, _contacts_email._uri))
+ {
+ err = contacts_record_get_int(record, _contacts_email.id, &id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_get_int(record, _contacts_email.type,
+ &val_type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ type_str =
+ T_(CT_GET_TEXT_EMAIL_TYPE, ctui_get_email_type_index(val_type));
+
+ err = contacts_record_get_str_p(record, _contacts_email.email,
+ &email_str_p);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ snprintf(buf, sizeof(buf), "%s %s", type_str, email_str_p);
+ }
+ else
+ {
+ char num_type_str[PH_TEXT_MAX_LEN + 1];
+
+ err = contacts_record_get_int(record, _contacts_number.id, &id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ err = contacts_record_get_int(record, _contacts_number.type,
+ &val_type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+
+ ctui_get_number_type_str(record, val_type, num_type_str,
+ sizeof(num_type_str));
+
+ err = contacts_record_get_str_p(record, _contacts_number.number,
+ &email_str_p);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+
+ snprintf(buf, sizeof(buf), "%s %s", num_type_str, email_str_p);
+ }
+ elm_list_item_append(list, buf, NULL, NULL, cb, (void *) id);
+ }
+
+ elm_list_mode_set(list, ELM_LIST_EXPAND);
+ return list;
+}
+
+static Evas_Object* list_ug_create_popup_values_list(ct_list_data *clist_d,
+ ct_person_list *person_info)
+{
+ PH_TRACE;
+ Evas_Object *popup;
+ Evas_Object *list = NULL;
+ Evas_Object *btn;
+
+ popup = elm_popup_add(clist_d->navi);
+ elm_object_style_set(popup, "min_liststyle");
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ if (person_info->number_list)
+ list = ctui_list_create_values_list(_contacts_number._uri, popup, list,
+ person_info->number_list, list_ug_nums_popup_sel);
+ if (person_info->email_list)
+ list = ctui_list_create_values_list(_contacts_email._uri, popup, list,
+ person_info->email_list, list_ug_emails_popup_sel);
+
+ elm_object_content_set(popup, list);
+ evas_object_data_set(list, "clist_d", clist_d);
+ evas_object_data_set(list, "person_id", (void *) person_info->id);
+
+ btn = elm_button_add(popup);
+ elm_object_text_set(btn, S_(PH_SYS_POP_CLOSE));
+ elm_object_part_content_set(popup, "button1", btn);
+ elm_object_style_set(btn, "popup_button/default");
+ evas_object_smart_callback_add(btn, "clicked", ct_list_popup_hide_cb, list);
+
+ clist_d->popup = popup;
+ evas_object_show(popup);
+ return list;
+}
+
+static inline void list_ug_handle_select_number(ct_list_data *clist_d,
+ ct_person_list *person_info)
+{
+ PH_TRACE;
+ char *number_str_p = NULL;
+ int number_id;
+ Eina_List *list_contact;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ list_contact = ctui_person_get_contact_list(person_info->id);
+ p_retm_if(NULL == list_contact,
+ "ctui_person_get_contact_list() return NULL");
+
+ if (person_info->number_list == NULL)
+ person_info->number_list = ctui_person_get_number_list(list_contact);
+
+ if (person_info->number_list)
+ {
+ if (1 == eina_list_count(person_info->number_list))
+ {
+ record = (contacts_record_h) person_info->number_list->data;
+ if (PH_UG_REQUEST_LAUNCH_VOICECALL == clist_d->ug_request)
+ {
+ err = contacts_record_get_str_p(record, _contacts_number.number,
+ &number_str_p);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_str_p() Failed(%d)", err);
+ phone_launch_voice_call(person_info->id, number_str_p);
+ }
+ else
+ {
+ err = contacts_record_get_int(record, _contacts_number.id,
+ &number_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ if (clist_d->service_operation)
+ phone_ug_return_value(clist_d->service_operation, 0,
+ number_id, 0, 0);
+ else
+ phone_ug_return_id(clist_d->ug, person_info->id, number_id,
+ 0);
+ ug_destroy_me(clist_d->ug);
+ }
+ }
+ else
+ list_ug_create_popup_values_list(clist_d, person_info);
+ }
+ else
+ {
+ phone_show_popup(clist_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_NUMBER),
+ 1.5);
+ }
+ ctui_free_record_list(list_contact);
+}
+
+static inline void list_ug_handle_select_email(ct_list_data *clist_d,
+ ct_person_list *person_info)
+{
+ PH_TRACE;
+ int email_id;
+ Eina_List *list_contact;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ list_contact = ctui_person_get_contact_list(person_info->id);
+ p_retm_if(NULL == list_contact,
+ "ctui_person_get_contact_list() return NULL");
+
+ if (person_info->email_list == NULL)
+ person_info->email_list = ctui_person_get_email_list(list_contact);
+ if (person_info->email_list)
+ {
+ if (1 == eina_list_count(person_info->email_list))
+ {
+ record = (contacts_record_h) person_info->email_list->data;
+ err = contacts_record_get_int(record, _contacts_email.id,
+ &email_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ if (clist_d->service_operation)
+ phone_ug_return_value(clist_d->service_operation, 0, 0,
+ email_id, 0);
+ else
+ phone_ug_return_id(clist_d->ug, person_info->id, 0, email_id);
+ ug_destroy_me(clist_d->ug);
+ }
+ else
+ list_ug_create_popup_values_list(clist_d, person_info);
+ }
+ else
+ {
+ phone_show_popup(clist_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_EMAIL),
+ 1.5);
+ }
+ ctui_free_record_list(list_contact);
+}
+
+static inline void list_ug_handle_select_number_or_email(ct_list_data *clist_d,
+ ct_person_list *person_info)
+{
+ PH_TRACE;
+ int number_id;
+ int email_id;
+ int number_list_count = 0;
+ int email_list_count = 0;
+ Eina_List *list_contact;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ list_contact = ctui_person_get_contact_list(person_info->id);
+ p_retm_if(NULL == list_contact,
+ "ctui_person_get_contact_list() return NULL");
+
+ if (NULL == person_info->number_list)
+ person_info->number_list = ctui_person_get_number_list(list_contact);
+ if (NULL == person_info->email_list)
+ person_info->email_list = ctui_person_get_email_list(list_contact);
+
+ if (person_info->number_list)
+ number_list_count = eina_list_count(person_info->number_list);
+ if (person_info->email_list)
+ email_list_count = eina_list_count(person_info->email_list);
+
+ if (number_list_count == 0 && email_list_count == 0)
+ {
+ phone_show_popup(clist_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_EMAIL),
+ 1.5);
+ }
+ else if (number_list_count == 1 && email_list_count == 0)
+ {
+ record = (contacts_record_h) person_info->number_list->data;
+ err = contacts_record_get_int(record, _contacts_number.id, &number_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ if (clist_d->service_operation)
+ phone_ug_return_value(clist_d->service_operation, 0, number_id, 0,
+ 0);
+ else
+ phone_ug_return_id(clist_d->ug, person_info->id, number_id, 0);
+ ug_destroy_me(clist_d->ug);
+ }
+ else if (number_list_count == 0 && email_list_count == 1)
+ {
+ record = (contacts_record_h) person_info->email_list->data;
+ err = contacts_record_get_int(record, _contacts_email.id, &email_id);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ if (clist_d->service_operation)
+ phone_ug_return_value(clist_d->service_operation, 0, 0, email_id,
+ 0);
+ else
+ phone_ug_return_id(clist_d->ug, person_info->id, 0, email_id);
+ ug_destroy_me(clist_d->ug);
+ }
+ else
+ {
+ list_ug_create_popup_values_list(clist_d, person_info);
+ }
+ ctui_free_record_list(list_contact);
+}
+
+static inline void ct_list_ug_handle_select_vcard(ct_list_data *clist_d,
+ int person_id)
+{
+ PH_TRACE;
+ bool result = false;
+ char vcard_path[PH_TEXT_MAX_LEN + 1];
+
+ result = ctui_list_make_vcard(person_id, vcard_path, sizeof(vcard_path));
+ PH_DBG("%d, %s", person_id, vcard_path);
+ if (result == true)
+ {
+ if (clist_d->service_operation)
+ phone_ug_operation_return_vcard(clist_d->service_operation,
+ person_id, vcard_path);
+ else
+ phone_ug_return_vcard(clist_d->ug, person_id, vcard_path);
+ ug_destroy_me(clist_d->ug);
+ }
+ else
+ {
+ phone_show_popup(clist_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_CONTACTS),
+ 1.5);
+ }
+}
+
+static void list_ug_img_crop_result(ui_gadget_h ug, service_h service,
+ void *data)
+{
+ PH_TRACE;
+ Eina_List *list_writable_contact;
+ ct_list_data *clist_d = (ct_list_data *) data;
+
+ p_retm_if(NULL == ug || NULL == data, "ug or data is NULL");
+
+ if (service)
+ {
+ char *normal = NULL;
+ char *full = NULL;
+ void *data;
+ Eina_List *l;
+ contacts_record_h record = NULL;
+ contacts_record_h record_image = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ service_get_extra_data(service, "crop_image_path", &normal);
+ p_retm_if(NULL == normal, "return value is NULL.");
+ service_get_extra_data(service, "image_path", &full);
+
+ list_writable_contact = NULL;
+ list_writable_contact = ctui_person_get_writable_contact_list(
+ clist_d->selected_person_id);
+
+ if (list_writable_contact)
+ {
+ EINA_LIST_FOREACH(list_writable_contact, l, data)
+ {
+ record = (contacts_record_h) data;
+ if (NULL == record)
+ continue;
+
+ record_image = ctui_get_record_image(record);
+ if (NULL == record_image)
+ {
+ ERR("ctui_get_record_image() Failed(%d)", err);
+ break;
+ }
+
+ err = contacts_record_set_str(record_image,
+ _contacts_image.path, normal);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_db_update_record(record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_record() Failed(%d)", err);
+ }
+ ctui_free_record_list(list_writable_contact);
+ }
+
+ free(normal);
+ free(full);
+ }
+}
+
+void ct_list_ug_handle_check_for_number(Elm_Object_Item *item,
+ ct_list_data *clist_d)
+{
+ PH_TRACE;
+ ct_person_list *person_info;
+ Eina_List *list_contact;
+ Evas_Object *list_nums;
+ Eina_Bool all_check;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ person_info = (ct_person_list *) elm_object_item_data_get(item);
+ p_retm_if(NULL == person_info, "elm_object_item_data_get() return NULL");
+
+ list_contact = ctui_person_get_contact_list(person_info->id);
+ p_retm_if(NULL == list_contact,
+ "ctui_person_get_contact_list() return NULL");
+
+ if (NULL == person_info->number_list)
+ person_info->number_list = ctui_person_get_number_list(list_contact);
+
+ if (NULL == person_info->number_list)
+ {
+ Evas_Object *check;
+ ERR("ctui_person_get_number_list() return NULL");
+ ctui_free_record_list(list_contact);
+
+ phone_show_popup(clist_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_NUMBER),
+ 1.5);
+
+ check = elm_object_part_content_get(clist_d->select_all_layout,
+ "elm.icon");
+ p_retm_if(NULL == check, "elm_object_part_content_get() return NULL");
+
+ if (clist_d->cnt_list_total == clist_d->cnt_checked)
+ all_check = EINA_TRUE;
+ else
+ all_check = EINA_FALSE;
+
+ elm_check_state_set(check, all_check);
+ elm_genlist_item_update(item);
+ return;
+ }
+
+ if (1 == eina_list_count(person_info->number_list))
+ {
+ record = (contacts_record_h) person_info->number_list->data;
+ person_info->id_ret_type = 1;
+ err = contacts_record_get_int(record, _contacts_number.id,
+ &(person_info->id_ret));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ person_info->checked = !person_info->checked;
+ ct_list_item_checked_set(item, clist_d);
+ ctui_list_update_selection_info(clist_d);
+ }
+ else
+ {
+ list_nums = list_ug_create_popup_values_list(clist_d, person_info);
+ if (list_nums)
+ evas_object_data_set(list_nums, "item", item);
+ }
+ ctui_free_record_list(list_contact);
+}
+
+void ct_list_ug_handle_check_for_email(Elm_Object_Item *item,
+ ct_list_data *clist_d)
+{
+ PH_TRACE;
+ Eina_List *list_contact;
+ Evas_Object *list_emails;
+ ct_person_list *person_info;
+ Eina_Bool all_check;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ person_info = (ct_person_list *) elm_object_item_data_get(item);
+ p_retm_if(NULL == person_info, "elm_object_item_data_get() return NULL");
+
+ list_contact = ctui_person_get_contact_list(person_info->id);
+ p_retm_if(NULL == list_contact,
+ "ctui_person_get_contact_list() return NULL");
+
+ if (NULL == person_info->email_list)
+ person_info->email_list = ctui_person_get_email_list(list_contact);
+
+ if (NULL == person_info->email_list)
+ {
+ Evas_Object *check;
+ ERR("ctui_person_get_email_list() return NULL");
+ ctui_free_record_list(list_contact);
+
+ phone_show_popup(clist_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_EMAIL),
+ 1.5);
+
+ check = elm_object_part_content_get(clist_d->select_all_layout,
+ "elm.icon");
+ p_retm_if(NULL == check, "elm_object_part_content_get() return NULL");
+
+ if (clist_d->cnt_list_total == clist_d->cnt_checked)
+ all_check = EINA_TRUE;
+ else
+ all_check = EINA_FALSE;
+
+ elm_check_state_set(check, all_check);
+ elm_genlist_item_update(item);
+ return;
+ }
+
+ if (1 == eina_list_count(person_info->email_list))
+ {
+ record = (contacts_record_h) person_info->email_list->data;
+ person_info->id_ret_type = 2;
+ err = contacts_record_get_int(record, _contacts_email.id,
+ &(person_info->id_ret));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ person_info->checked = !person_info->checked;
+ ct_list_item_checked_set(item, clist_d);
+ ctui_list_update_selection_info(clist_d);
+ }
+ else
+ {
+ list_emails = list_ug_create_popup_values_list(clist_d, person_info);
+ if (list_emails)
+ evas_object_data_set(list_emails, "item", item);
+ }
+ ctui_free_record_list(list_contact);
+}
+
+void ct_list_ug_handle_check_for_number_or_email(Elm_Object_Item *item,
+ ct_list_data *clist_d)
+{
+ PH_TRACE;
+ int number_list_count = 0;
+ int email_list_count = 0;
+ Eina_List *list_contact;
+ Evas_Object *list;
+ ct_person_list *person_info;
+ Eina_Bool all_check;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+
+ person_info = (ct_person_list *) elm_object_item_data_get(item);
+ p_retm_if(NULL == person_info, "elm_object_item_data_get() return NULL");
+
+ list_contact = ctui_person_get_contact_list(person_info->id);
+ p_retm_if(NULL == list_contact,
+ "ctui_person_get_contact_list() return NULL");
+
+ if (NULL == person_info->email_list)
+ person_info->email_list = ctui_person_get_email_list(list_contact);
+ if (NULL == person_info->number_list)
+ person_info->number_list = ctui_person_get_number_list(list_contact);
+
+ if (person_info->number_list)
+ number_list_count = eina_list_count(person_info->number_list);
+
+ if (person_info->email_list)
+ email_list_count = eina_list_count(person_info->email_list);
+
+ if (0 == number_list_count && 0 == email_list_count)
+ {
+ Evas_Object *check;
+ ERR("ctui_person_get_email_list() return NULL");
+ ctui_free_record_list(list_contact);
+
+ phone_show_popup(clist_d->navi, T_(CT_GET_TEXT_ERR, CTTEXT_NO_EMAIL),
+ 1.5);
+
+ check = elm_object_part_content_get(clist_d->select_all_layout,
+ "elm.icon");
+ p_retm_if(NULL == check, "elm_object_part_content_get() return NULL");
+
+ if (clist_d->cnt_list_total == clist_d->cnt_checked)
+ all_check = EINA_TRUE;
+ else
+ all_check = EINA_FALSE;
+
+ elm_check_state_set(check, all_check);
+ elm_genlist_item_update(item);
+ return;
+ }
+
+ if (1 == number_list_count && 0 == email_list_count)
+ {
+ record = (contacts_record_h) person_info->number_list->data;
+ err = contacts_record_get_int(record, _contacts_number.id,
+ &(person_info->id_ret));
+ DBG("person_info->number_list->data = %i",person_info->id_ret);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ person_info->id_ret_type = 1;
+ person_info->checked = !person_info->checked;
+ ct_list_item_checked_set(item, clist_d);
+ ctui_list_update_selection_info(clist_d);
+ }
+ else if (0 == number_list_count && 1 == email_list_count)
+ {
+ record = (contacts_record_h) person_info->email_list->data;
+ err = contacts_record_get_int(record, _contacts_email.id,
+ &(person_info->id_ret));
+ DBG("person_info->number_list->data = %i",person_info->id_ret);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_get_int() Failed(%d)", err);
+ person_info->id_ret_type = 2;
+ person_info->checked = !person_info->checked;
+ ct_list_item_checked_set(item, clist_d);
+ ctui_list_update_selection_info(clist_d);
+ }
+ else
+ {
+ list = list_ug_create_popup_values_list(clist_d, person_info);
+ if (list)
+ evas_object_data_set(list, "item", item);
+ }
+
+ ctui_free_record_list(list_contact);
+}
+
+static void list_destory_child_ug(ui_gadget_h ug, void *priv)
+{
+ PH_TRACE;
+ ct_list_data *clist_d = (ct_list_data *) priv;
+ p_retm_if(NULL == ug, "ug is NULL");
+ ug_destroy(ug);
+
+ p_retm_if(NULL == priv, "priv is NULL");
+ clist_d->child_ug = NULL;
+ if (clist_d->ug)
+ ug_destroy_me(clist_d->ug);
+}
+
+void ct_list_ug_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ assert(event_info);
+ if (NULL != data && NULL != event_info)
+ {
+ ct_list_data *clist_d = static_cast<ct_list_data*>(data);
+ Elm_Object_Item *lastItem = clist_d->last_sweep_item;
+
+ bool isSweepedItemSelected = false;
+
+ if (NULL != lastItem)
+ {
+ elm_genlist_item_selected_set(lastItem, EINA_FALSE);
+ elm_genlist_item_decorate_mode_set(lastItem, "slide", EINA_FALSE);
+ elm_genlist_item_select_mode_set(lastItem, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ if (clist_d->fast_index)
+ {
+ evas_object_show(clist_d->fast_index);
+ elm_object_disabled_set(clist_d->fast_index, EINA_FALSE);
+ }
+ }
+
+ Elm_Object_Item *item = NULL;
+ item = static_cast<Elm_Object_Item*>(event_info);
+ if (NULL != item)
+ {
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ elm_genlist_item_decorate_mode_set(item, "slide", EINA_FALSE);
+ if (lastItem == item)
+ {
+ isSweepedItemSelected = true;
+ }
+ }
+ clist_d->last_sweep_item = NULL;
+
+ if (!isSweepedItemSelected)
+ {
+ int err = CONTACTS_ERROR_NONE;
+ int ret;
+ const char *err_msg;
+ contacts_record_h record = NULL;
+ struct ug_cbs cbs = { 0 };
+ ct_person_list *person_info;
+ ph_view_info *view_info;
+ Evas_Object *popup;
+
+ PH_DBG("##### [TSP_TEST] list->detail start #####");
+
+ if (CT_GET_LIST_VCARD == clist_d->list_op && CT_UG_REQUEST_CHECK != clist_d->ug_request)
+ {
+ Evas_Object *content;
+
+ p_retm_if(NULL == clist_d->vcard_path, "vcard_path is NULL");
+
+ person_info = (ct_person_list *) elm_object_item_data_get(item);
+ p_retm_if(NULL == person_info, "elm_object_item_data_get() returns NULL");
+
+ clist_d->idx_vcard = elm_genlist_item_index_get(item);
+
+ content = ctui_contacts_viewer(clist_d->win, clist_d->navi, clist_d->idx_vcard, clist_d->vcard_path);
+ if (NULL == content)
+ {
+ ERR("ctui_contacts_viewer() return NULL");
+ elm_exit();
+ }
+ return;
+ }
+
+ if (CT_LIST_MODE_EDIT == clist_d->list_mode)
+ {
+ person_info = (ct_person_list *) elm_object_item_data_get(item);
+ p_retm_if(NULL == person_info, "elm_object_item_data_get() returns NULL");
+
+ if (person_info->checked)
+ {
+ person_info->checked = !person_info->checked;
+ ct_list_item_checked_set(item, clist_d);
+ ctui_list_update_selection_info(clist_d);
+ return;
+ }
+
+ if (CT_UG_REQUEST_CHECK_FOR_NUMBER == clist_d->ug_request)
+ ct_list_ug_handle_check_for_number(item, clist_d);
+ else if (CT_UG_REQUEST_CHECK_FOR_EMAIL == clist_d->ug_request)
+ ct_list_ug_handle_check_for_email(item, clist_d);
+ else if (CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL == clist_d->ug_request)
+ ct_list_ug_handle_check_for_number_or_email(item, clist_d);
+ else
+ {
+ person_info->checked = !person_info->checked;
+ ct_list_item_checked_set(item, clist_d);
+ ctui_list_update_selection_info(clist_d);
+ }
+
+ return;
+ }
+
+ person_info = (ct_person_list *) elm_object_item_data_get(item);
+ p_retm_if(NULL == person_info, "elm_object_item_data_get() returns NULL");
+
+ PH_DBG("clist_d->ug_request = %d", clist_d->ug_request);
+ switch (clist_d->ug_request)
+ {
+ case CT_UG_REQUEST_LIST:
+ case CT_UG_REQUEST_LIST_WITH_BACK:
+ ret = ctui_create_detail_view(clist_d, person_info);
+ p_warn_if(ret < 0, "ctui_create_detail_view() Failed");
+ break;
+ case CT_UG_REQUEST_SELECT_PERSON:
+ if (clist_d->ug)
+ {
+ if (clist_d->service_operation)
+ phone_ug_return_value(clist_d->service_operation, person_info->id, 0, 0, 0);
+ else
+ phone_ug_return_id(clist_d->ug, person_info->id, 0, 0);
+ ug_destroy_me(clist_d->ug);
+ }
+ break;
+ case CT_UG_REQUEST_SELECT_NUMBER:
+ case PH_UG_REQUEST_LAUNCH_VOICECALL:
+ case CT_UG_REQUEST_SELECT_CONTACT_ADD_TO_HOME:
+ list_ug_handle_select_number(clist_d, person_info);
+ break;
+ case CT_UG_REQUEST_SELECT_EMAIL:
+ list_ug_handle_select_email(clist_d, person_info);
+ break;
+ case CT_UG_REQUEST_SELECT_NUMBER_OR_EMAIL:
+ list_ug_handle_select_number_or_email(clist_d, person_info);
+ break;
+ case CT_UG_REQUEST_SELECT_VCARD:
+ ct_list_ug_handle_select_vcard(clist_d, person_info->id);
+ break;
+ case CT_UG_REQUEST_SHARE_CONTACT_INFO:
+ ctui_create_share_info_ug_layout(clist_d->navi, person_info->id, clist_d->ug);
+ break;
+ case CT_UG_REQUEST_UPDATE_CONTACT:
+ case CT_UG_REQUEST_UPDATE_WITH_NUM:
+ case CT_UG_REQUEST_UPDATE_WITH_EMAIL:
+ case CT_UG_REQUEST_UPDATE_WITH_WEB:
+ view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info));
+ phone_set_view_info(view_info, clist_d->win, clist_d->navi, clist_d->ug, clist_d->ug_request, clist_d->cnt_max_check, clist_d->ug_data);
+ ctui_list_update_with_data(view_info, clist_d, person_info->id, clist_d->base_grp, clist_d->base_ab);
+ free(view_info);
+ break;
+ case PH_UG_REQUEST_SET_WITH_IMG:
+ case CT_UG_REQUEST_SAVE_IMG:
+ clist_d->selected_person_id = person_info->id;
+
+ cbs.result_cb = list_ug_img_crop_result;
+ cbs.destroy_cb = list_destory_child_ug;
+ cbs.priv = clist_d;
+ clist_d->child_ug = phone_image_crop_ug(clist_d->ug, clist_d->ug_data, &cbs);
+ break;
+ case PH_UG_REQUEST_SET_WITH_RINGTONE:
+ case CT_UG_REQUEST_SAVE_RINGTONE:
+ err = contacts_db_get_record(_contacts_person._uri, person_info->id, &record);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_db_get_record() Failed(%d)", err);
+
+ err = contacts_record_set_str(record, _contacts_person.ringtone_path, clist_d->ug_data);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_record_set_str() Failed(%d)", err);
+
+ err = contacts_db_update_record(record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_update_record() Failed(%d)", err);
+ ctui_create_contacts_error_popup(clist_d->navi, err);
+ }
+ else
+ {
+ err_msg = S_(CT_SYS_POP_SUCCESS);
+ popup = phone_show_popup(clist_d->navi, err_msg, 1.5);
+ evas_object_smart_callback_add(popup, "timeout", ctui_list_ug_hide_cb, clist_d->ug);
+ }
+ break;
+ default:
+ ERR("Invalid ug_request(%d)", clist_d->ug_request);
+ break;
+ }
+ }
+ }
+}
diff --git a/lib/list/ct-list-view-ug.h b/lib/list/ct-list-view-ug.h
new file mode 100755
index 0000000..551c7dc
--- /dev/null
+++ b/lib/list/ct-list-view-ug.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * A module responsible for filtering contacts-list (e.g list only contacts with email), and handling "onContactSelected" events.
+ */
+#ifndef __CONTACTS_LIST_VIEW_UG_H__
+#define __CONTACTS_LIST_VIEW_UG_H__
+
+void ct_list_ug_gl_sel(void *data, Evas_Object *obj, void *event_info);
+void ct_list_ug_handle_check_for_email(Elm_Object_Item *item,
+ ct_list_data *clist_d);
+void ct_list_ug_handle_check_for_number(Elm_Object_Item *item,
+ ct_list_data *clist_d);
+void ct_list_ug_handle_check_for_number_or_email(Elm_Object_Item *item,
+ ct_list_data *clist_d);
+
+#endif //__CONTACTS_LIST_VIEW_UG_H__
diff --git a/lib/list/include/ct-list.h b/lib/list/include/ct-list.h
new file mode 100755
index 0000000..66c80ff
--- /dev/null
+++ b/lib/list/include/ct-list.h
@@ -0,0 +1,320 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * ct-list is an UI-control responsible for drawing and handling list-specific event of
+ * contacts-application (some kind of "sub-application" used by "host" contacts-app).
+ */
+
+#ifndef __CONTACTS_LIST_H__
+#define __CONTACTS_LIST_H__
+
+#include "phone-common.h"
+
+#define CT_LIST_MAX_SEARCH_STR 1024
+#define CT_LIST_ICON_SIZE 70
+#define CT_LIST_ACCOUNT_CNT_MAX 3
+
+enum
+{ // this order affects to set list_op in ctui_list_create_contact_view_with_info
+ CT_GET_LIST_ALL_PERSON = 0,
+ CT_GET_LIST_PERSON_OF_ADDRBOOK_ID = 1,
+ CT_GET_LIST_PERSON_HAD_NUMBER_OF_ADDRBOOK_ID = 2,
+ CT_GET_LIST_PERSON_HAD_EMAIL_OF_ADDRBOOK_ID = 3,
+ CT_GET_LIST_PERSON_HAD_NUMBER_OR_EMAIL_OF_ADDRBOOK_ID = 4,
+ CT_GET_LIST_PERSON_OF_WRITABLE_ADDRBOOK_ID = 5,
+
+ CT_GET_LIST_PERSON_OF_GROUP_ID = 10,
+ CT_GET_LIST_PERSON_HAD_NUMBER_OF_GROUP_ID = 11,
+ CT_GET_LIST_PERSON_HAD_EMAIL_OF_GROUP_ID = 12,
+ CT_GET_LIST_PERSON_HAD_NUMBER_OR_EMAIL_OF_GROUP_ID = 13,
+
+ CT_GET_LIST_PERSON_NOT_ASSIGNED_OF_ADDRBOOK_ID = 14,
+ CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OF_ADDRBOOK_ID = 15,
+ CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_EMAIL_OF_ADDRBOOK_ID = 16,
+ CT_GET_LIST_PERSON_NOT_ASSIGNED_HAD_NUMBER_OR_EMAIL_OF_ADDRBOOK_ID = 17,
+
+ CT_GET_LIST_ALL_PERSON_HAD_NUMBER = 20,
+ CT_GET_LIST_ALL_PERSON_HAD_EMAIL = 21,
+ CT_GET_LIST_ALL_PERSON_HAD_NUMBER_OR_EMAIL = 22,
+ CT_GET_LIST_VCARD = 23,
+};
+
+enum
+{
+ CT_LIST_ITEM_NO_NUMBER,
+ CT_LIST_ITEM,
+ CT_LIST_ITEM_SEARCH_NO_NUMBER,
+ CT_LIST_ITEM_SEARCH,
+ CT_LIST_ITEM_COUNT,
+};
+
+enum
+{
+ CT_LIST_SINGLE_VIEW,
+ CT_LIST_IN_MULTI_TAB,
+};
+
+enum
+{
+ CT_LIST_MODE_DEFAULT,
+ CT_LIST_MODE_EDIT,
+};
+
+typedef struct
+{
+ int id_ab;
+ int id_grp;
+ int count;
+ int mode;
+ bool is_read_only;
+ char *name;
+ char *img;
+ char *img_list[6];
+ Eina_Bool selected;
+ Elm_Object_Item *item;
+} ct_group_list;
+
+/**
+ * Creates and initialises select-list of contacts according to specified filter.
+ * @param navi a navi-frame object.
+ * @param result_cb is a callback that fills the ui-list.
+ * @param result_cb_data a data with data-list inside passed into result_cb.
+ * @param list_op is a code of filtering to be applied to list inside result_cb_data (e.g. "fill list only with the contacts with email specified").
+ * @param id_ab passed to ct_list_data::base_ab.
+ * @param id_grp is group-id, passed to ct_list_data::base_grp.
+ * @param cnt_max passed to ct_list_data::cnt_max_check.
+ * @return navi-frame of newly created instance of ct_list_data (TODO: do we really need to return the input parameter?).
+ * @see ct_list_data.
+ */
+Evas_Object* ctui_create_list_select_view(
+ Evas_Object *navi,
+ ct_select_result_cb result_cb,
+ void *result_cb_data,
+ int list_op,
+ int id_ab,
+ int id_grp,
+ int cnt_max);
+
+/**
+ * Creates and initialises instance of ct_list_data. Also pushes new item to navi-frame object and attaches there data of newly created contact.
+ * @param win a window with list-control on it.
+ * @param navi is a naviframe-object.
+ * @param group_id is an id of group new contacts will be assigned to.
+ * @param ab_id passed to ct_list_data::base_ab
+ * @param list is a group members list
+ * @param save_contacts if true: the contacts list will be saved to the group database
+ * @return navi-item of newly created instance of ct_list_data.
+ * @see ct_list_data
+ */
+Elm_Object_Item *ctui_create_gadd_list_select_view(
+ Evas_Object *win,
+ Evas_Object *navi,
+ int group_id,
+ int ab_id,
+ Eina_List **list,
+ bool save_contacts);
+
+/**
+ * Updates group list in database.
+ * @param navi a navi-frame object.
+ * @param group_id an id of group which will be updated.
+ * @param add_list a list of contacts which will be added.
+ * @param remove_list a list of contacts which will be deleted.
+ */
+void ctui_list_update_group_list_without_progressbar(Evas_Object *navi,
+ int group_id,
+ Eina_List *add_list,
+ Eina_List *remove_list);
+
+/**
+ * Creates select-list of favourites contacts.
+ * @param win a window with list-control on it.
+ * @param navi is a navi-frame object that will contain list-elements.
+ * @param list is a contacts-container.
+ */
+void ctui_create_favorite_list_select_view(
+ Evas_Object *win,
+ Evas_Object *navi,
+ Eina_List *list);
+
+/**
+ * Creates vcard-based contact select-list view to importing contacts from vcf file.
+ * @param navi is a navi-frame object that will contain list-elements.
+ * @param list is a contacts-container.
+ * @param path is a path to vcf-file.
+ * @param result_cb a callback that fills the ui-list.
+ * @param result_cb_data a data with data-list inside passed into result_cb.
+ * @return navi-frame object of newly created instance of ct_list_data.
+ */
+Evas_Object* ctui_create_vcard_list_select_view(
+ Evas_Object *navi,
+ Eina_List *list,
+ const char *path,
+ ct_select_result_cb result_cb,
+ void *result_cb_data);
+
+
+/**
+ * @param win a window with list-control on it.
+ * @param list is a contacts-container.
+ * @param path is a path to vcf-file.
+ * @return created layout-object or NULL in case of error.
+ */
+Evas_Object* ctui_create_vcard_list_view(
+ Evas_Object *win,
+ Eina_List *list,
+ const char *path);
+
+/**
+ * Creates phone list-view based on specified ph_view_info structure.
+ * @param view_info view-info structure.
+ * @return list-view's layout.
+ */
+Evas_Object* ctui_create_phone_list_view(const ph_view_info *view_info);
+
+/**
+ * Creates contact list for single contact select.
+ * @param win a window with list-control on it.
+ * @param navi is a navi-frame object that will contain list-elements.
+ * @param sel_cb function to be called when contact was selected
+ * @param cb_data data to pass to sel_cb
+ * @param id_caller person id to exclude from contact list
+ */
+void ctui_create_list_single_select_view(Evas_Object *win,
+ Evas_Object *navi, Evas_Smart_Cb sel_cb, void *cb_data, int id_caller);
+
+/**
+ * Re-fills the existing contact-list. Function destroys current update-timer if it was specified before.
+ * @param data is an instance of ct_list_data(contact-list data structure).
+ * @return ECORE_CALLBACK_CANCEL (always, for some reason).
+ */
+Eina_Bool ctui_list_genlist_update(void *data);
+
+/**
+ * A callback that handle onClick event of toolbar-button. Is used within create\update contact routines.
+* @param data is an instance of ct_list_data(contact-list data structure).
+* @param obj not used
+* @param event_info not used
+ */
+void ctui_list_new_btn_clicked_cb(void *data,
+ Evas_Object *obj,
+ void *event_info);
+
+/**
+ * Draws contact-list view according to one of specified modes.
+ * @param mode specifies how the contact-list will be looking(CT_LIST_MODE_EDIT - edit view or CT_LIST_MODE_DEFAULT for default view)
+ * @param clist_d is the contact-list data structure.
+ */
+void ctui_list_navi_set(
+ int mode,
+ ct_list_data *clist_d);
+/**
+ * Clears contact-list view.
+* @param clist_d is the contact-list data structure.
+ */
+void ctui_list_view_reset(ct_list_data *clist_d);
+
+/**
+ * Is used when user switches back contacts-application.
+ * @param navi is a navi-frame object that will contain list-elements.
+ */
+void ctui_list_view_resume(Evas_Object *navi);
+
+/**
+ * Is used when user switches to other application leaving contacts-application inactive.
+ * @param navi is a navi-frame object that will contain list-elements.
+ */
+void ctui_list_view_pause(Evas_Object *navi);
+
+/**
+ * Is used in handling language-changing event.
+ * @param navi is a navi-frame object that will contain list-elements.
+ */
+void ctui_list_view_language_changed(Evas_Object *navi);
+
+Evas_Object* ctui_list_create_contact_view_with_info(
+ ph_view_info *view_info,
+ int list_op,
+ ct_group_list *info);
+
+/**
+ * Fills search-bar of specified contact-list with specified text. Function does nothing if search-bar is hidden.
+ * @param clist_d is a contact-list data-structure(contains pointer to search-bar object).
+ * @param text a text to put into search-bar.
+ */
+void ctui_list_set_search_text(
+ ct_list_data *clist_d,
+ const char *text);
+
+void ctui_list_edit_mode_start(ct_list_data *clist_d);
+
+void ctui_list_set_selectall(ct_list_data *clist_d);
+
+void ctui_list_update_with_data(
+ ph_view_info *view_info,
+ void *data,
+ int id,
+ int grp_id,
+ int ab_id);
+
+Evas_Object* ctui_list_create_values_list(
+ const char *view_uri,
+ Evas_Object *popup,
+ Evas_Object *list,
+ Eina_List *values,
+ void (*cb)(void *, Evas_Object *, void *));
+
+#define CT_MAX_ADDRBOOK 200
+
+void ct_list_init_account_data(ct_list_data *clist_d);
+
+void ct_list_get_addrbook_icon_path(
+ ct_list_data *clist_d,
+ int id_ab,
+ char *dest,
+ int dest_len);
+
+int ct_list_get_contacts(
+ ct_list_data *clist_d,
+ Eina_List **list);
+
+char* ct_list_gl_label_get(
+ void *data,
+ Evas_Object *obj,
+ const char *part);
+
+char* ct_list_count_gl_label_get(
+ void *data,
+ Evas_Object *obj,
+ const char *part);
+
+Evas_Object* ct_list_create_contact_layout(ct_list_data *clist_d);
+
+void ctui_create_group_input_view(
+ Evas_Object *win,
+ Evas_Object *navi,
+ ct_group_list *info,
+ ct_group_input_result_cb result_cb,
+ void *cb_data);
+
+void ctui_list_set_background(
+ Evas_Object *obj,
+ bool is_background);
+
+void list_create_itcs(ct_list_data *clist_d);
+
+#endif //__CONTACTS_LIST_H__
diff --git a/lib/log/CMakeLists.txt b/lib/log/CMakeLists.txt
new file mode 100755
index 0000000..0914351
--- /dev/null
+++ b/lib/log/CMakeLists.txt
@@ -0,0 +1,20 @@
+LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
+
+SET(TARGET ${PH_LOG})
+
+FILE(GLOB SRCS *.cpp)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(log_pkgs REQUIRED notification icu-i18n feedback)
+
+FOREACH(flag ${log_pkgs_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+ADD_LIBRARY(${TARGET} SHARED ${SRCS})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES VERSION ${VERSION})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS})
+TARGET_LINK_LIBRARIES(${TARGET} ${COMMON_LIB} ${ug_pkgs_LDFLAGS} ${log_pkgs_LDFLAGS} ${CT_DETAILS})
+
+ADD_DEPENDENCIES(${TARGET} progress_edj_build logdetail_theme_build)
+INSTALL(TARGETS ${TARGET} DESTINATION ${UGLIBDIR})
diff --git a/lib/log/CallDurationCounter.cpp b/lib/log/CallDurationCounter.cpp
new file mode 100644
index 0000000..e93a1bf
--- /dev/null
+++ b/lib/log/CallDurationCounter.cpp
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "CallDurationCounter.h"
+
+#include "phone.h"
+#include "phone-common.h"
+
+#define VCONFKEY_CALL_DB_PREFIX "db/call"
+#define VCONFKEY_CALL_DURATION VCONFKEY_CALL_DB_PREFIX"/duration"
+#define VCONFKEY_CALL_DURATION_LAST VCONFKEY_CALL_DURATION"/last"
+#define VCONFKEY_CALL_DURATION_INCOMMING VCONFKEY_CALL_DURATION"/in"
+#define VCONFKEY_CALL_DURATION_OUTGOING VCONFKEY_CALL_DURATION"/out"
+
+namespace Phone
+{
+ namespace Logs
+ {
+ CallDurationCounter::CallDurationCounter()
+ : m_Listener(NULL)
+ {
+ PH_TRACE;
+ memset(m_Counters, 0, sizeof(m_Counters));
+ }
+
+ CallDurationCounter::~CallDurationCounter()
+ {
+ PH_TRACE;
+ vconf_ignore_key_changed(VCONFKEY_CALL_DURATION_LAST, onCountersChange);
+ }
+
+ bool CallDurationCounter::initialize()
+ {
+ PH_TRACE;
+ bool success = update()
+ && vconf_notify_key_changed(VCONFKEY_CALL_DURATION_LAST, onCountersChange, this) == 0;
+
+ return success;
+ }
+
+ void CallDurationCounter::setListener(CallDurationCounterListener *listener)
+ {
+ m_Listener = listener;
+ }
+
+ int CallDurationCounter::getValue(CounterType type) const
+ {
+ PH_TRACE;
+ if(type >= 0 && type < Count_Max)
+ {
+ return m_Counters[type];
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ bool CallDurationCounter::update()
+ {
+ PH_TRACE;
+ bool success = vconf_get_int(VCONFKEY_CALL_DURATION_LAST, &m_Counters[Count_Last]) == 0
+ && vconf_get_int(VCONFKEY_CALL_DURATION_INCOMMING, &m_Counters[Count_Received]) == 0
+ && vconf_get_int(VCONFKEY_CALL_DURATION_OUTGOING, &m_Counters[Count_Dialed]) == 0;
+
+ if(success)
+ {
+ m_Counters[Count_All] = m_Counters[Count_Received] + m_Counters[Count_Dialed];
+ }
+ else
+ {
+ memset(m_Counters, 0, sizeof(m_Counters));
+ }
+
+ return success;
+ }
+
+ bool CallDurationCounter::reset()
+ {
+ PH_TRACE;
+ bool success = vconf_set_int(VCONFKEY_CALL_DURATION_LAST, 0) == 0
+ && vconf_set_int(VCONFKEY_CALL_DURATION_INCOMMING, 0) == 0
+ && vconf_set_int(VCONFKEY_CALL_DURATION_OUTGOING, 0) == 0;
+
+ if(success)
+ {
+ memset(m_Counters, 0, sizeof(m_Counters));
+ }
+
+ return success;
+ }
+
+ void CallDurationCounter::onCountersChange(keynode_t *node, void *data)
+ {
+ PH_TRACE;
+ if(!data)
+ {
+ return;
+ }
+
+ CallDurationCounter *counter = static_cast<CallDurationCounter*>(data);
+ if(counter->update() && counter->m_Listener)
+ {
+ counter->m_Listener->onCounterChange();
+ }
+ }
+ }
+}
diff --git a/lib/log/CallDurationCounter.h b/lib/log/CallDurationCounter.h
new file mode 100644
index 0000000..1531428
--- /dev/null
+++ b/lib/log/CallDurationCounter.h
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CALL_DURATION_COUNTER_H__
+#define __CALL_DURATION_COUNTER_H__
+
+#include <Elementary.h>
+#include <vconf.h>
+#include "NonCopyable.h"
+
+namespace Phone
+{
+ namespace Logs
+ {
+ /*
+ * @brief Listener for call duration counters events
+ */
+ class CallDurationCounterListener
+ {
+ public:
+ virtual ~CallDurationCounterListener() { }
+
+ /*
+ * @brief Called whenever values of counters were changed
+ */
+ virtual void onCounterChange() = 0;
+ };
+
+ /*
+ * @brief Calculates call durations based on log list.
+ * @details Maintains call duration counters and provides data
+ * for CallDurationView items.
+ */
+ class CallDurationCounter : public Utils::NonCopyable
+ {
+ public:
+ /*
+ * @brief Defines available counters.
+ */
+ enum CounterType
+ {
+ Count_Last = 0,
+ Count_Received,
+ Count_Dialed,
+ Count_All,
+ Count_Max
+ };
+
+ public:
+ CallDurationCounter();
+ ~CallDurationCounter();
+
+ /*
+ * @brief Initialize counter based on call log list.
+ * @param logs Call log list of ph_log_info type
+ * @return true on success, false otherwise
+ */
+ bool initialize();
+
+ /*
+ * @brief Set listener for counters events
+ */
+ void setListener(CallDurationCounterListener *listener);
+
+ /*
+ * @param type Counter to retrieve value of
+ * @return Value of requested counter
+ */
+ int getValue(CounterType type) const;
+
+ /*
+ * @brief Recalculate counters.
+ * @return true on success, false otherwise
+ */
+ bool update();
+
+ /*
+ * @brief Reset all counters to zero.
+ */
+ bool reset();
+
+ private:
+ static void onCountersChange(keynode_t *node, void *data);
+
+ int m_Counters[Count_Max];
+ CallDurationCounterListener *m_Listener;
+ };
+ }
+}
+
+#endif /* __CALL_DURATION_COUNTER_H__ */
diff --git a/lib/log/CallDurationItem.cpp b/lib/log/CallDurationItem.cpp
new file mode 100644
index 0000000..e5ef4e3
--- /dev/null
+++ b/lib/log/CallDurationItem.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "CallDurationItem.h"
+
+#include "phone.h"
+#include "phone-common.h"
+
+namespace Phone
+{
+ namespace Logs
+ {
+ CallDurationItem::CallDurationItem(
+ CallDurationCounter *counter,
+ CallDurationCounter::CounterType type,
+ const char *label
+ ) : m_Counter(counter), m_Type(type), m_Label(label)
+ {
+ PH_TRACE;
+ }
+
+ Elm_Genlist_Item_Class * CallDurationItem::getClass() const
+ {
+ PH_TRACE;
+ static Elm_Genlist_Item_Class *itemClass = createClass("2text");
+ return itemClass;
+ }
+
+ char * CallDurationItem::getText(const char *part) const
+ {
+ PH_TRACE;
+ check_if(!part, return NULL);
+ if(strcmp(part, "elm.text.1") == 0)
+ {
+ return strdup(m_Label.c_str());
+ }
+ else
+ {
+ check_if(!m_Counter, return NULL);
+ return phone_detail_log_get_duration_from_number(m_Counter->getValue(m_Type));
+ }
+ }
+ }
+}
diff --git a/lib/log/CallDurationItem.h b/lib/log/CallDurationItem.h
new file mode 100644
index 0000000..8f82ad1
--- /dev/null
+++ b/lib/log/CallDurationItem.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CALL_DURATION_ITEM_H__
+#define __CALL_DURATION_ITEM_H__
+
+#include <string>
+#include "Genlist.h"
+#include "CallDurationCounter.h"
+
+namespace Phone
+{
+ namespace Logs
+ {
+ /*
+ * \par Description:
+ * Genlist item for CallDurationView.
+ *
+ * @see Ui::Genlist::Item
+ */
+ class CallDurationItem : public Ui::Genlist::Item
+ {
+ public:
+ /*
+ * @param counter The source of counters data
+ * @param type A counter to get values from
+ * @param label A label for the counter data
+ */
+ CallDurationItem(CallDurationCounter *counter,
+ CallDurationCounter::CounterType type,
+ const char *label);
+
+ /*
+ * @see Ui::Genlist::Item::getClass
+ */
+ Elm_Genlist_Item_Class * getClass() const;
+
+ /*
+ * @see Ui::Genlist::Item::getText
+ */
+ char * getText(const char *part) const;
+
+ private:
+ CallDurationCounter *m_Counter;
+ CallDurationCounter::CounterType m_Type;
+ std::string m_Label;
+ };
+ }
+}
+
+#endif /* __CALL_DURATION_ITEM_H__ */
diff --git a/lib/log/CallDurationView.cpp b/lib/log/CallDurationView.cpp
new file mode 100644
index 0000000..db9de46
--- /dev/null
+++ b/lib/log/CallDurationView.cpp
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "CallDurationView.h"
+
+#include "phone.h"
+#include "phone-common.h"
+
+namespace Phone
+{
+ namespace Logs
+ {
+ CallDurationView::CallDurationView()
+ : View(T_(PH_GET_TEXT_BASIC, PHTEXT_CALL_DURATION))
+ {
+ PH_TRACE;
+ }
+
+ static void createMenuCb(void *data)
+ {
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ CallDurationView* pCallDurationView = static_cast<CallDurationView*>( data );
+ pCallDurationView->createMenu();
+ }
+ }
+
+ static void hideMenuCb(void *data, Evas_Object *obj, void *event_info)
+ {
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ CallDurationView *view = static_cast<CallDurationView *>(data);
+ if(view->m_Menu)
+ {
+ evas_object_del(view->m_Menu);
+ view->m_Menu = NULL;
+ }
+ }
+ }
+
+ bool CallDurationView::initialize(Evas_Object *parent)
+ {
+ PH_TRACE;
+ bool success = true;
+
+ success = View::initialize(parent);
+ if(!success)
+ {
+ return false;
+ }
+
+ success = m_Counter.initialize();
+ if(!success)
+ {
+ return false;
+ }
+
+ success = m_List.create(m_Content);
+ if(!success)
+ {
+ return false;
+ }
+
+ m_Counter.setListener(this);
+ elm_genlist_select_mode_set(m_List.getObject(), ELM_OBJECT_SELECT_MODE_NONE);
+ elm_object_part_content_set(m_Content, "elm.swallow.content", m_List.getObject());
+
+ menu_cb = createMenuCb;
+
+ success = fillList();
+ return success;
+ }
+
+ bool CallDurationView::addItem(CallDurationCounter::CounterType type, const char *label)
+ {
+ PH_TRACE;
+ CallDurationItem *item = new CallDurationItem(&m_Counter, type, label);
+ bool success = m_List.append(item) != NULL;
+ if(!success)
+ {
+ delete item;
+ }
+ return success;
+ }
+
+ void CallDurationView::createMenu()
+ {
+ PH_TRACE;
+
+ if (m_Menu)
+ evas_object_del(m_Menu);
+
+ m_Menu = elm_ctxpopup_add(m_Content);
+ if (NULL != m_Menu)
+ {
+ evas_object_smart_callback_add(m_Menu, "dismissed", hideMenuCb, this);
+ elm_ctxpopup_item_append(m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_LOGS_DURATION_RESET), NULL, onReset, this);
+
+ int y, h;
+ evas_object_geometry_get(m_Content, NULL, &y, NULL, &h);
+ evas_object_move(m_Menu, 0, y + h);
+ evas_object_show(m_Menu);
+ }
+ }
+
+ bool CallDurationView::fillList()
+ {
+ PH_TRACE;
+ return addItem(CallDurationCounter::Count_Last,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_LOGS_DURATION_LAST))
+ && addItem(CallDurationCounter::Count_Dialed,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_LOGS_DURATION_DIALED))
+ && addItem(CallDurationCounter::Count_Received,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_LOGS_DURATION_RECEIVED))
+ && addItem(CallDurationCounter::Count_All,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_LOGS_DURATION_ALL));
+ }
+
+ void CallDurationView::onCounterChange()
+ {
+ elm_genlist_realized_items_update(m_List.getObject());
+ }
+
+ void CallDurationView::onReset(void *data, Evas_Object *obj, void *event_info)
+ {
+ PH_TRACE;
+ CallDurationView *view = static_cast<CallDurationView *>(data);
+ check_if(!view, return);
+
+ elm_ctxpopup_dismiss(view->m_Menu);
+ view->m_Counter.reset();
+ elm_genlist_realized_items_update(view->m_List.getObject());
+ }
+
+ }
+}
diff --git a/lib/log/CallDurationView.h b/lib/log/CallDurationView.h
new file mode 100644
index 0000000..313ee75
--- /dev/null
+++ b/lib/log/CallDurationView.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2012-2013 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CALL_DURATION_VIEW_H__
+#define __CALL_DURATION_VIEW_H__
+
+#include "View.h"
+#include "CallDurationItem.h"
+
+namespace Phone
+{
+ namespace Logs
+ {
+ /*
+ * \par Description:
+ * Call duration view provides summary information about call durations for:
+ * - last call
+ * - dialed calls
+ * - received calls
+ * - all calls
+ */
+ class CallDurationView :
+ public Common::View,
+ public CallDurationCounterListener
+ {
+ public:
+ CallDurationView();
+
+ /*
+ * \par Description:
+ * Initialize view.
+ *
+ * @param parent Parent for the main layout
+ * @param logs Call log list of ph_log_info type
+ * @return true on success, false otherwise
+ *
+ * @see View::initialize
+ */
+ bool initialize(Evas_Object *parent);
+
+ /*
+ * \par Description:
+ * Create a menu for CallDurationView.
+ */
+ void createMenu();
+
+ private:
+ CallDurationCounter m_Counter;
+ Ui::Genlist::Genlist m_List;
+
+ bool addItem(CallDurationCounter::CounterType type, const char *label);
+ bool fillList();
+
+ void onCounterChange();
+ static void onReset(void *data, Evas_Object *obj, void *event_info);
+ };
+ }
+}
+
+#endif /* __CALL_DURATION_VIEW_H__ */
diff --git a/lib/log/include/phone-log.h b/lib/log/include/phone-log.h
new file mode 100755
index 0000000..fe4cdcd
--- /dev/null
+++ b/lib/log/include/phone-log.h
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_LOG_H__
+#define __PHONE_LOG_H__
+
+#include <unicode/udat.h>
+
+#include "phone-common.h"
+
+enum
+{
+ LOG_VIEW_TYPE_NORMAL = 0,
+ LOG_VIEW_TYPE_NORMAL_CHECK,
+ LOG_VIEW_TYPE_UG_NUMBER_CHECK,
+ LOG_VIEW_TYPE_UG_NUMBER_SELECT,
+ LOG_VIEW_TYPE_UG_EMAIL_CHECK,
+ LOG_VIEW_TYPE_UG_EMAIL_SELECT,
+ LOG_VIEW_TYPE_UG_NUMBER_OR_EMAIL_CHECK,
+ LOG_VIEW_TYPE_UG_NUMBER_OR_EMAIL_SELECT,
+ LOG_VIEW_TYPE_UG_LAUNCH_CALL,
+};
+
+enum
+{
+ VIEWBY_ALL_CALL = 0,
+ VIEWBY_MISSED_CALL,
+ VIEWBY_DIALED_CALL,
+ VIEWBY_RECEIVED_CALL,
+ VIEWBY_REJECTED_CALL,
+ VIEWBY_MAX,
+};
+
+enum
+{
+ LOG_FORMAT_TIME_12 = 0,
+ LOG_FORMAT_TIME_24,
+ LOG_FORMAT_DATE,
+ LOG_FORMAT_MAX,
+};
+
+typedef struct : public Common::View
+{
+ Evas_Object *box;
+ Evas_Object *cbar;
+ Evas_Object *genlist;
+ Evas_Object* radio_main;
+ Evas_Object *content;
+ Evas_Object *ctrl_item;
+ Evas_Object *number;
+ Eina_List *log_list;
+ int view_type;
+ int viewby_type;
+ size_t log_checkable_count;
+ int log_list_count;
+ int all_log_list_count;
+ int pre_date_type; //for index
+ int readed_n;
+ int ug_request;
+ Ecore_Idler *list_idler;
+ Elm_Object_Item *git;
+ Elm_Object_Item *item_last_sweep;
+ Ecore_Timer *timer;
+ UDateFormat *formatter[LOG_FORMAT_MAX];
+ Ecore_Timer *update_timer;
+ bool is_background;
+ bool logdetail_update;
+
+ /* edit mode */
+ Evas_Object *select_all_layout;
+ int cnt_checked;
+ ph_progress_info *p_info;
+} ph_log_data;
+
+typedef struct
+{
+ int index;
+ int state_index;
+} viewby_list_item;
+
+Evas_Object *phone_create_log_view(ph_view_info *view_info);
+void phone_log_views_update(Evas_Object *navi);
+void phone_log_missed_info_update(void *navi);
+void phone_log_view_reset(Evas_Object *navi);
+void phone_log_view_resume(Evas_Object *layout);
+void phone_log_set_navi(Evas_Object *layout);
+void phone_log_set_background(Evas_Object *obj, bool is_background);
+void phone_log_check_mode_start(ph_log_data *log_d);
+void phone_viewby_type_set(Evas_Object *layout, int log_type);
+void phone_log_view_language_changed(Evas_Object *navi);
+
+#endif //__PHONE_LOG_H__
diff --git a/lib/log/ph-log-check-view.cpp b/lib/log/ph-log-check-view.cpp
new file mode 100755
index 0000000..7f0ff45
--- /dev/null
+++ b/lib/log/ph-log-check-view.cpp
@@ -0,0 +1,425 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <bundle.h>
+#include <ui-gadget-module.h>
+
+#include "phone.h"
+#include "phone-log.h"
+#include "ph-log-utils.h"
+#include "ph-log-main-view.h"
+
+#include "assert.h"
+
+void ph_log_check_update_button_status(ph_log_data *log_d)
+{
+ PH_TRACE;
+ Eina_Bool disabled;
+ p_retm_if(NULL == log_d, "parameter is NULL");
+ p_retm_if(NULL == log_d->ctrl_item, "ctrl_item is NULL");
+
+ if (0 == log_d->log_list_count)
+ disabled = EINA_TRUE;
+ else if (log_d->genlist && elm_genlist_decorate_mode_get(log_d->genlist))
+ {
+ if (0 < log_d->cnt_checked)
+ disabled = EINA_FALSE;
+ else
+ disabled = EINA_TRUE;
+ }
+ else
+ disabled = EINA_FALSE;
+
+ elm_object_disabled_set(log_d->ctrl_item, disabled);
+}
+
+void ph_log_check_update_selection_info(ph_log_data *log_d)
+{
+ PH_TRACE;
+
+ if (log_d->cnt_checked == 0)
+ phone_hide_notify(log_d->layout);
+ else
+ {
+ char info_text[PH_TEXT_SHORT_LEN] = { 0 };
+ snprintf(info_text, sizeof(info_text), "%s (%d)",
+ S_(PH_SYS_POP_SELECTED), log_d->cnt_checked);
+ phone_show_notify(log_d->layout, info_text);
+ }
+}
+
+static void log_check_select_all(void *data, Eina_Bool checked)
+{
+ PH_TRACE;
+ Eina_List *l;
+ ph_log_data *log_d = (ph_log_data *) data;
+ void *v_l_info;
+
+ if (checked)
+ log_d->cnt_checked = log_d->log_list_count;
+ else
+ log_d->cnt_checked = 0;
+
+ EINA_LIST_FOREACH(log_d->log_list, l, v_l_info)
+ {
+ ph_log_info *l_info = (ph_log_info *) v_l_info;
+ if (!l_info)
+ continue;
+ l_info->checked = checked;
+ }
+ elm_genlist_realized_items_update(log_d->genlist);
+ ph_log_check_update_selection_info(log_d);
+ ph_log_check_update_button_status(log_d);
+}
+
+API void phone_log_check_mode_start(ph_log_data *log_d)
+{
+ PH_TRACE;
+ Elm_Object_Item * item;
+ p_retm_if(NULL == log_d, "log data is NULL");
+
+ if (log_d->item_last_sweep)
+ {
+ elm_genlist_item_decorate_mode_set(log_d->item_last_sweep, "slide",
+ EINA_FALSE);
+ elm_genlist_item_select_mode_set(log_d->item_last_sweep,
+ ELM_OBJECT_SELECT_MODE_DEFAULT);
+ log_d->item_last_sweep = NULL;
+ }
+
+ if (0 < log_d->log_list_count && !log_d->select_all_layout)
+ {
+ log_d->select_all_layout = phone_create_select_all(log_d->box,
+ S_(PH_SYS_BODY_SELECT_ALL), log_check_select_all, log_d);
+ elm_box_pack_start(log_d->box, log_d->select_all_layout);
+ }
+
+ if (LOG_VIEW_TYPE_NORMAL == log_d->view_type)
+ log_d->view_type = LOG_VIEW_TYPE_NORMAL_CHECK;
+
+ elm_genlist_decorate_mode_set(log_d->genlist, EINA_TRUE);
+ phone_log_set_navi(log_d->navi);
+
+ item = elm_genlist_first_item_get(log_d->genlist);
+ while (item)
+ {
+ elm_genlist_item_fields_update(item, "elm.icon.3",
+ ELM_GENLIST_ITEM_FIELD_CONTENT);
+ item = elm_genlist_item_next_get(item);
+ }
+}
+
+void ph_log_check_mode_end(ph_log_data *log_d, bool redraw)
+{
+ PH_TRACE;
+ Elm_Object_Item * item;
+
+ phone_hide_notify(log_d->navi);
+
+ elm_box_unpack(log_d->box, log_d->select_all_layout);
+ evas_object_del(log_d->select_all_layout);
+ log_d->select_all_layout = NULL;
+
+ if (log_d->cnt_checked)
+ log_check_select_all(log_d, EINA_FALSE);
+
+ if (LOG_VIEW_TYPE_NORMAL_CHECK == log_d->view_type)
+ {
+ log_d->view_type = LOG_VIEW_TYPE_NORMAL;
+ if (log_d->timer)
+ ecore_timer_del(log_d->timer);
+ log_d->timer = ecore_timer_add(1.0, ph_log_missed_call_count_reset,
+ (void*) log_d);
+ }
+ elm_genlist_decorate_mode_set(log_d->genlist, EINA_FALSE);
+
+ if (redraw)
+ phone_log_set_navi(log_d->navi);
+
+ item = elm_genlist_first_item_get(log_d->genlist);
+ while (item)
+ {
+ elm_genlist_item_fields_update(item, "elm.icon.3",
+ ELM_GENLIST_ITEM_FIELD_CONTENT);
+ item = elm_genlist_item_next_get(item);
+ }
+}
+
+void ph_log_check_update_select_all(ph_log_data *log_d)
+{
+ PH_TRACE;
+ Eina_Bool all_check;
+ Evas_Object *check;
+
+ p_retm_if(NULL == log_d->select_all_layout, "select_all_layout is NULL");
+
+ check = elm_object_part_content_get(log_d->select_all_layout, "elm.icon");
+ p_retm_if(NULL == check, "elm_object_part_content_get() return NULL");
+
+ if (log_d->log_list_count == log_d->cnt_checked)
+ all_check = EINA_TRUE;
+ else
+ all_check = EINA_FALSE;
+ elm_check_state_set(check, all_check);
+}
+
+void ph_log_check_done_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int i = 0;
+ int *result_list;
+ Eina_List *l;
+ ph_log_data *log_d = (ph_log_data *) data;
+ void *v_l_info;
+
+ result_list = (int *) calloc(log_d->cnt_checked, sizeof(int));
+ EINA_LIST_FOREACH(log_d->log_list, l, v_l_info)
+ {
+ ph_log_info *l_info = (ph_log_info *) v_l_info;
+ if (!l_info)
+ continue;
+ if (l_info->checked)
+ result_list[i++] = l_info->id;
+ }
+ phone_list_ug_return_ids(log_d->ug, result_list, log_d->cnt_checked,
+ PH_UG_BUNDLE_RESULT_PLOG_ID_LIST);
+
+ free(result_list);
+ ug_destroy_me(log_d->ug);
+}
+
+static PTHREAD_FN log_check_del(void *data)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) data;
+ ph_progress_info *p_info = log_d->p_info;
+ Eina_List *l;
+ void *v_l_info;
+
+ contacts_connect_on_thread();
+
+ EINA_LIST_FOREACH(log_d->log_list, l, v_l_info)
+ {
+ ph_log_info *l_info = (ph_log_info *) v_l_info;
+ if (!p_info->alive)
+ {
+ p_info->completed = true;
+ break;
+ }
+ if (!l_info)
+ continue;
+
+ if (TRUE == l_info->checked)
+ {
+ if (CONTACTS_ERROR_NONE
+ != contacts_db_delete_record(_contacts_phone_log._uri,
+ l_info->id))
+ {
+ ERR("contacts_db_delete_record() failed (id=%d)", l_info->id);
+ p_info->completed = true;
+ break;
+ }
+ p_info->cnt++;
+ }
+ if (p_info->cnt == p_info->cnt_checked_total)
+ break;
+ }
+
+ contacts_disconnect_on_thread();
+
+ pthread_exit (NULL);
+}
+
+static Eina_Bool log_check_del_timer(void *data)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) data;
+ ph_progress_info *p_info = log_d->p_info;
+
+ p_retvm_if(NULL == p_info, ECORE_CALLBACK_CANCEL,
+ "parameter(ph_progress_info) is NULL");
+
+ if (!p_info->completed)
+ {
+ char count[PH_TEXT_SHORT_LEN];
+ char percent[5];
+ double value = (double) p_info->cnt
+ / (double) p_info->cnt_checked_total;
+
+ elm_progressbar_value_set(p_info->progressbar, value);
+ snprintf(percent, sizeof(percent), "%d%%",
+ (int) (100.0 * (double) p_info->cnt
+ / (double) p_info->cnt_checked_total));
+ snprintf(count, sizeof(count), "%d/%d", p_info->cnt,
+ p_info->cnt_checked_total);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext1", percent);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext2", count);
+
+ if (p_info->cnt == p_info->cnt_checked_total)
+ p_info->completed = true;
+
+ return ECORE_CALLBACK_RENEW;
+ }
+ else
+ {
+ bool deleted = false;
+
+ pthread_join(p_info->thread, NULL);
+
+ if (p_info->cnt == p_info->cnt_checked_total)
+ {
+ deleted = true;
+ }
+
+ evas_object_del(log_d->popup);
+ log_d->popup = NULL;
+
+ if (NULL != p_info)
+ {
+ free(p_info);
+ log_d->p_info = NULL;
+ }
+
+ ph_log_check_mode_end(log_d, true);
+
+ if (deleted)
+ phone_show_tickernoti(S_(PH_SYS_POP_DELETED));
+ else
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+
+ ph_log_data_changed_cb(log_d);
+ return ECORE_CALLBACK_CANCEL;
+ }
+}
+
+static void ph_log_check_del_reponse_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int ret;
+ ph_log_data *log_d = (ph_log_data *) data;
+ ph_progress_info *p_info;
+
+ p_retm_if(NULL == log_d, "log data is NULL");
+ evas_object_del(log_d->popup);
+ log_d->popup = NULL;
+
+ p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info));
+ p_retm_if(NULL == p_info, "calloc return NULL");
+
+ log_d->p_info = p_info;
+ p_info->cnt_checked_total = log_d->cnt_checked;
+ p_info->alive = true;
+
+ ret = pthread_create(&p_info->thread, NULL, log_check_del, log_d);
+ if (0 != ret)
+ {
+ ERR("Thread creation failed(%d)", ret);
+ free(p_info);
+ log_d->p_info = NULL;
+ return;
+ }
+
+ p_info->timer = ecore_timer_add(0.2, log_check_del_timer, log_d);
+ if (NULL == p_info->timer)
+ {
+ ERR("ecore_timer_add() return NULL");
+
+ p_info->alive = false;
+ pthread_join(p_info->thread, NULL);
+ free(p_info);
+ log_d->p_info = NULL;
+ return;
+ }
+
+ log_d->popup = phone_progressbar_popup(log_d->win, p_info,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_DELETING_LOGS));
+}
+
+void ph_log_check_del_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_log_data* log_d = (ph_log_data *) data;
+ ph_log_info *l_info = (ph_log_info *)log_d->log_list;
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ Evas_Object *btn;
+
+ if(!log_d || !l_info)
+ {
+ return;
+ }
+
+ snprintf(buf, sizeof(buf), T_(PH_GET_TEXT_BASIC, PHTEXT_DELETING_N_LOGS), log_d->cnt_checked);
+ btn = phone_create_confirm_popup(&log_d->popup, log_d->win, buf,
+ ph_log_check_del_reponse_cb, (void *) log_d);
+ evas_object_data_set(btn, "log_data", log_d);
+}
+
+void ph_log_check_groupped_items(ph_log_data& logData, int logInfoId, Eina_Bool bChecked)
+{
+ PH_TRACE;
+ if (elm_genlist_decorate_mode_get(logData.genlist))
+ {
+ Eina_List *list = NULL;
+ void *v_l_info = NULL;
+
+ EINA_LIST_FOREACH(logData.log_list, list, v_l_info)
+ {
+ ph_log_info *l_info = (ph_log_info *) v_l_info;
+ if (l_info)
+ {
+ if (l_info->group_base_id == logInfoId)
+ {
+ l_info->checked = bChecked;
+ }
+ }
+ }
+ }
+}
+
+void ph_log_check_check_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_log_data *logData = (ph_log_data *) data;
+ ph_log_info *logInfo = (ph_log_info *) evas_object_data_get(obj, "person_info");
+
+ assert(logData && obj && logInfo);
+ if ((logData == NULL) || (obj == NULL) || (logInfo == NULL))
+ {
+ return;
+ }
+
+ if(logData)
+ {
+ ph_log_check_groupped_items(*logData, logInfo->id, logInfo->checked);
+ }
+
+ if (elm_check_state_get(obj))
+ {
+ logData->cnt_checked += logInfo->grouped_count;
+ }
+ else
+ {
+ logData->cnt_checked -= logInfo->grouped_count;
+ }
+
+ ph_log_check_update_select_all(logData);
+ ph_log_check_update_selection_info(logData);
+ ph_log_check_update_button_status(logData);
+}
diff --git a/lib/log/ph-log-check-view.h b/lib/log/ph-log-check-view.h
new file mode 100755
index 0000000..9ed52bc
--- /dev/null
+++ b/lib/log/ph-log-check-view.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PH_LOG_CHECK_VIEW_H_
+#define __PH_LOG_CHECK_VIEW_H_
+
+void ph_log_check_mode_end(ph_log_data *log_d, bool redraw);
+void ph_log_check_update_select_all(ph_log_data *log_d);
+void ph_log_check_update_selection_info(ph_log_data *log_d);
+void ph_log_check_update_button_status(ph_log_data *log_d);
+void ph_log_check_done_btn_cb(void *data, Evas_Object *obj, void *event_info);
+void ph_log_check_del_btn_cb(void *data, Evas_Object *obj, void *event_info);
+void ph_log_check_check_changed_cb(void *data, Evas_Object *obj,
+ void *event_info);
+
+/**
+ * @brief The function marks items of log, if there was checked related item of genlist
+ * @param logData Data of log list
+ * @param logInfoId Id of checked item
+ * @param bChecked Checked/Unchecked item
+ */
+void ph_log_check_groupped_items(ph_log_data& logData, int logInfoId, Eina_Bool bChecked);
+
+#endif /* __PH_LOG_CHECK_VIEW_H_ */
diff --git a/lib/log/ph-log-detail-view.cpp b/lib/log/ph-log-detail-view.cpp
new file mode 100755
index 0000000..34d611b
--- /dev/null
+++ b/lib/log/ph-log-detail-view.cpp
@@ -0,0 +1,1441 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <ui-gadget-module.h>
+#include <aul.h>
+
+#include "phone.h"
+#include "phone-log.h"
+#include "ph-log-utils.h"
+#include "ph-log-detail-view.h"
+#include "phone-common.h"
+
+#include <feedback.h>
+#include <msg.h>
+
+#define KEY_LOG_DETAIL_DATA "logdetail_d"
+
+enum LOG_DETAIL_ITC_TYPE
+{
+ LOG_DETAIL_ITC_TOP_INFO_NAMED = 0,
+ LOG_DETAIL_ITC_TOP_INFO_NONAMED,
+
+ LOG_DETAIL_ITC_TOP_BTNS,
+ LOG_DETAIL_ITC_DETAIL,
+ LOG_DETAIL_ITC_TITLE,
+ LOG_DETAIL_ITC_MAX,
+};
+
+static Elm_Genlist_Item_Class log_detail_itcs[LOG_DETAIL_ITC_MAX] = { { 0, 0, 1,
+ "2text.2icon.1", NULL, NULL, { NULL, NULL, NULL, NULL }, }, { 0, 0, 1,
+ "1text.1icon.7", NULL, NULL, { NULL, NULL, NULL, NULL }, }, { 0, 0, 1,
+ "logdetail.2icon", NULL, NULL, { NULL, NULL, NULL, NULL }, }, { 0, 0,
+ 1, "dialogue/3text.2icon", NULL, NULL, { NULL, NULL, NULL, NULL }, }, {
+ 0, 0, 1, "grouptitle", NULL, NULL, { NULL, NULL, NULL, NULL }, }, };
+
+typedef struct
+{
+ int plog_id;
+ int plog_type;
+ int plog_time;
+ int plog_duration;
+ int plog_msgid;
+ char *plog_shortmsg;
+} ph_log_detail_info;
+
+static void log_detail_destroy_child_ug(void *data)
+{
+ PH_TRACE;
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+ logdetail_d->child_ug = NULL;
+}
+
+static void log_detail_msg_btn_pressed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ elm_image_file_set((Evas_Object *) data, PH_IMG_ICON_SMS_PRESSED, NULL);
+}
+
+static void log_detail_msg_btn_unpressed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ elm_image_file_set((Evas_Object *) data, PH_IMG_ICON_SMS, NULL);
+}
+
+static void log_detail_msg_btn_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+ p_retm_if(NULL == logdetail_d, "log_info is NULL");
+ ph_log_util_svi_play(FEEDBACK_PATTERN_TOUCH_TAP,
+ FEEDBACK_PATTERN_TOUCH_TAP);
+
+ p_retm_if(1 == aul_app_is_running(VIDEOCALL_PKG), "vtcall is running");
+ p_retm_if(1 == aul_app_is_running(VOICECALL_PKG), "voice call is running");
+
+ logdetail_d->child_ug = phone_launch_msg_composer_ug(logdetail_d->ug,
+ logdetail_d->log_number, 0, log_detail_destroy_child_ug,
+ logdetail_d);
+}
+
+static void log_detail_call_btn_pressed_cb(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ elm_image_file_set((Evas_Object *) data, PH_IMG_ICON_CALL_PRESSED, NULL);
+}
+
+static void log_detail_call_btn_unpressed_cb(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is NULL");
+ elm_image_file_set((Evas_Object *) data, PH_IMG_CIRCLE_ICON_CALL, NULL);
+}
+
+static void log_detail_call_btn_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+ p_retm_if(NULL == logdetail_d, "log_info is NULL");
+ ph_log_util_svi_play(FEEDBACK_PATTERN_TOUCH_TAP,
+ FEEDBACK_PATTERN_TOUCH_TAP);
+ phone_launch_voice_call(logdetail_d->contact_id, logdetail_d->log_number);
+}
+
+static void log_detail_gl_realized(void *data, Evas_Object *obj, void *ei)
+{
+ PH_TRACE;
+ p_retm_if(obj == NULL, "obj is null");
+ p_retm_if(ei == NULL, "ei is null");
+
+ ph_log_detail_data *logdetail_d;
+ logdetail_d = (ph_log_detail_data *) evas_object_data_get(obj,
+ KEY_LOG_DETAIL_DATA);
+
+ int first = 0;
+
+ if (logdetail_d->log_number && *logdetail_d->log_number)
+ first = 5;
+ else
+ first = 3;
+ int last = (int) elm_genlist_items_count(obj) - 1;
+ int index = elm_genlist_item_index_get((Elm_Object_Item *) ei);
+
+ if (last == first)
+ return;
+
+ if (index == first)
+ elm_object_item_signal_emit((Elm_Object_Item *) ei, "elm,state,top",
+ "");
+ else if (index == last)
+ elm_object_item_signal_emit((Elm_Object_Item *) ei, "elm,state,bottom",
+ "");
+ else if (index > first && index < last)
+ elm_object_item_signal_emit((Elm_Object_Item *) ei, "elm,state,center",
+ "");
+
+ return;
+}
+
+static void log_detail_append_separator(Evas_Object *genlist, bool isEnd)
+{
+ PH_TRACE;
+ static Elm_Genlist_Item_Class itc[2] = { { 0, 0, 1,
+ "dialogue/separator/end", NULL, NULL, { NULL, NULL, NULL, NULL }, },
+ { 0, 0, 1, "dialogue/separator/10", NULL, NULL, { NULL, NULL, NULL,
+ NULL }, }, };
+
+ Elm_Object_Item *item;
+ if (isEnd)
+ item = elm_genlist_item_append(genlist, &itc[0], NULL, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ else
+ item = elm_genlist_item_append(genlist, &itc[1], NULL, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+}
+
+static void log_detail_gl_selected_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Elm_Object_Item *it = (Elm_Object_Item *) event_info;
+ if (it)
+ {
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+ }
+}
+
+static void log_detail_fill_genlist(ph_log_detail_data *logdetail_d)
+{
+ PH_TRACE;
+ Eina_List *l;
+ ph_log_detail_info * l_detail_info;
+ void *v_l_detail_info;
+ Elm_Object_Item *git;
+
+ p_retm_if(NULL == logdetail_d->genlist, "Genlist is null");
+ if (logdetail_d->log_display)
+ logdetail_d->top_item = elm_genlist_item_append(logdetail_d->genlist,
+ &log_detail_itcs[LOG_DETAIL_ITC_TOP_INFO_NAMED], logdetail_d,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ else
+ logdetail_d->top_item = elm_genlist_item_append(logdetail_d->genlist,
+ &log_detail_itcs[LOG_DETAIL_ITC_TOP_INFO_NONAMED], logdetail_d,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+ if (logdetail_d->log_number)
+ {
+ elm_genlist_item_append(logdetail_d->genlist,
+ &log_detail_itcs[LOG_DETAIL_ITC_TOP_BTNS], logdetail_d, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ log_detail_append_separator(logdetail_d->genlist, false);
+ }
+ l_detail_info = (ph_log_detail_info*) eina_list_data_get(
+ eina_list_last(logdetail_d->log_list));
+ git = elm_genlist_item_append(logdetail_d->genlist,
+ &log_detail_itcs[LOG_DETAIL_ITC_TITLE], l_detail_info, NULL,
+ ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+ elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_NONE);
+ v_l_detail_info = (void *) l_detail_info;
+ EINA_LIST_FOREACH(logdetail_d->log_list, l, v_l_detail_info)
+ {
+ l_detail_info = (ph_log_detail_info *) v_l_detail_info;
+ Elm_Object_Item * it;
+ if (!l_detail_info)
+ continue;
+ it = elm_genlist_item_append(logdetail_d->genlist,
+ &log_detail_itcs[LOG_DETAIL_ITC_DETAIL], l_detail_info, git,
+ ELM_GENLIST_ITEM_NONE, log_detail_gl_selected_cb, NULL);
+ elm_genlist_item_select_mode_set(it,
+ ELM_OBJECT_SELECT_MODE_ALWAYS);
+ }
+ log_detail_append_separator(logdetail_d->genlist, true);
+}
+
+static void log_detail_free_log_data(Eina_List *list)
+{
+ PH_TRACE;
+ Eina_List *l;
+ void *v_l_detail_info;
+ p_retm_if(NULL == list, "data is null");
+
+ EINA_LIST_FOREACH(list, l, v_l_detail_info)
+ {
+ ph_log_detail_info *l_detail_info =
+ (ph_log_detail_info *) v_l_detail_info;
+ if (!l_detail_info)
+ continue;
+ free(l_detail_info->plog_shortmsg);
+ free(l_detail_info);
+ }
+ eina_list_free(list);
+}
+
+contacts_error_e log_detail_get_list(const char *view_uri, int property_id,
+ const char* match_value, contacts_list_h *out_list)
+{
+ PH_TRACE;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+
+ p_retvm_if(NULL == out_list, CONTACTS_ERROR_INVALID_PARAMETER,
+ "parameter(out_list) is NULL");
+
+ err = (contacts_error_e) contacts_filter_create(view_uri, &filter);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, err,
+ "contactcs_filter_create() Failed(%d)", err);
+
+ do
+ {
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_filter_add_str(filter,
+ property_id, CONTACTS_MATCH_FULLSTRING, match_value)))
+ break;
+ if (CONTACTS_ERROR_NONE != (err =
+ (contacts_error_e) contacts_query_create(view_uri, &query)))
+ break;
+ if (CONTACTS_ERROR_NONE != (err =
+ (contacts_error_e) contacts_query_set_filter(query, filter)))
+ break;
+ if (CONTACTS_ERROR_NONE
+ != (err = (contacts_error_e) contacts_db_get_records_with_query(
+ query, 0, 0, out_list)))
+ break;
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ return CONTACTS_ERROR_NONE;
+ }
+ while (0);
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+ return err;
+}
+
+static char* log_detail_get_custom_number_type(int contact_id,
+ const char* req_number)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_list_h num_list = NULL;
+ char *out_num = NULL;
+ char *out_label = NULL;
+
+ if (contact_id > 0)
+ {
+ err = phone_cts_get_list(_contacts_person_number._uri,
+ _contacts_person_number.person_id, contact_id, &num_list);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ err = phone_cts_get_str_from_list(num_list,
+ _contacts_person_number.number, &out_num);
+ if (err == CONTACTS_ERROR_NONE
+ && strcmp(req_number, out_num) == 0)
+ {
+ err = phone_cts_get_str_from_list(num_list,
+ _contacts_person_number.label, &out_label);
+ break;
+ }
+ err = contacts_list_next(num_list);
+ }
+ }
+ contacts_list_destroy(num_list, true);
+ }
+
+ if (err == CONTACTS_ERROR_NONE && out_label && *out_label)
+ return strdup(out_label);
+ else
+ return (char *) T_(CT_GET_TEXT_NUM_TYPE, CTTEXT_TYPE_OTHER);
+
+}
+
+static void log_detail_get_contact_info(char *req_number,
+ ph_log_detail_data *logdetail_d)
+{
+ PH_TRACE;
+ int index;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h out_contact = NULL;
+ contacts_list_h num_list = NULL;
+ char *out_num;
+
+ p_retm_if(NULL == req_number, "Parameter is null");
+ free(logdetail_d->log_display);
+ logdetail_d->log_display = NULL;
+ free(logdetail_d->log_img_path);
+ logdetail_d->log_img_path = NULL;
+
+ index = 0;
+ if (logdetail_d->contact_id > 0)
+ {
+ err = phone_cts_get_list(_contacts_person_number._uri,
+ _contacts_person_number.person_id, logdetail_d->contact_id,
+ &num_list);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ err = phone_cts_get_str_from_list(num_list,
+ _contacts_person_number.number, &out_num);
+ if (err == CONTACTS_ERROR_NONE
+ && strcmp(req_number, out_num) == 0)
+ {
+ index = logdetail_d->contact_id;
+ break;
+ }
+ err = contacts_list_next(num_list);
+ }
+ }
+ contacts_list_destroy(num_list, true);
+ }
+
+ if (index <= 0)
+ {
+ err = log_detail_get_list(_contacts_person_number._uri,
+ _contacts_person_number.number, req_number, &num_list);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ unsigned int count = 0;
+ contacts_list_get_count(num_list, &count);
+ if (count > 0)
+ {
+ phone_cts_get_int_from_list(num_list,
+ _contacts_person_number.person_id, &index);
+ PH_DBG("FOUND ONE: %d", index);
+ }
+
+ }
+ contacts_list_destroy(num_list, true);
+ }
+
+ if (index > 0)
+ {
+ err = contacts_db_get_record(_contacts_person._uri, index,
+ &out_contact);
+ if (err < CONTACTS_ERROR_NONE)
+ ERR("contacts_db_get_record is failed");
+ else
+ {
+ contacts_record_get_str(out_contact, _contacts_person.display_name,
+ &logdetail_d->log_display);
+ logdetail_d->contact_id = index;
+ contacts_record_get_str(out_contact,
+ _contacts_person.image_thumbnail_path,
+ &logdetail_d->log_img_path);
+ contacts_record_destroy(out_contact, true);
+ PH_DBG("updated) name: %s, id: %d, imgpath: %s",
+ logdetail_d->log_display, logdetail_d->contact_id, logdetail_d->log_img_path);
+ return;
+ }
+ }
+ logdetail_d->contact_id = 0;
+}
+
+static void log_detail_view_clicked_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+ p_retm_if(NULL == logdetail_d, "detail data is null");
+
+ if (0 < logdetail_d->contact_id)
+ {
+ PH_DBG("requested ID: %d", logdetail_d->contact_id);
+ logdetail_d->child_ug = phone_launch_contact_detail_ug(logdetail_d->ug,
+ logdetail_d->contact_id, log_detail_destroy_child_ug,
+ logdetail_d);
+ }
+}
+
+static void log_detail_add_contact_btn_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+ logdetail_d->child_ug = phone_launch_contact_add_list_edit_ug(
+ logdetail_d->ug, logdetail_d->log_number,
+ log_detail_destroy_child_ug, logdetail_d);
+}
+
+static void log_detail_update_view_with_contact_cb(const char* view_uri,
+ void* data)
+{
+ PH_TRACE;
+
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+ log_detail_get_contact_info(logdetail_d->log_number, logdetail_d);
+
+ if (logdetail_d->top_item)
+ elm_object_item_del(logdetail_d->top_item);
+ if (logdetail_d->log_display)
+ logdetail_d->top_item = elm_genlist_item_prepend(logdetail_d->genlist,
+ &log_detail_itcs[LOG_DETAIL_ITC_TOP_INFO_NAMED], logdetail_d,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ else
+ logdetail_d->top_item = elm_genlist_item_prepend(logdetail_d->genlist,
+ &log_detail_itcs[LOG_DETAIL_ITC_TOP_INFO_NONAMED], logdetail_d,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+ ph_log_detail_set_toolbar(logdetail_d);
+
+ return;
+
+}
+
+static void log_detail_delete_confirm_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int ret = CONTACTS_ERROR_NONE;
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+ Eina_List *l;
+ void *v_l_info;
+
+ evas_object_del(logdetail_d->popup);
+ logdetail_d->popup = NULL;
+
+ l = logdetail_d->log_list;
+ EINA_LIST_FOREACH(l, l, v_l_info)
+ {
+ ph_log_detail_info *l_info = (ph_log_detail_info *) v_l_info;
+ ret = contacts_db_delete_record(_contacts_phone_log._uri,
+ l_info->plog_id);
+ if (CONTACTS_ERROR_NONE != ret)
+ break;
+ }
+
+ if (CONTACTS_ERROR_NONE != ret)
+ {
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+ }
+ else
+ {
+ evas_object_data_del(logdetail_d->navi, KEY_LOG_DETAIL_DATA);
+ elm_naviframe_item_pop(logdetail_d->navi);
+ phone_show_tickernoti(S_(PH_SYS_POP_DELETED));
+ }
+}
+
+static void log_detail_del_btn_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ snprintf(buf, sizeof(buf), "%s?", S_(PH_SYS_SK_DELETE));
+ phone_create_confirm_popup(&logdetail_d->popup, logdetail_d->win, buf,
+ log_detail_delete_confirm_cb, logdetail_d);
+}
+
+static Evas_Object *log_detail_gl_top_info_icon_get(void *data,
+ Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+ if (0 == strcmp(part, "elm.icon"))
+ {
+ }
+ else if (0 == strcmp(part, "elm.icon.2"))
+ {
+ Evas_Object *detail_img = NULL;
+ if (logdetail_d->log_img_path)
+ detail_img = phone_create_icon_with_img(obj,
+ logdetail_d->log_img_path);
+ else
+ detail_img = phone_create_icon_with_img(obj, IMG_DEFAULT);
+ if (detail_img)
+ evas_object_size_hint_aspect_set(detail_img,
+ EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
+ return detail_img;
+ }
+ return NULL;
+}
+
+void log_detail_destroy_list_child_ug(void *data)
+{
+ PH_TRACE;
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+ logdetail_d->child_ug = NULL;
+
+}
+
+static Evas_Object *log_detail_gl_top_btns_icon_get(void *data,
+ Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ const char *fullpath;
+ Evas_Object *btn;
+ Evas_Object *icon;
+ Evas_Smart_Cb clicked_fn;
+ Evas_Smart_Cb pressed_fn;
+ Evas_Smart_Cb unpressed_fn;
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+
+ p_retv_if(NULL == data, NULL);
+
+ if (0 == strcmp(part, "elm.icon.1"))
+ {
+ fullpath = PH_IMG_CIRCLE_ICON_CALL;
+ clicked_fn = log_detail_call_btn_cb;
+ pressed_fn = (Evas_Smart_Cb) log_detail_call_btn_pressed_cb;
+ unpressed_fn = (Evas_Smart_Cb) log_detail_call_btn_unpressed_cb;
+ }
+ else if (0 == strcmp(part, "elm.icon.2"))
+ {
+ fullpath = PH_IMG_ICON_SMS;
+ clicked_fn = log_detail_msg_btn_cb;
+ pressed_fn = log_detail_msg_btn_pressed_cb;
+ unpressed_fn = log_detail_msg_btn_unpressed_cb;
+ }
+ else
+ {
+ return NULL;
+ }
+
+ btn = elm_button_add(obj);
+ p_retvm_if(NULL == btn, NULL, "elm_button_add() return NULL");
+ evas_object_propagate_events_set(btn, false);
+
+ icon = elm_icon_add(btn);
+ p_retvm_if(NULL == icon, NULL, "phone_create_icon_with_img() return NULL");
+ elm_image_file_set(icon, fullpath, NULL);
+ elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+ elm_object_part_content_set(btn, "elm.swallow.content", icon);
+ evas_object_smart_callback_add(btn, "clicked", clicked_fn, logdetail_d);
+ evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_DOWN,
+ (Evas_Object_Event_Cb) pressed_fn, icon);
+ evas_object_event_callback_add(btn, EVAS_CALLBACK_MOUSE_UP,
+ (Evas_Object_Event_Cb) unpressed_fn, icon);
+
+ if (!logdetail_d->log_number || !*logdetail_d->log_number)
+ elm_object_disabled_set(btn, EINA_TRUE);
+
+ return btn;
+}
+
+static char *log_detail_gl_top_info_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+ char buf[PATH_MAX] = { 0 };
+
+ if (0 == strcmp(part, "elm.text"))
+ {
+ if (logdetail_d->log_number && *logdetail_d->log_number)
+ if (logdetail_d->log_list_count > 1)
+ snprintf(buf, sizeof(buf), "%s (%d)", logdetail_d->log_number,
+ logdetail_d->log_list_count);
+ else
+ snprintf(buf, sizeof(buf), "%s", logdetail_d->log_number);
+ else
+ snprintf(buf, sizeof(buf), "%s (%d)", S_(PH_SYS_BODY_UNKNOWN),
+ logdetail_d->log_list_count);
+ return strdup(buf);
+ }
+ else if (0 == strcmp(part, "elm.text.1"))
+ {
+ if (logdetail_d->log_display && *logdetail_d->log_display)
+ if (logdetail_d->log_list_count > 1)
+ snprintf(buf, sizeof(buf), "%s (%d)", logdetail_d->log_display,
+ logdetail_d->log_list_count);
+ else
+ snprintf(buf, sizeof(buf), "%s", logdetail_d->log_display);
+ else if (logdetail_d->log_number && *logdetail_d->log_number)
+ if (logdetail_d->log_list_count > 1)
+ snprintf(buf, sizeof(buf), "%s (%d)", logdetail_d->log_number,
+ logdetail_d->log_list_count);
+ else
+ snprintf(buf, sizeof(buf), "%s", logdetail_d->log_number);
+ else
+ snprintf(buf, sizeof(buf), "%s (%d)", S_(PH_SYS_BODY_UNKNOWN),
+ logdetail_d->log_list_count);
+ return strdup(buf);
+ }
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+ if ((logdetail_d->log_display && *logdetail_d->log_display)
+ && (logdetail_d->log_number && *logdetail_d->log_number))
+ {
+ if (logdetail_d->log_num_type & CONTACTS_NUMBER_TYPE_CUSTOM)
+ snprintf(buf, sizeof(buf), "%s %s",
+ log_detail_get_custom_number_type(
+ logdetail_d->contact_id,
+ logdetail_d->log_number),
+ logdetail_d->log_number);
+ else
+ snprintf(buf, sizeof(buf), "%s %s",
+ T_(CT_GET_TEXT_NUM_TYPE, phone_detail_log_get_phonenumber_type(logdetail_d->log_num_type)),
+ logdetail_d->log_number);
+ return strdup(buf);
+ }
+ else
+ return NULL;
+ }
+ return NULL;
+}
+
+static Evas_Object *log_detail_gl_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ph_log_detail_info *l_detail_info = (ph_log_detail_info *) data;
+ char buf[PATH_MAX] = { 0 };
+ Evas_Object *ic;
+
+ if (0 == strcmp(part, "elm.icon.1"))
+ {
+ char *made_data = phone_detail_log_get_icon_type(
+ l_detail_info->plog_type);
+ snprintf(buf, sizeof(buf), "%s", made_data);
+ free(made_data);
+ }
+ else if (0 == strcmp(part, "elm.icon.2"))
+ {
+ char *made_data = phone_detail_log_get_icon_path_with_action(
+ l_detail_info->plog_type);
+ snprintf(buf, sizeof(buf), "%s", made_data);
+ free(made_data);
+ }
+ else
+ return NULL;
+ ic = elm_icon_add(obj);
+ p_retvm_if(NULL == ic, NULL, "elm_icon_add() return NULL");
+ elm_image_file_set(ic, buf, NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ return ic;
+}
+
+static const char* log_detail_get_type_name(int type)
+{
+ PH_TRACE;
+ switch (type)
+ {
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING:
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING:
+ return T_(PH_GET_TEXT_BASIC, PHTEXT_INCOMMING_CALL);
+ break;
+ case CONTACTS_PLOG_TYPE_VOICE_OUTGOING:
+ case CONTACTS_PLOG_TYPE_VIDEO_OUTGOING:
+ return T_(PH_GET_TEXT_BASIC, PHTEXT_OUTGOING_CALL);
+ break;
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN:
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_SEEN:
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN:
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_SEEN:
+ return T_(PH_GET_TEXT_BASIC, PHTEXT_MISSED_CALL);
+ break;
+ case CONTACTS_PLOG_TYPE_MMS_OUTGOING:
+ case CONTACTS_PLOG_TYPE_SMS_OUTGOING:
+ case CONTACTS_PLOG_TYPE_EMAIL_SENT:
+ return T_(PH_GET_TEXT_BASIC, PHTEXT_SENT_MESSAGE);
+ break;
+ case CONTACTS_PLOG_TYPE_MMS_INCOMMING:
+ case CONTACTS_PLOG_TYPE_SMS_INCOMMING:
+ case CONTACTS_PLOG_TYPE_EMAIL_RECEIVED:
+ return T_(PH_GET_TEXT_BASIC, PHTEXT_RECEIVED_MESSAGE);
+ break;
+ case CONTACTS_PLOG_TYPE_VOICE_REJECT:
+ case CONTACTS_PLOG_TYPE_VIDEO_REJECT:
+ return T_(PH_GET_TEXT_BASIC, PHTEXT_REJECTED_CALL_ABB);
+ break;
+ case CONTACTS_PLOG_TYPE_VOICE_BLOCKED:
+ case CONTACTS_PLOG_TYPE_VIDEO_BLOCKED:
+ return T_(PH_GET_TEXT_BASIC, PHTEXT_BLOCKED_CALL_ABB);
+ break;
+ case CONTACTS_PLOG_TYPE_SMS_BLOCKED:
+ case CONTACTS_PLOG_TYPE_MMS_BLOCKED:
+ default:
+ break;
+ }
+ return NULL;
+}
+
+static char* log_detail_gl_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ph_log_detail_info * l_detail_info = (ph_log_detail_info *) data;
+ char buf[PATH_MAX] = { 0 };
+ const char* type_name = NULL;
+
+ if (0 == strcmp(part, "elm.text.1"))
+ {
+ ph_log_detail_data *logdetail_d;
+ logdetail_d = (ph_log_detail_data *) evas_object_data_get(obj,
+ KEY_LOG_DETAIL_DATA);
+ return phone_detail_log_get_time(logdetail_d->log_d->formatter,
+ l_detail_info->plog_time);
+ }
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+ type_name = log_detail_get_type_name(l_detail_info->plog_type);
+ if (type_name)
+ {
+ if (TRUE
+ == phone_detail_log_is_call_ing_type(
+ l_detail_info->plog_type))
+ {
+ sprintf(buf, "%s %s", type_name,
+ phone_detail_log_get_duration_from_number(
+ l_detail_info->plog_duration));
+ return strdup(buf);
+ }
+ else
+ return strdup(type_name);
+ }
+ else
+ {
+ if (TRUE
+ == phone_detail_log_is_call_ing_type(
+ l_detail_info->plog_type))
+ return phone_detail_log_get_duration_from_number(
+ l_detail_info->plog_duration);
+ }
+ }
+ else if (0 == strcmp(part, "elm.text.3"))
+ {
+ if (TRUE == phone_detail_log_is_call_ing_type(l_detail_info->plog_type))
+ return phone_detail_log_get_duration_from_number(
+ l_detail_info->plog_duration);
+ }
+
+ return NULL;
+}
+
+static const char *log_detail_get_day_in_week(
+ ph_log_detail_info * l_detail_info)
+{
+ PH_TRACE;
+ time_t stime;
+ struct tm *tmp;
+
+ stime = l_detail_info->plog_time - l_detail_info->plog_duration;
+ tmp = localtime(&stime);
+
+ switch (tmp->tm_wday)
+ {
+ case 0:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_SUNDAY);
+ case 1:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_MONDAY);
+ case 2:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_TUESDAY);
+ case 3:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_WEDNESDAY);
+ case 4:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_THURSDAY);
+ case 5:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_FRIDAY);
+ case 6:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_SATURDAY);
+ }
+ return NULL;
+}
+static int log_detail_get_group_index(ph_log_detail_info* l_detail_info)
+{
+ PH_TRACE;
+ time_t stime;
+ struct timeval timeval;
+ struct tm *tmp;
+ int yday, cur_yday;
+
+ gettimeofday(&timeval, 0);
+ tmp = localtime(&timeval.tv_sec);
+ cur_yday = tmp->tm_yday;
+
+ stime = l_detail_info->plog_time - l_detail_info->plog_duration;
+ tmp = localtime(&stime);
+
+ yday = tmp->tm_yday;
+
+ if (yday == cur_yday)
+ return -1;
+ else if (yday == (cur_yday - 1))
+ return -2;
+ else
+ return 0;
+}
+
+static char* log_detail_gl_sep_date_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ph_log_detail_info * l_detail_info = (ph_log_detail_info*) data;
+ const char *when;
+
+ if (data == NULL)
+ {
+ PH_DBG("WARNING: data is NULL");
+ return NULL;
+ }
+
+ int index = log_detail_get_group_index(l_detail_info);
+
+ if (0 == strcmp(part, "elm.text"))
+ {
+ char *date_temp;
+ ph_log_detail_data *logdetail_d;
+
+ if (-1 == index)
+ when = S_(PH_SYS_BODY_TODAY);
+ else if (-2 == index)
+ when = S_(PH_SYS_BODY_YESTERDAY);
+ else
+ when = log_detail_get_day_in_week(l_detail_info);
+
+ logdetail_d = (ph_log_detail_data *) evas_object_data_get(obj,
+ KEY_LOG_DETAIL_DATA);
+ date_temp = phone_detail_log_get_date(logdetail_d->log_d->formatter,
+ l_detail_info->plog_time - l_detail_info->plog_duration);
+ if (date_temp)
+ {
+ char buf[PATH_MAX] = { 0 };
+ snprintf(buf, sizeof(buf), " %s (%s)", when, date_temp);
+ free(date_temp);
+ return strdup(buf);
+ }
+ else
+ return strdup(when);
+ }
+ else
+ return NULL;
+
+}
+static inline void log_detail_create_itcs()
+{
+ PH_TRACE;
+ log_detail_itcs[LOG_DETAIL_ITC_DETAIL].func.text_get =
+ log_detail_gl_label_get;
+ log_detail_itcs[LOG_DETAIL_ITC_DETAIL].func.content_get =
+ log_detail_gl_icon_get;
+
+ log_detail_itcs[LOG_DETAIL_ITC_TOP_INFO_NAMED].func.text_get =
+ log_detail_gl_top_info_label_get;
+ log_detail_itcs[LOG_DETAIL_ITC_TOP_INFO_NAMED].func.content_get =
+ log_detail_gl_top_info_icon_get;
+
+ log_detail_itcs[LOG_DETAIL_ITC_TOP_INFO_NONAMED].func.text_get =
+ log_detail_gl_top_info_label_get;
+ log_detail_itcs[LOG_DETAIL_ITC_TOP_INFO_NONAMED].func.content_get =
+ log_detail_gl_top_info_icon_get;
+
+ log_detail_itcs[LOG_DETAIL_ITC_TOP_BTNS].func.content_get =
+ log_detail_gl_top_btns_icon_get;
+ log_detail_itcs[LOG_DETAIL_ITC_TITLE].func.text_get =
+ log_detail_gl_sep_date_label_get;
+}
+
+static Evas_Object* log_detail_create_genlist(ph_log_detail_data *logdetail_d,
+ Evas_Object *parent)
+{
+ PH_TRACE;
+ Evas_Object *genlist;
+
+ genlist = elm_genlist_add(parent);
+ p_retvm_if(NULL == genlist, NULL, "elm_genlist_add() return NULL");
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_data_set(genlist, KEY_LOG_DETAIL_DATA, logdetail_d);
+ elm_object_theme_set(genlist, logdetail_d->th);
+ evas_object_smart_callback_add(genlist, "realized", log_detail_gl_realized,
+ NULL);
+
+ log_detail_create_itcs();
+ return genlist;
+}
+
+static void log_detail_view_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+ int err = CONTACTS_ERROR_NONE;
+
+ p_retm_if(NULL == logdetail_d, "log detail data is null");
+
+ err = contacts_db_remove_changed_cb(_contacts_person._uri,
+ log_detail_update_view_with_contact_cb, logdetail_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_add_changed_cb() Failed(%d)", err);
+
+ evas_object_data_del(logdetail_d->navi, KEY_LOG_DETAIL_DATA);
+
+ elm_object_part_content_set(logdetail_d->layout, "elm.swallow.bg", NULL);
+
+ if (logdetail_d->th)
+ {
+ elm_theme_extension_del(logdetail_d->th, DIALER_THEME_EDJ);
+ elm_theme_free(logdetail_d->th);
+ }
+
+ if (logdetail_d->log_list)
+ log_detail_free_log_data(logdetail_d->log_list);
+
+ if (logdetail_d->idler)
+ ecore_idler_del(logdetail_d->idler);
+
+ if (logdetail_d->popup)
+ evas_object_del(logdetail_d->popup);
+
+ if (logdetail_d->m_Menu)
+ evas_object_del(logdetail_d->m_Menu);
+
+ if (logdetail_d->child_ug)
+ ug_destroy(logdetail_d->child_ug);
+
+ if (logdetail_d->log_display)
+ free(logdetail_d->log_display);
+
+ if (logdetail_d->log_number)
+ free(logdetail_d->log_number);
+
+ if (logdetail_d->log_img_path)
+ free(logdetail_d->log_img_path);
+
+ free(logdetail_d);
+}
+
+static void log_detail_back_btn_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+
+ /* TODO : remove evas_object_smart_callback_del, it will be controlled by WINSET */
+ evas_object_smart_callback_del(obj, "clicked", log_detail_back_btn_cb);
+
+ elm_naviframe_item_pop(logdetail_d->navi);
+ phone_log_missed_info_update(logdetail_d->navi);
+}
+
+static void log_detail_ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_log_detail_data* logdetail_d = static_cast<ph_log_detail_data*>(data);
+ if (NULL != logdetail_d->popup)
+ {
+ evas_object_del(logdetail_d->popup);
+ logdetail_d->popup = NULL;
+ }
+ }
+}
+
+static void log_detail_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_log_detail_data* logdetail_d = static_cast<ph_log_detail_data*>(data);
+ if (NULL != logdetail_d->m_Menu)
+ {
+ evas_object_del(logdetail_d->m_Menu);
+ logdetail_d->m_Menu = NULL;
+ }
+ }
+}
+
+static void log_detail_context_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_log_detail_data* logdetail_d = static_cast<ph_log_detail_data*>(data);
+ if (NULL != logdetail_d->m_ContextMenu)
+ {
+ evas_object_del(logdetail_d->m_ContextMenu);
+ logdetail_d->m_ContextMenu = NULL;
+ }
+ }
+}
+
+static void log_detail_ctxpopup_copy_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_MAX_LEN];
+
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data *) data;
+ evas_object_del(obj);
+ logdetail_d->m_ContextMenu = NULL;
+
+ if (logdetail_d->log_display && *logdetail_d->log_display)
+ if (logdetail_d->log_number && *logdetail_d->log_number)
+ snprintf(buf, sizeof(buf), "%s\n%s", logdetail_d->log_display,
+ logdetail_d->log_number);
+ else
+ snprintf(buf, sizeof(buf), "%s", logdetail_d->log_display);
+ else if (logdetail_d->log_number && *logdetail_d->log_number)
+ snprintf(buf, sizeof(buf), "%s", logdetail_d->log_number);
+ else
+ snprintf(buf, sizeof(buf), "%s", S_(PH_SYS_BODY_UNKNOWN));
+ elm_cnp_selection_set(logdetail_d->layout, ELM_SEL_TYPE_CLIPBOARD,
+ ELM_SEL_FORMAT_TEXT, buf, strlen(buf));
+}
+
+static void log_detail_ctxpopup_block_contact_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(data == NULL, "data is NULL");
+ ph_log_detail_data *logdetail_d = static_cast<ph_log_detail_data*>(data);
+
+ log_detail_menu_dismissed_cb(data, NULL, NULL);
+
+ logdetail_d->popup = phone_create_block_contact_popup(logdetail_d->navi, logdetail_d->contact_id);
+}
+
+static void log_detail_ctxpopup_send_number_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ assert(obj);
+ if (NULL != data && NULL != obj)
+ {
+ ph_log_detail_data *logdetail_d = static_cast<ph_log_detail_data*>(data);
+ log_detail_context_menu_dismissed_cb(logdetail_d, NULL, NULL);
+ log_detail_menu_dismissed_cb(logdetail_d, NULL, NULL);
+
+ evas_object_del(obj);
+ logdetail_d->popup = NULL;
+
+ logdetail_d->child_ug = ctui_predefined_body_msg_ug(logdetail_d->ug, NULL, 0, logdetail_d->log_number, log_detail_destroy_child_ug, logdetail_d);
+ }
+}
+
+static void log_detail_ctxpopup_copy_to_dialing_screen_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ assert(obj);
+ if (NULL != data && NULL != obj)
+ {
+ ph_log_detail_data *logdetail_d = static_cast<ph_log_detail_data*>(data);
+ log_detail_context_menu_dismissed_cb(logdetail_d, NULL, NULL);
+ log_detail_menu_dismissed_cb(logdetail_d, NULL, NULL);
+
+ evas_object_del(obj);
+ logdetail_d->popup = NULL;
+ phone_copy_to_dialing_screen(logdetail_d->log_number);
+ }
+}
+
+static void log_detail_gl_longpressed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ assert(event_info);
+ if (NULL != data && NULL != event_info)
+ {
+ ph_log_detail_data *logdetail_d = (ph_log_detail_data*) data;
+ if(logdetail_d->log_number)
+ {
+ Elm_Object_Item *it = (Elm_Object_Item *) event_info;
+
+ if (elm_genlist_item_index_get(it) <= 1)
+ {
+ logdetail_d->m_ContextMenu = elm_ctxpopup_add(logdetail_d->navi);
+ if (NULL != logdetail_d->m_ContextMenu)
+ {
+ elm_ctxpopup_direction_priority_set(logdetail_d->m_ContextMenu, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN);
+
+ evas_object_smart_callback_add(logdetail_d->m_ContextMenu, "dismissed", log_detail_context_menu_dismissed_cb, logdetail_d);
+ elm_ctxpopup_item_append(logdetail_d->m_ContextMenu, S_(CT_SYS_BODY_COPY), NULL, log_detail_ctxpopup_copy_cb, logdetail_d);
+
+ elm_ctxpopup_item_append(logdetail_d->m_ContextMenu, T_(PH_GET_TEXT_BASIC, PHTEXT_EDIT_NUMBER_BEFORE_CALL), NULL, log_detail_ctxpopup_copy_to_dialing_screen_cb, logdetail_d);
+
+ evas_object_move(logdetail_d->m_ContextMenu, 720 / 2, 50 + 142 / 2);
+ evas_object_show(logdetail_d->m_ContextMenu);
+ }
+ else
+ {
+ ERR("log_detail_gl_longpressed_cb() Failed: %s", "elm_ctxpopup_add() return NULL");
+ }
+ }
+ }
+ }
+}
+
+static void more_btn_clicked_cb(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_log_detail_data *logdetail_d = static_cast<ph_log_detail_data*>(data);
+
+ log_detail_ctxpopup_dismissed_cb(logdetail_d, NULL, NULL);
+ log_detail_context_menu_dismissed_cb(logdetail_d, NULL, NULL);
+ log_detail_menu_dismissed_cb(logdetail_d, NULL, NULL);
+
+ Evas_Object *menu = elm_ctxpopup_add(logdetail_d->navi);
+ if (NULL != menu)
+ {
+ elm_ctxpopup_direction_priority_set(menu, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN);
+ evas_object_smart_callback_add(menu, "dismissed", log_detail_menu_dismissed_cb, logdetail_d);
+
+ Elm_Object_Item* menu_item = NULL;
+ if(logdetail_d->contact_id > notRelatedToContactId)
+ {
+ menu_item = elm_ctxpopup_item_append(menu,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_EDIT_BLOCK_CONTACT), NULL, log_detail_ctxpopup_block_contact_cb, logdetail_d);
+ }
+ if( (NULL == menu_item) || (notRelatedToContactId == logdetail_d->contact_id))
+ elm_object_item_disabled_set(menu_item, EINA_TRUE);
+ elm_ctxpopup_item_append(menu, T_(PH_GET_TEXT_BASIC, PHTEXT_EDIT_SEND_NUMBER), NULL, log_detail_ctxpopup_send_number_cb, logdetail_d);
+ menu_item = elm_ctxpopup_item_append(menu, T_(PH_GET_TEXT_BASIC, PHTEXT_EDIT_COPY_TO_DIALING_SCREEN), NULL, log_detail_ctxpopup_copy_to_dialing_screen_cb, logdetail_d);
+ if (menu_item && is_unknown_contact(logdetail_d->log_number))
+ {
+ elm_object_item_disabled_set(menu_item, EINA_TRUE);
+ }
+
+ int x, y, w, h;
+ evas_object_geometry_get(logdetail_d->navi, &x, &y, &w, &h);
+ evas_object_move(menu, 0, y + h);
+ evas_object_show(menu);
+
+ logdetail_d->m_Menu = menu;
+ }
+ else
+ {
+ ERR("%s", "elm_ctxpopup_add() return NULL");
+ }
+ }
+ else
+ {
+ ERR("%s", "logdetail_d is NULL");
+ }
+}
+
+void ph_log_detail_set_toolbar(ph_log_detail_data *logdetail_d)
+{
+ PH_TRACE;
+ Elm_Object_Item *navi_it;
+ Evas_Object * delete_button = NULL;
+ Evas_Object * contact_btn = NULL;
+
+ navi_it = elm_naviframe_top_item_get(logdetail_d->navi);
+ p_retm_if(NULL == navi_it, "navi item is NULL");
+
+ phone_navi_item_reset(navi_it, logdetail_d);
+ logdetail_d->menu_cb = more_btn_clicked_cb;
+
+ Evas_Object *toolbar_box = elm_box_add(logdetail_d->navi);
+ if (!toolbar_box)
+ {
+ return;
+ }
+ elm_box_horizontal_set(toolbar_box, true);
+ evas_object_size_hint_weight_set(toolbar_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(toolbar_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_item_part_content_set(navi_it, "toolbar", toolbar_box);
+
+//delete button
+ delete_button = phone_create_toolbar_btn(toolbar_box,
+ S_(PH_SYS_SK_DELETE), log_detail_del_btn_cb, logdetail_d);
+ elm_object_style_set(delete_button, "naviframe/toolbar/right");
+
+//contact button
+ if (logdetail_d->contact_id) // view button
+ contact_btn = phone_create_toolbar_btn(toolbar_box,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_VIEW),
+ log_detail_view_clicked_cb, logdetail_d);
+ else if (logdetail_d->log_number) // save button
+ contact_btn = phone_create_toolbar_btn(toolbar_box,
+ S_(PH_SYS_OPT_ADD_TO_CONTACTS),
+ log_detail_add_contact_btn_cb, logdetail_d);
+ elm_object_style_set(contact_btn, "naviframe/toolbar/left");
+
+ elm_box_pack_end(toolbar_box, contact_btn);
+ elm_box_pack_end(toolbar_box, delete_button);
+}
+
+void ph_log_detail_update(ph_log_data *log_d)
+{
+ PH_TRACE;
+ ph_log_detail_data *logdetail_d;
+ logdetail_d = (ph_log_detail_data *) evas_object_data_get(log_d->navi,
+ KEY_LOG_DETAIL_DATA);
+
+ if (logdetail_d)
+ {
+ ph_log_info *l_info = NULL;
+ void *v_l_info = NULL;
+ ph_log_info *find_info = NULL;
+ void *v_l_detail_info = NULL;
+ Eina_List *l_detail = logdetail_d->log_list;
+ Eina_List *l;
+ Elm_Object_Item *pre_item = NULL;
+
+ EINA_LIST_FOREACH(l_detail, l_detail, v_l_detail_info)
+ {
+ ph_log_detail_info *l_detail_info =
+ (ph_log_detail_info *) v_l_detail_info;
+ l = log_d->log_list;
+ EINA_LIST_FOREACH(l, l, v_l_info)
+ {
+ l_info = (ph_log_info *) v_l_info;
+ if (l_detail_info->plog_id == l_info->id)
+ {
+ find_info = (ph_log_info *) elm_object_item_data_get(
+ l_info->item);
+ break;
+ }
+ }
+ }
+
+ if (find_info)
+ {
+ log_detail_free_log_data(logdetail_d->log_list);
+ logdetail_d->log_list = NULL;
+ if (logdetail_d->genlist)
+ elm_genlist_clear(logdetail_d->genlist);
+
+ l = eina_list_data_find_list(log_d->log_list, find_info);
+ v_l_info = (void *) l_info;
+ EINA_LIST_FOREACH(l, l, v_l_info)
+ {
+ l_info = (ph_log_info *) v_l_info;
+ ph_log_detail_info *l_detail_info =
+ (ph_log_detail_info *) calloc(1,
+ sizeof(ph_log_detail_info));
+ l_detail_info->plog_id = l_info->id;
+ l_detail_info->plog_type = l_info->plog_log_type;
+ l_detail_info->plog_time = l_info->plog_log_time;
+ l_detail_info->plog_duration = l_info->plog_duration;
+
+ if (NULL == pre_item)
+ {
+ logdetail_d->log_list = eina_list_append(
+ logdetail_d->log_list, (void*) l_detail_info);
+ pre_item = l_info->item;
+ }
+ else if (l_info->item == pre_item)
+ logdetail_d->log_list = eina_list_append(
+ logdetail_d->log_list, (void*) l_detail_info);
+ else
+ {
+ free(l_detail_info);
+ break;
+ }
+ }
+ logdetail_d->log_list_count = eina_list_count(
+ logdetail_d->log_list);
+ log_detail_fill_genlist(logdetail_d);
+ }
+ else
+ {
+ elm_naviframe_item_pop(logdetail_d->navi);
+ phone_log_missed_info_update(logdetail_d->navi);
+ }
+ }
+}
+
+Evas_Object *ph_create_log_detail_view(ph_log_data *log_d, ph_log_info *l_info)
+{
+ PH_TRACE;
+ Evas_Object *layout;
+ Evas_Object *bg;
+ Evas_Object *genlist;
+ Elm_Object_Item *navi_it;
+ ph_log_detail_data *logdetail_d;
+ Eina_List *l;
+ Elm_Object_Item *pre_item = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ ph_log_info *log_info;
+ void *v_log_info;
+ Elm_Theme *th;
+ p_retvm_if(NULL == l_info, NULL, "Log information is null");
+
+ logdetail_d = (ph_log_detail_data *) calloc(1, sizeof(ph_log_detail_data));
+ p_retvm_if(NULL == logdetail_d, NULL, "Fail to calloc ph_log_detail_data");
+ logdetail_d->ug = log_d->ug;
+ logdetail_d->win = log_d->win;
+ logdetail_d->navi = log_d->navi;
+ logdetail_d->log_d = log_d;
+ logdetail_d->start_plog_id = l_info->id;
+
+ layout = elm_layout_add(logdetail_d->navi);
+ if (NULL == layout)
+ {
+ ERR("elm_layout_add() return NULL");
+ free(logdetail_d);
+ return NULL;
+ }
+ elm_layout_theme_set(layout, "layout", "application", "noindicator");
+ logdetail_d->layout = layout;
+ elm_naviframe_prev_btn_auto_pushed_set(logdetail_d->navi, EINA_FALSE);
+
+ th = elm_theme_new();
+ elm_theme_ref_set(th, NULL);
+ elm_theme_extension_add(th, LOGDETAIL_THEME_EDJ);
+ logdetail_d->th = th;
+
+ genlist = log_detail_create_genlist(logdetail_d, layout);
+ if (NULL == genlist)
+ {
+ ERR("log_detail_create_genlist() return NULL");
+ free(logdetail_d);
+ return NULL;
+ }
+ logdetail_d->genlist = genlist;
+ elm_object_part_content_set(logdetail_d->layout, "elm.swallow.content",
+ genlist);
+
+ evas_object_smart_callback_add(genlist, "selected",
+ log_detail_gl_selected_cb, logdetail_d);
+ evas_object_smart_callback_add(genlist, "longpressed",
+ log_detail_gl_longpressed_cb, logdetail_d);
+
+ logdetail_d->contact_id = l_info->plog_ct_id;
+ logdetail_d->log_number = SAFE_STRDUP(l_info->plog_number);
+ if (l_info->plog_img_path)
+ logdetail_d->log_img_path = strdup(l_info->plog_img_path);
+ if (l_info->plog_display && *l_info->plog_display)
+ logdetail_d->log_display = strdup(l_info->plog_display);
+ logdetail_d->log_num_type = l_info->plog_num_type;
+
+ l = eina_list_data_find_list(log_d->log_list, l_info);
+ EINA_LIST_FOREACH(l, l, v_log_info)
+ {
+ log_info = (ph_log_info *) v_log_info;
+ ph_log_detail_info *l_detail_info = (ph_log_detail_info *) calloc(1,
+ sizeof(ph_log_detail_info));
+ l_detail_info->plog_id = log_info->id;
+ l_detail_info->plog_type = log_info->plog_log_type;
+ l_detail_info->plog_time = log_info->plog_log_time;
+ l_detail_info->plog_duration = log_info->plog_duration;
+
+ if (NULL == pre_item)
+ {
+ logdetail_d->log_list = eina_list_append(logdetail_d->log_list,
+ (void*) l_detail_info);
+ pre_item = log_info->item;
+ }
+ else if (log_info->item == pre_item)
+ logdetail_d->log_list = eina_list_append(logdetail_d->log_list,
+ (void*) l_detail_info);
+ else
+ {
+ free(l_detail_info);
+ break;
+ }
+ }
+ logdetail_d->log_list_count = eina_list_count(logdetail_d->log_list);
+ log_detail_fill_genlist(logdetail_d);
+
+ evas_object_event_callback_add(logdetail_d->layout, EVAS_CALLBACK_DEL,
+ log_detail_view_delete_cb, logdetail_d);
+
+ err = contacts_db_add_changed_cb(_contacts_person._uri,
+ log_detail_update_view_with_contact_cb, logdetail_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_add_changed_cb() Failed(%d)", err);
+
+ navi_it = elm_naviframe_item_push(logdetail_d->navi,
+ S_(PH_SYS_BODY_DETAILS), NULL, NULL, layout, NULL);
+ elm_naviframe_item_title_visible_set(navi_it, EINA_FALSE);
+ ph_log_detail_set_toolbar(logdetail_d);
+ evas_object_data_set(logdetail_d->navi, KEY_LOG_DETAIL_DATA, logdetail_d);
+
+ bg = phone_create_bg(logdetail_d->layout);
+ elm_object_style_set(bg, "group_list");
+
+ return layout;
+}
+
diff --git a/lib/log/ph-log-detail-view.h b/lib/log/ph-log-detail-view.h
new file mode 100755
index 0000000..8a3fceb
--- /dev/null
+++ b/lib/log/ph-log-detail-view.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PH_LOG_DETAIL_VIEW_H_
+#define __PH_LOG_DETAIL_VIEW_H_
+
+typedef struct : public Common::View
+{
+ Evas_Object *genlist;
+ Elm_Object_Item *top_item;
+ Elm_Object_Item *block_item;
+ char *log_display;
+ char *log_number;
+ char *log_img_path;
+ int contact_id; //in terms of contacts_service, this is "person_id"
+ int start_plog_id;
+ int log_num_type;
+ int log_list_count;
+ Eina_List *log_list;
+ Ecore_Idler *idler;
+ ph_log_data *log_d;
+} ph_log_detail_data;
+
+Evas_Object *ph_create_log_detail_view(ph_log_data *log_d, ph_log_info *l_info);
+void ph_log_detail_get_block_info(ph_log_detail_data *logdetail_d);
+void ph_log_detail_update(ph_log_data *log_d);
+void ph_log_detail_set_toolbar(ph_log_detail_data *logdetail_d);
+
+#endif /* __PH_LOG_DETAIL_VIEW_H_ */
diff --git a/lib/log/ph-log-main-view.cpp b/lib/log/ph-log-main-view.cpp
new file mode 100755
index 0000000..7ce18a4
--- /dev/null
+++ b/lib/log/ph-log-main-view.cpp
@@ -0,0 +1,2727 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <notification.h>
+#include <ui-gadget-module.h>
+#include "vconf-keys.h"
+#include "phone.h"
+#include "phone-log.h"
+#include "ph-log-utils.h"
+#include "ph-log-main-view.h"
+#include "ph-log-detail-view.h"
+#include "ph-log-check-view.h"
+#include "ct-detail.h"
+#include "phone-common.h"
+#include <string>
+
+#include "ViewManager.h"
+#include "CallDurationView.h"
+
+#define KEY_LOG_DATA "log_data"
+#define NO_CONTENTS_ICON_POSITION 0.35
+#define LOG_ITEM_ICON_DEFAULT_GROUP "elm/layout/log.item.layout/default"
+#define CONTACT_ID "contactId"
+#define DISPLAY_NAME "display_name"
+#define LOG_INFO "log_info"
+
+static const int longPressOneSecPeriod = 1.0;
+static const char *longPressedEvent = "longpressed";
+
+static Elm_Genlist_Item_Class * pBCItem,*pSNImem,*pCopyItem;
+static Elm_Genlist_Item_Class itc, itc_date, itc_viewby_list;
+static Evas_Object* log_fill_layout(void *data);
+static void logLongpressedCb(void *data, Evas_Object *obj,
+ void *event_info);
+enum
+{
+ PH_LIST_ALL_CALL_MESSAGE_LOG,
+ PH_LIST_MISSED_CALL_LOG,
+ PH_LIST_EMAIL_LOG,
+ PH_LIST_ALL_CALL_LOG, //more_popup
+ PH_LIST_DIALED_CALL_LOG,
+ PH_LIST_RECEIVED_CALL_LOG,
+ PH_LIST_REJECTED_CALL_LOG,
+ PH_LIST_ALL_MESSAGE_LOG,
+ PH_LIST_ALL_CALL_MESSAGE_EMAIL_LOG,
+};
+//log type
+
+enum
+{
+ VIEWBY_POPUP_ALL_CALL_LOG = 0,
+ VIEWBY_POPUP_MISSED_CALL_LOG = 1,
+ VIEWBY_POPUP_DIALED_CALL_LOG = 2,
+ VIEWBY_POPUP_RECEIVED_CALL_LOG = 3,
+ VIEWBY_POPUP_REJECTED_CALL_LOG = 4,
+};
+
+
+//set the value with viewby index
+
+static void log_gl_sweep_left(void *data, Evas_Object *obj, void *event_info);
+static void log_list_menu_hide_cb(void *data, Evas_Object *obj, void *event_info);
+
+void log_destroy_child_ug(void *data)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ph_log_data* pLogData = static_cast<ph_log_data*>(data);
+ if(pLogData->child_ug)
+ {
+ ug_destroy(pLogData->child_ug);
+ pLogData->child_ug = NULL;
+ }
+
+}
+
+static void log_gl_msg_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) evas_object_data_get(obj,
+ KEY_LOG_DATA);
+
+ if(!log_d)
+ {
+ return;
+ }
+
+ elm_genlist_item_select_mode_set(log_d->item_last_sweep,
+ ELM_OBJECT_SELECT_MODE_DEFAULT);
+ log_d->child_ug = phone_launch_msg_composer_ug(log_d->ug, (char *) data, 0,
+ log_destroy_child_ug, log_d);
+}
+
+// today: -1, yesterday : -2, previous : positive value
+static void log_append_separate_all_date_index(ph_log_data *log_d, void *data,
+ int index)
+{
+ PH_TRACE;
+ ph_log_info *l_info = (ph_log_info *) data;
+ time_t stime;
+ struct timeval timeval;
+ struct tm *tmp;
+ int yday, cur_yday;
+
+ gettimeofday(&timeval, 0);
+ tmp = localtime(&timeval.tv_sec);
+ cur_yday = tmp->tm_yday;
+
+ stime = l_info->plog_log_time - l_info->plog_duration;
+ tmp = localtime(&stime);
+
+ yday = tmp->tm_yday;
+
+ if (yday == cur_yday)
+ l_info->group_index = -1;
+ else if (yday == (cur_yday - 1))
+ l_info->group_index = -2;
+ else
+ l_info->group_index = yday;
+
+ if (yday + 1 != log_d->pre_date_type)
+ {
+ log_d->pre_date_type = yday + 1;
+ log_d->git = elm_genlist_item_append(log_d->genlist, &itc_date, data,
+ NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+ elm_genlist_item_select_mode_set(log_d->git,
+ ELM_OBJECT_SELECT_MODE_NONE);
+ }
+}
+
+static void __log_update_checked_item(ph_log_data *log_d,
+ ph_log_info *l_selected_info)
+{
+ PH_TRACE;
+
+ if(log_d)
+ {
+ ph_log_check_groupped_items(*log_d, l_selected_info->id, !l_selected_info->checked);
+ }
+
+ if (l_selected_info->checked)
+ log_d->cnt_checked += l_selected_info->grouped_count;
+ else
+ log_d->cnt_checked -= l_selected_info->grouped_count;
+}
+
+static void log_gl_item_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ service_h service;
+ char buf[16];
+ ph_log_info *l_info = (ph_log_info *) data;
+ ph_log_data *log_d = (ph_log_data *) evas_object_data_get(obj,KEY_LOG_DATA);
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ if(!log_d || !l_info || !item)
+ {
+ return;
+ }
+
+ log_list_menu_hide_cb(log_d, NULL, NULL);
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ Elm_Object_Item *last_item = log_d->item_last_sweep;
+ if(last_item)
+ {
+ log_gl_sweep_left(log_d, obj, last_item);
+ }
+
+ if(last_item == item)
+ {
+ return;
+ }
+
+ if (elm_genlist_decorate_mode_get(log_d->genlist))
+ {
+ __log_update_checked_item(log_d, l_info);
+ elm_genlist_item_fields_update((Elm_Object_Item *) event_info,
+ "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+ ph_log_check_update_select_all(log_d);
+ ph_log_check_update_selection_info(log_d);
+ ph_log_check_update_button_status(log_d);
+ return;
+ }
+
+ PH_DBG("view_type : %d", log_d->view_type);
+ switch (log_d->view_type)
+ {
+ case LOG_VIEW_TYPE_UG_LAUNCH_CALL:
+ if (l_info->plog_number && *l_info->plog_number)
+ phone_launch_voice_call(l_info->plog_ct_id,
+ l_info->plog_number);
+ break;
+ case LOG_VIEW_TYPE_UG_NUMBER_SELECT:
+ case LOG_VIEW_TYPE_UG_EMAIL_SELECT:
+ case LOG_VIEW_TYPE_UG_NUMBER_OR_EMAIL_SELECT:
+ service_create(&service);
+ snprintf(buf, sizeof(buf), "%d", l_info->id);
+ service_add_extra_data(service, PH_UG_BUNDLE_RESULT_PLOG_ID, buf);
+ PH_DBG("plog_id : %d %s", l_info->id, buf);
+ ug_send_result(log_d->ug, service);
+ service_destroy(service);
+ ug_destroy_me(log_d->ug);
+ break;
+ case LOG_VIEW_TYPE_NORMAL:
+ ph_create_log_detail_view(log_d, l_info);
+ break;
+ default:
+ ERR("Invalid view type(%d)", log_d->view_type);
+ break;
+ }
+}
+
+#define N 20
+static bool log_compare_type(int type, int pre_type)
+{
+ PH_TRACE;
+ switch (pre_type)
+ {
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING:
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING:
+ case CONTACTS_PLOG_TYPE_MMS_INCOMMING:
+ case CONTACTS_PLOG_TYPE_SMS_INCOMMING:
+ case CONTACTS_PLOG_TYPE_VOICE_OUTGOING:
+ case CONTACTS_PLOG_TYPE_VIDEO_OUTGOING:
+ case CONTACTS_PLOG_TYPE_MMS_OUTGOING:
+ case CONTACTS_PLOG_TYPE_SMS_OUTGOING:
+ switch (type)
+ {
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING:
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING:
+ case CONTACTS_PLOG_TYPE_MMS_INCOMMING:
+ case CONTACTS_PLOG_TYPE_SMS_INCOMMING:
+ case CONTACTS_PLOG_TYPE_VOICE_OUTGOING:
+ case CONTACTS_PLOG_TYPE_VIDEO_OUTGOING:
+ case CONTACTS_PLOG_TYPE_MMS_OUTGOING:
+ case CONTACTS_PLOG_TYPE_SMS_OUTGOING:
+ return true;
+ default:
+ return false;
+ }
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN:
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_SEEN:
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN:
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_SEEN:
+ switch (type)
+ {
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN:
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_SEEN:
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN:
+ case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_SEEN:
+ return true;
+ default:
+ return false;
+ }
+ case CONTACTS_PLOG_TYPE_VOICE_REJECT:
+ case CONTACTS_PLOG_TYPE_VIDEO_REJECT:
+ switch (type)
+ {
+ case CONTACTS_PLOG_TYPE_VOICE_REJECT:
+ case CONTACTS_PLOG_TYPE_VIDEO_REJECT:
+ return true;
+ default:
+ return false;
+ }
+ case CONTACTS_PLOG_TYPE_VOICE_BLOCKED:
+ case CONTACTS_PLOG_TYPE_VIDEO_BLOCKED:
+ case CONTACTS_PLOG_TYPE_SMS_BLOCKED:
+ switch (type)
+ {
+ case CONTACTS_PLOG_TYPE_VOICE_BLOCKED:
+ case CONTACTS_PLOG_TYPE_VIDEO_BLOCKED:
+ case CONTACTS_PLOG_TYPE_SMS_BLOCKED:
+ return true;
+ default:
+ return false;
+ }
+ default:
+ return false;
+ }
+}
+
+void cleanupOnLongPressPopupHide(ph_log_data& logData)
+{
+ if(logData.popup)
+ {
+ evas_object_del(logData.popup);
+ logData.popup = NULL;
+ }
+ if(logData.genlist)
+ {
+ evas_object_data_del(logData.genlist, "number");
+ evas_object_data_del(logData.genlist, "display_name");
+ }
+}
+
+void logDataPopupHideCb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ if(data)
+ {
+ cleanupOnLongPressPopupHide(*static_cast<ph_log_data*>(data));
+ }
+}
+static char *itemTextBlockContactGet(void *data, Evas_Object *obj, const char *part)
+{
+ char* result = NULL;
+ if(data == NULL)
+ {
+ ERR("data is NULL");
+ }
+ else
+ {
+ result = strdup(static_cast<const char*>(data));
+ }
+ return result;
+}
+static char * itemTextSendNumberGet(void *data, Evas_Object *obj, const char *part)
+{
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ if(obj == NULL)
+ {
+ return 0;
+ }
+ evas_object_size_hint_align_set(obj,0.5,0.5);
+ snprintf(buf, sizeof(buf)/sizeof(buf[0]),T_(PH_GET_TEXT_BASIC,PHTEXT_EDIT_SEND_NUMBER),0);
+ return strdup(buf);
+}
+static char * itemCopyDialingGet(void *data, Evas_Object *obj, const char *part)
+{
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ if(obj == NULL)
+ {
+ return 0;
+ }
+ evas_object_size_hint_align_set(obj,0.5,0.5);
+ snprintf(buf, sizeof(buf)/sizeof(buf[0]),T_(PH_GET_TEXT_BASIC,PHTEXT_EDIT_COPY_TO_DIALING_SCREEN),0);
+ return strdup(buf);
+}
+
+static void _copy_to_dialing_screen_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ assert(obj);
+ if (NULL != data && NULL != obj)
+ {
+ ph_log_data* pLogData = static_cast<ph_log_data*>(data);
+ if(NULL != pLogData->m_ContextMenu)
+ {
+ evas_object_del(pLogData->m_ContextMenu);
+ pLogData->m_ContextMenu = NULL;
+ }
+ if(NULL != pLogData->m_Menu)
+ {
+ evas_object_del(pLogData->m_Menu);
+ pLogData->m_Menu = NULL;
+ }
+ if(pLogData->popup)
+ {
+ evas_object_del(pLogData->popup);
+ pLogData->popup = NULL;
+ }
+
+ ph_log_info* pLogInfo = static_cast<ph_log_info*>(evas_object_data_get(pLogData->genlist, LOG_INFO));
+ phone_copy_to_dialing_screen(pLogInfo->plog_number);
+ }
+}
+
+static void _block_contact_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_log_data * pLogD = static_cast<ph_log_data*>(data);
+ p_retm_if(pLogD == NULL, "log data is NULL");
+ int contactId = *(static_cast<int*>(evas_object_data_get(pLogD->genlist, CONTACT_ID)));
+
+ if (pLogD)
+ {
+ cleanupOnLongPressPopupHide(*pLogD);
+ }
+
+ pLogD->popup = phone_create_block_contact_popup(pLogD->navi, contactId);
+}
+
+void itemDeletion(void *data, Evas_Object *obj)
+{
+ PH_TRACE;
+ free(static_cast<char*>(data));
+}
+
+static void _log_send_number_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_log_data* pLogData = static_cast<ph_log_data*>(data);
+ p_ret_if(NULL == pLogData);
+ ph_log_info* pLogInfo = static_cast<ph_log_info*>(evas_object_data_get(pLogData->genlist, LOG_INFO));
+ p_ret_if(NULL == pLogInfo);
+ if(pLogInfo->plog_number)
+ {
+ if(pLogData->popup)
+ {
+ evas_object_del(pLogData->popup);
+ pLogData->popup = NULL;
+ }
+ pLogData->child_ug = ctui_predefined_body_msg_ug(NULL, NULL, 0,
+ pLogInfo->plog_number, log_destroy_child_ug, pLogData);
+ }
+}
+
+Eina_Bool phCreateLongpressedPopup(void *data)
+{
+ PH_TRACE;
+ if(data == NULL)
+ {
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ ph_log_data *pLogD = static_cast<ph_log_data *>(data);
+ ph_log_info* pLogInfo = static_cast<ph_log_info*>(evas_object_data_get(pLogD->genlist, LOG_INFO));
+ p_retvm_if(NULL == pLogInfo, EINA_FALSE, "Error getting log info");
+ char *pDisplay = (char *)evas_object_data_get(pLogD->genlist, DISPLAY_NAME);
+
+ Evas_Object *pPopup = elm_popup_add(pLogD->navi);
+ if(pPopup == NULL)
+ {
+ return ECORE_CALLBACK_CANCEL;
+ }
+ pLogD->popup = pPopup;
+ elm_object_style_set(pPopup, "min_menustyle");
+ elm_object_part_text_set(pPopup,"title,text",pDisplay);
+ evas_object_smart_callback_add(pPopup, "block,clicked", logDataPopupHideCb, pLogD);
+ evas_object_size_hint_weight_set(pPopup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ Evas_Object *pBtn = elm_button_add(pPopup);
+ if (pBtn != NULL)
+ {
+ elm_object_text_set(pBtn, S_(PH_SYS_SK_CANCEL));
+ elm_object_part_content_set(pPopup, "button1", pBtn);
+ evas_object_smart_callback_add(pBtn, "clicked", logDataPopupHideCb, pLogD);
+ }
+
+ if (!pBCItem)
+ {
+ pBCItem = elm_genlist_item_class_new();
+ pBCItem->item_style = "default";
+ pBCItem->func.text_get =itemTextBlockContactGet;
+ pBCItem->func.content_get = NULL;
+ pBCItem->func.state_get = NULL;
+ pBCItem->func.del = itemDeletion;
+ }
+ if (!pSNImem)
+ {
+ pSNImem = elm_genlist_item_class_new();
+ pSNImem->item_style = "default";
+ pSNImem->func.text_get =itemTextSendNumberGet;
+ pSNImem->func.content_get = NULL;
+ pSNImem->func.state_get = NULL;
+ pSNImem->func.del = NULL;
+ }
+ if (!pCopyItem)
+ {
+ pCopyItem = elm_genlist_item_class_new();
+ pCopyItem->item_style = "default";
+ pCopyItem->func.text_get =itemCopyDialingGet;
+ pCopyItem->func.content_get = NULL;
+ pCopyItem->func.state_get = NULL;
+ pCopyItem->func.del = NULL;
+ }
+
+ Evas_Object *pGenlist = elm_genlist_add(pPopup);
+ if (pGenlist != NULL)
+ {
+ int contactId = *(static_cast<int*>(evas_object_data_get(pLogD->genlist, CONTACT_ID)));
+ evas_object_size_hint_weight_set(pGenlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pGenlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ Elm_Object_Item* item = elm_genlist_item_append(pGenlist,
+ pBCItem,
+ strdup(T_(PH_GET_TEXT_BASIC, PHTEXT_EDIT_BLOCK_CONTACT)),
+ NULL,
+ ELM_GENLIST_ITEM_NONE,
+ _block_contact_cb,
+ pLogD);
+
+ if (contactId == notRelatedToContactId)
+ {
+ elm_object_item_disabled_set(item, EINA_TRUE);
+ }
+
+ item = elm_genlist_item_append(pGenlist, pSNImem, NULL, NULL, ELM_GENLIST_ITEM_NONE, _log_send_number_cb, pLogD);
+ if(!pLogInfo->plog_number)
+ {
+ elm_object_item_disabled_set(item, EINA_TRUE);
+ }
+ elm_genlist_item_append(pGenlist, pCopyItem, NULL, NULL, ELM_GENLIST_ITEM_NONE, _copy_to_dialing_screen_cb, pLogD);
+ elm_object_content_set(pPopup, pGenlist);
+ evas_object_show(pGenlist);
+ }
+ evas_object_show(pPopup);
+ pLogD->timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void logLongpressedCb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ assert(event_info);
+ if (NULL != data && NULL != event_info)
+ {
+ ph_log_data *pLogD = static_cast<ph_log_data *>(data);
+
+ if (NULL == pLogD->item_last_sweep)
+ {
+ Elm_Object_Item *pItem = static_cast<Elm_Object_Item *>(event_info);
+ ph_log_info *pLInfo = static_cast<ph_log_info *>(elm_object_item_data_get(pItem));
+ p_ret_if(pLInfo == NULL);
+ p_ret_if(is_unknown_contact(pLInfo->plog_number));
+
+ if(pLInfo->plog_ct_id > 0)
+ {
+ evas_object_data_set(pLogD->genlist, DISPLAY_NAME, pLInfo->plog_display);
+ }
+ else
+ {
+ evas_object_data_set(pLogD->genlist, DISPLAY_NAME, pLInfo->plog_number);
+ }
+
+ evas_object_data_set(pLogD->genlist, CONTACT_ID, &pLInfo->plog_ct_id);
+ evas_object_data_set(pLogD->genlist, LOG_INFO, pLInfo);
+
+ if (pLogD->timer)
+ {
+ ecore_timer_del(pLogD->timer);
+ }
+ pLogD->timer = ecore_timer_add(longPressOneSecPeriod, phCreateLongpressedPopup, static_cast<void *>(pLogD));
+ }
+ }
+}
+
+static int log_fill_genlist_sub(ph_log_data * log_d, Eina_List *l,
+ ph_log_info *pre_info)
+{
+ PH_TRACE;
+ void *v_l_info;
+ int count;
+ int cnt_append;
+ int pre_type;
+ int pre_date;
+ int pre_ct_id;
+ int last_group_base_id = 0;
+ bool diff;
+ char *pre_num;
+ Elm_Object_Item * item;
+ Elm_Object_Item *pre_item;
+
+ if (pre_info)
+ {
+ pre_date = pre_info->group_index;
+ pre_ct_id = pre_info->plog_ct_id;
+ pre_type = pre_info->plog_log_type;
+ pre_item = pre_info->item;
+ pre_num = SAFE_STRDUP(pre_info->plog_number);
+ }
+ else
+ {
+ pre_date = -3;
+ pre_ct_id = -1;
+ pre_type = CONTACTS_PLOG_TYPE_NONE;
+ pre_item = NULL;
+ pre_num = NULL;
+ }
+
+ cnt_append = 0;
+ count = 0;
+ EINA_LIST_FOREACH(l, l, v_l_info)
+ {
+ ph_log_info *l_info = (ph_log_info *) v_l_info;
+ if (N == cnt_append)
+ break;
+ diff = false;
+ log_append_separate_all_date_index(log_d, l_info,
+ cnt_append + log_d->readed_n);
+
+ if (l_info->group_index != pre_date)
+ diff = true;
+ else if (!log_compare_type(l_info->plog_log_type, pre_type))
+ diff = true;
+ else if (0 < l_info->plog_ct_id && 0 < pre_ct_id
+ && l_info->plog_ct_id != pre_ct_id)
+ diff = true;
+ else if (l_info->plog_number && *l_info->plog_number)
+ {
+ if (!pre_num)
+ diff = true;
+ else if (strcmp(l_info->plog_number, pre_num))
+ diff = true;
+ }
+
+ if (diff)
+ {
+ if (pre_num)
+ free(pre_num);
+ if (l_info->plog_number && *l_info->plog_number)
+ {
+
+ item = elm_genlist_item_append(log_d->genlist, &itc, l_info,
+ log_d->git, ELM_GENLIST_ITEM_NONE, log_gl_item_sel,
+ l_info);
+ elm_object_item_data_set(item,(void *)l_info);
+ pre_num = strdup(l_info->plog_number);
+ }
+ else
+ {
+ item = elm_genlist_item_append(log_d->genlist, &itc, l_info,
+ log_d->git, ELM_GENLIST_ITEM_NONE, log_gl_item_sel,
+ l_info);
+ pre_num = NULL;
+ }
+ pre_date = l_info->group_index;
+ pre_type = l_info->plog_log_type;
+ pre_ct_id = l_info->plog_ct_id;
+ pre_item = item;
+ l_info->grouped_count = 1;
+ pre_info = l_info;
+ cnt_append++;
+ last_group_base_id = l_info->id;
+ }
+ else
+ pre_info->grouped_count++;
+
+ l_info->group_base_id = last_group_base_id;
+ l_info->item = pre_item;
+ count++;
+ }
+ return count;
+}
+
+static Eina_Bool log_append_item_part(void *data)
+{
+ PH_TRACE;
+ int count;
+ Eina_List *l;
+ ph_log_info *l_info;
+ ph_log_data * log_d = (ph_log_data *) data;
+
+ l = eina_list_nth_list(log_d->log_list, log_d->readed_n - 1);
+ l_info = (ph_log_info *) l->data;
+ count = log_fill_genlist_sub(log_d, l->next, l_info);
+ if (N <= count)
+ {
+ log_d->readed_n += count;
+ return ECORE_CALLBACK_RENEW;
+ }
+ else
+ {
+ log_d->list_idler = NULL;
+ return ECORE_CALLBACK_CANCEL;
+ }
+}
+
+static void log_fill_genlist(ph_log_data * log_d)
+{
+ PH_TRACE;
+ int count;
+
+ p_retm_if(NULL == log_d || NULL == log_d->genlist, "Genlist is null");
+
+ if (log_d->list_idler)
+ {
+ ecore_idler_del(log_d->list_idler);
+ log_d->list_idler = NULL;
+ }
+
+ log_d->readed_n = 0;
+ count = log_fill_genlist_sub(log_d, log_d->log_list, NULL);
+
+ if (N <= count)
+ {
+ log_d->readed_n += count;
+ log_d->list_idler = ecore_idler_add(log_append_item_part, log_d);
+ }
+}
+
+static void log_free_log_list(ph_log_data *log_d)
+{
+ PH_TRACE;
+ void *v_l_info = NULL;
+
+ if (log_d->log_list)
+ {
+
+ EINA_LIST_FREE(log_d->log_list, v_l_info)
+ {
+ ph_log_info *l_info = (ph_log_info *) v_l_info;
+ if (NULL == l_info)
+ continue;
+ free(l_info->plog_display);
+ free(l_info->plog_img_path);
+ free(l_info->plog_number);
+ free(l_info);
+ }
+ log_d->log_list = NULL;
+ }
+}
+
+/**
+ * @brief Gets log list, depending on @a type of logs
+ * @remark pCts_list must be released with contacts_list_destroy() by you
+ * @param[in] type Type of logs
+ * @param[out] pCts_list List of logs
+ * @return true if success, otherwise false
+ */
+static bool get_log_list(int type, contacts_list_h* pCts_list)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+ contacts_list_h tempList = NULL;
+
+ int log_type_min(0), log_type_max(0);
+ switch (type)
+ {
+ case PH_LIST_MISSED_CALL_LOG:
+ log_type_min = CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN;
+ log_type_max = CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_SEEN;
+ break;
+ case PH_LIST_EMAIL_LOG:
+ log_type_min = CONTACTS_PLOG_TYPE_EMAIL_RECEIVED;
+ log_type_max = CONTACTS_PLOG_TYPE_EMAIL_SENT;
+ break;
+ case PH_LIST_ALL_CALL_LOG:
+ log_type_min = CONTACTS_PLOG_TYPE_VOICE_INCOMMING;
+ log_type_max = CONTACTS_PLOG_TYPE_VIDEO_BLOCKED;
+ break;
+ case PH_LIST_DIALED_CALL_LOG:
+ log_type_min = CONTACTS_PLOG_TYPE_VOICE_OUTGOING;
+ log_type_max = CONTACTS_PLOG_TYPE_VIDEO_OUTGOING;
+ break;
+ case PH_LIST_RECEIVED_CALL_LOG:
+ log_type_min = CONTACTS_PLOG_TYPE_VOICE_INCOMMING;
+ log_type_max = CONTACTS_PLOG_TYPE_VIDEO_INCOMMING;
+ break;
+ case PH_LIST_REJECTED_CALL_LOG:
+ log_type_min = CONTACTS_PLOG_TYPE_VOICE_REJECT;
+ log_type_max = CONTACTS_PLOG_TYPE_VIDEO_REJECT;
+ break;
+ case PH_LIST_ALL_MESSAGE_LOG:
+ log_type_min = CONTACTS_PLOG_TYPE_MMS_INCOMMING;
+ log_type_max = CONTACTS_PLOG_TYPE_MMS_BLOCKED;
+ break;
+ case PH_LIST_ALL_CALL_MESSAGE_LOG:
+ default:
+ log_type_min = CONTACTS_PLOG_TYPE_VOICE_INCOMMING;
+ log_type_max = CONTACTS_PLOG_TYPE_MMS_BLOCKED;
+ break;
+ }
+
+ if( contacts_query_create(_contacts_person_phone_log._uri, &query) == CONTACTS_ERROR_NONE
+ && contacts_filter_create(_contacts_person_phone_log._uri, &filter) == CONTACTS_ERROR_NONE)
+ {
+ if (type == PH_LIST_DIALED_CALL_LOG || type == PH_LIST_RECEIVED_CALL_LOG)
+ {
+ if(contacts_filter_add_int(filter, _contacts_person_phone_log.log_type,
+ CONTACTS_MATCH_EQUAL, log_type_min) == CONTACTS_ERROR_NONE)
+ {
+ if(contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR)
+ == CONTACTS_ERROR_NONE)
+ {
+ err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type,
+ CONTACTS_MATCH_EQUAL, log_type_max);
+ }
+ }
+ }
+ else
+ {
+ if(contacts_filter_add_int(filter, _contacts_person_phone_log.log_type,
+ CONTACTS_MATCH_GREATER_THAN_OR_EQUAL, log_type_min) == CONTACTS_ERROR_NONE)
+ {
+ if(contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND)
+ == CONTACTS_ERROR_NONE)
+ {
+ err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type,
+ CONTACTS_MATCH_LESS_THAN_OR_EQUAL, log_type_max);
+ }
+ }
+ }
+ }
+
+ if(CONTACTS_ERROR_NONE == err)
+ {
+ err = contacts_query_set_filter(query, filter)
+ && contacts_query_set_sort(query, _contacts_person_phone_log.log_time, false);
+ if(CONTACTS_ERROR_NONE == err)
+ {
+ err = contacts_db_get_records_with_query(query, 0, 0, &tempList);
+ }
+ }
+
+ if(CONTACTS_ERROR_NONE != err)
+ {
+ ERR("Query failed err: %d", err);
+ }
+
+ err &= contacts_query_destroy(query);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_query_destroy() Failed(%d)", err);
+ err &= contacts_filter_destroy(filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_filter_destroy() Failed(%d)", err);
+
+ if(CONTACTS_ERROR_NONE == err)
+ {
+ if(pCts_list)
+ {
+ if(*pCts_list)
+ {
+ contacts_list_destroy(*pCts_list, true);
+ }
+ *pCts_list = tempList;
+ }
+ }
+
+ return (CONTACTS_ERROR_NONE == err);
+}
+
+/**
+ * @brief Checks whether the same date
+ * @param[in] currentTime Current time
+ * @param[in] previousTime Previous time
+ * @return true if the same date, otherwise false
+ */
+static bool isTheSameDate(time_t currentTime, time_t previousTime)
+{
+ PH_TRACE;
+ struct tm *tmp = localtime(&currentTime);
+ int currentYearDay = tmp->tm_yday;
+ int currentYear = tmp->tm_year;
+ tmp = localtime(&previousTime);
+ int previousYearDay = tmp->tm_yday;
+ int previousYear = tmp->tm_year;
+
+ return (currentYear == previousYear && currentYearDay == previousYearDay);
+}
+
+/**
+ * @brief Get count of log items in the log tab
+ * @param[in] logList List of all logs from DB
+ * @return Count of logs
+ */
+static size_t get_checkable_logs_count(contacts_list_h logList)
+{
+ PH_TRACE;
+ const int defaultValue = 0;
+ size_t checkableLogsCount(0);
+
+ int previousType = CONTACTS_PLOG_TYPE_NONE;
+ int previousDate = defaultValue;
+ int previousContactId = defaultValue;
+ bool isDifferentItem = false;
+ char *previousNumber = NULL;
+
+ size_t logListCount(0);
+ contacts_list_get_count(logList, &logListCount);
+ size_t currentPos(0);
+ if(logListCount > 0 && (contacts_list_first(logList) == CONTACTS_ERROR_NONE))
+ {
+ do
+ {
+ contacts_record_h currRecord = NULL;
+ if(contacts_list_get_current_record_p(logList, &currRecord) == CONTACTS_ERROR_NONE)
+ {
+ int logDate(defaultValue);
+ int logType(CONTACTS_PLOG_TYPE_NONE);
+ int personId(defaultValue);
+ int contactId(defaultValue);
+ char* logNumber = NULL;
+ if( contacts_record_get_int(currRecord, _contacts_person_phone_log.log_time, &logDate)
+ == CONTACTS_ERROR_NONE
+ && contacts_record_get_int(currRecord, _contacts_person_phone_log.log_type, &logType)
+ == CONTACTS_ERROR_NONE
+ && contacts_record_get_str(currRecord, _contacts_person_phone_log.address, &logNumber)
+ == CONTACTS_ERROR_NONE
+ && contacts_record_get_int(currRecord, _contacts_person_phone_log.person_id, &personId)
+ == CONTACTS_ERROR_NONE)
+ {
+ if(personId != 0)
+ {
+ contactId = phone_get_contact_id_by_person_id(personId);
+ }
+
+ isDifferentItem = false;
+ if( !isTheSameDate(logDate, previousDate)
+ || !log_compare_type(logType, previousType)
+ || ((contactId > 0) && (previousContactId > 0) && (contactId != previousContactId)) )
+ {
+ isDifferentItem = true;
+ }
+ else if(logNumber && *logNumber)
+ {
+ if( !previousNumber
+ || strcmp(logNumber, previousNumber))
+ {
+ isDifferentItem = true;
+ }
+ }
+
+ if(isDifferentItem)
+ {
+ free(previousNumber);
+ if(logNumber)
+ {
+ previousNumber = strdup(logNumber);
+ }
+ else
+ {
+ previousNumber = NULL;
+ }
+ previousDate = logDate;
+ previousType = logType;
+ previousContactId = contactId;
+ ++checkableLogsCount;
+ }
+ }
+ free(logNumber);
+ }
+ ++currentPos;
+ }
+ while(currentPos < logListCount && (contacts_list_next(logList) == CONTACTS_ERROR_NONE));
+ }
+ return checkableLogsCount;
+}
+
+/**
+ * @brief Gets count of logs in the database according to the type of @a type
+ * @param[in] type Filter value for counting
+ * @param[out] pLogList List of logs
+ * @return Count of logs
+ */
+static size_t get_cts_log_list(int type, contacts_list_h* pLogList)
+{
+ PH_TRACE;
+ size_t recordCount(0);
+
+ // if output param NULL, just count the records
+ if (NULL == pLogList)
+ {
+ contacts_list_h tempList = NULL;
+ if(contacts_list_create(&tempList) == CONTACTS_ERROR_NONE)
+ {
+ if(get_log_list(type, &tempList))
+ {
+ contacts_list_get_count(tempList, static_cast<unsigned int*>(&recordCount));
+ contacts_list_destroy(tempList, true);
+ }
+ }
+ }
+ else
+ {
+ if(get_log_list(type, pLogList))
+ {
+ contacts_list_get_count(*pLogList, static_cast<unsigned int*>(&recordCount));
+ }
+ }
+ return recordCount;
+}
+
+static int log_load_data(int type, ph_log_data* log_d, bool include_unknown)
+{
+ PH_TRACE;
+ int count = 0;
+ int omit_count = 0;
+ contacts_list_h cts_list = NULL;
+ int err = CONTACTS_ERROR_NONE;
+
+ count = (int) get_cts_log_list(type, &cts_list);
+ if(count > 0)
+ {
+ log_d->log_checkable_count = get_checkable_logs_count(cts_list);
+ contacts_list_first(cts_list);
+ }
+ while (CONTACTS_ERROR_NONE == err && count > 0)
+ {
+ ph_log_info *l_info = NULL;
+ char *number;
+ err = phone_cts_get_str_from_list(cts_list,
+ _contacts_person_phone_log.address, &number);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() Failed(%d)", err);
+
+ if (false == include_unknown && (!number || !*number))
+ {
+ err = contacts_list_next(cts_list);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ omit_count++;
+ continue;
+ }
+
+ l_info = (ph_log_info *) calloc(1, sizeof(ph_log_info));
+ p_retvm_if(l_info == NULL, 0, "ph_log_info calloc Failed.");
+
+ err = phone_cts_get_int_from_list(cts_list, _contacts_person_phone_log.log_id, &l_info->id);
+ err = phone_cts_get_int_from_list(cts_list, _contacts_person_phone_log.person_id, &l_info->plog_ct_id);
+ l_info->plog_number = SAFE_STRDUP(number);
+ err = phone_cts_get_int_from_list(cts_list, _contacts_person_phone_log.log_time, &l_info->plog_log_time);
+ err = phone_cts_get_int_from_list(cts_list, _contacts_person_phone_log.log_type, &l_info->plog_log_type);
+ err = phone_cts_get_int_from_list(cts_list, _contacts_person_phone_log.extra_data1, &l_info->plog_duration);
+ err = phone_cts_get_int_from_list(cts_list, _contacts_person_phone_log.address_type, &l_info->plog_num_type);
+
+ err = phone_cts_get_str_from_list(cts_list, _contacts_person_phone_log.display_name, &l_info->plog_display);
+ err = phone_cts_get_str_from_list(cts_list, _contacts_person_phone_log.image_thumbnail_path, &l_info->plog_img_path);
+
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_next() Failed(%d)", err);
+ log_d->log_list = eina_list_append(log_d->log_list, (void*) l_info);
+
+ err = contacts_list_next(cts_list);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ }
+ contacts_list_destroy(cts_list, true);
+
+ return count;
+}
+static int log_get_log_list_type(int viewby_type)
+{
+ PH_TRACE;
+ switch (viewby_type)
+ {
+ case VIEWBY_ALL_CALL:
+ return PH_LIST_ALL_CALL_LOG;
+ case VIEWBY_MISSED_CALL:
+ return PH_LIST_MISSED_CALL_LOG;
+ case VIEWBY_DIALED_CALL:
+ return PH_LIST_DIALED_CALL_LOG;
+ case VIEWBY_RECEIVED_CALL:
+ return PH_LIST_RECEIVED_CALL_LOG;
+ case VIEWBY_REJECTED_CALL:
+ return PH_LIST_REJECTED_CALL_LOG;
+ default:
+ return PH_LIST_ALL_CALL_MESSAGE_LOG;
+ }
+}
+static void log_load_list(ph_log_data * log_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == log_d, "Parameter is null");
+ log_free_log_list(log_d);
+
+ // need to reset all log count
+ log_d->all_log_list_count = -1;
+
+ switch (log_d->view_type)
+ {
+ case LOG_VIEW_TYPE_UG_EMAIL_SELECT:
+ case LOG_VIEW_TYPE_UG_EMAIL_CHECK:
+ log_d->log_list_count = log_load_data(PH_LIST_EMAIL_LOG, log_d,
+ true);
+ break;
+ case LOG_VIEW_TYPE_NORMAL:
+ case LOG_VIEW_TYPE_UG_LAUNCH_CALL:
+ if (log_get_log_list_type(log_d->viewby_type)
+ == PH_LIST_ALL_CALL_MESSAGE_LOG)
+ log_d->all_log_list_count = log_d->log_list_count =
+ log_load_data(PH_LIST_ALL_CALL_MESSAGE_LOG, log_d,
+ true);
+ else
+ log_d->log_list_count = log_load_data(
+ log_get_log_list_type(log_d->viewby_type), log_d, true);
+ break;
+ case LOG_VIEW_TYPE_UG_NUMBER_OR_EMAIL_CHECK:
+ case LOG_VIEW_TYPE_UG_NUMBER_OR_EMAIL_SELECT:
+ log_d->log_list_count = log_load_data(
+ PH_LIST_ALL_CALL_MESSAGE_EMAIL_LOG, log_d, true);
+ break;
+ case LOG_VIEW_TYPE_UG_NUMBER_CHECK:
+ case LOG_VIEW_TYPE_UG_NUMBER_SELECT:
+ default:
+ log_d->all_log_list_count = log_d->log_list_count = log_load_data(
+ PH_LIST_ALL_CALL_MESSAGE_LOG, log_d, true);
+ break;
+ }
+
+ //all_log_count for dim
+ if (log_d->all_log_list_count == -1)
+ log_d->all_log_list_count = get_cts_log_list(
+ PH_LIST_ALL_CALL_MESSAGE_LOG, NULL);
+}
+
+static void log_update_db_result_cb(int err, void *user_data)
+{
+ PH_TRACE;
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "log_update_db_result_cb() result : error(%d)", err);
+ p_retm_if(user_data == NULL,
+ "log_update_db_result_cb() list handle is NULL.");
+ contacts_list_h cts_list = (contacts_list_h) user_data;
+
+ err = contacts_list_destroy(cts_list, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_destroy() result : error(%d)", err);
+
+ return;
+}
+Eina_Bool ph_log_set_log_as_seen(int index, int type)
+{
+ PH_TRACE;
+ int logtype = 0;
+ contacts_record_h log_record = NULL;
+ contacts_list_h cts_list = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+ unsigned int record_cnt = 0;
+
+ p_retvm_if(
+ CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN != type && CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN != type && CONTACTS_PLOG_TYPE_NONE != type,
+ false,
+ "The type is invalid. It must be CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN"
+ " or CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN or none");
+
+ if (0 == index)
+ {
+ err = contacts_query_create(_contacts_phone_log._uri, &query);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_query_create() Failed(%d)", err);
+
+ err = contacts_filter_create(_contacts_phone_log._uri, &filter);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_filter_create() Failed(%d)", err);
+ err = contacts_query_destroy(query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_destroy() Failed(%d)", err);
+ return false;
+ }
+
+ if (CONTACTS_PLOG_TYPE_NONE == type)
+ {
+ err = contacts_filter_add_int(filter, _contacts_phone_log.log_type,
+ CONTACTS_MATCH_EQUAL,
+ CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_filter_add_int() Failed(%d)", err);
+ err = contacts_query_destroy(query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_destroy() Failed(%d)", err);
+ err = contacts_filter_destroy(filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_destroy() Failed(%d)", err);
+ return false;
+ }
+
+ err = contacts_filter_add_operator(filter,
+ CONTACTS_FILTER_OPERATOR_OR);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_filter_add_bool() Failed(%d)", err);
+ err = contacts_query_destroy(query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_destroy() Failed(%d)", err);
+ err = contacts_filter_destroy(filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_destroy() Failed(%d)", err);
+ return false;
+ }
+
+ err = contacts_filter_add_int(filter, _contacts_phone_log.log_type,
+ CONTACTS_MATCH_EQUAL,
+ CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_filter_add_int() Failed(%d)", err);
+ err = contacts_query_destroy(query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_destroy() Failed(%d)", err);
+ err = contacts_filter_destroy(filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_destroy() Failed(%d)", err);
+ return false;
+ }
+
+ err = contacts_query_set_filter(query, filter);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_query_set_filter() Failed(%d)", err);
+ err = contacts_query_destroy(query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_destroy() Failed(%d)", err);
+ err = contacts_filter_destroy(filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_destroy() Failed(%d)", err);
+ return false;
+ }
+
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_create() Failed(%d)", err);
+ err = contacts_query_destroy(query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_destroy() Failed(%d)", err);
+ err = contacts_filter_destroy(filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_destroy() Failed(%d)", err);
+ return false;
+ }
+
+ err = contacts_db_get_records_with_query(query, 0, 0, &cts_list);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_get_records_with_query() Failed(%d)", err);
+ err = contacts_query_destroy(query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_destroy() Failed(%d)", err);
+ err = contacts_filter_destroy(filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_destroy() Failed(%d)", err);
+ return false;
+ }
+
+ contacts_list_get_count(cts_list, &record_cnt);
+ PH_DBG(
+ "get phonelogs table records(index: %d, log_type:%d, count:%d)",
+ index, type, record_cnt);
+
+ while (CONTACTS_ERROR_NONE == err && record_cnt > 0)
+ {
+ phone_cts_get_int_from_list(cts_list,
+ _contacts_phone_log.log_type, &logtype);
+ err = contacts_list_get_current_record_p(cts_list, &log_record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_get_current_record_p() Failed(%d)", err);
+ err = contacts_record_set_int(log_record,
+ _contacts_phone_log.log_type, logtype + 1);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_list_next(cts_list);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ }
+ if (record_cnt > 0)
+ {
+ err = contacts_db_update_records_async(cts_list,
+ log_update_db_result_cb, cts_list);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_records_async() Failed(%d)", err);
+ }
+ }
+ else
+ {
+ err = contacts_filter_add_int(filter, _contacts_phone_log.log_type,
+ CONTACTS_MATCH_EQUAL, type);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_filter_add_int() Failed(%d)", err);
+ err = contacts_query_destroy(query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_destroy() Failed(%d)", err);
+ err = contacts_filter_destroy(filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_destroy() Failed(%d)", err);
+ return false;
+ }
+
+ err = contacts_query_set_filter(query, filter);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_query_set_filter() Failed(%d)", err);
+ err = contacts_query_destroy(query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_destroy() Failed(%d)", err);
+ err = contacts_filter_destroy(filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_destroy() Failed(%d)", err);
+ return false;
+ }
+
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_create() Failed(%d)", err);
+ err = contacts_query_destroy(query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_destroy() Failed(%d)", err);
+ err = contacts_filter_destroy(filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_destroy() Failed(%d)", err);
+ return false;
+ }
+
+ err = contacts_db_get_records_with_query(query, 0, 0, &cts_list);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_get_records_with_query() Failed(%d)", err);
+ err = contacts_query_destroy(query);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_query_destroy() Failed(%d)", err);
+ err = contacts_filter_destroy(filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_destroy() Failed(%d)", err);
+ return false;
+ }
+
+ contacts_list_get_count(cts_list, &record_cnt);
+ PH_DBG(
+ "get phonelogs table records(index: %d, log_type:%d, count:%d)",
+ index, type, record_cnt);
+
+ while (CONTACTS_ERROR_NONE == err && record_cnt > 0)
+ {
+ err = contacts_list_get_current_record_p(cts_list, &log_record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_get_current_record_p() Failed(%d)", err);
+ err = contacts_record_set_int(log_record,
+ _contacts_phone_log.log_type, type + 1);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_set_int() Failed(%d)", err);
+
+ err = contacts_list_next(cts_list);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ }
+ if (record_cnt > 0)
+ {
+ err = contacts_db_update_records_async(cts_list,
+ log_update_db_result_cb, cts_list);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_records_async() Failed(%d)", err);
+ }
+ }
+ }
+ else
+ {
+ PH_DBG("get phonelogs table record(index: %d, log_type:%d)",
+ index, type);
+ err = contacts_db_get_record(_contacts_phone_log._uri, index,
+ &log_record);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, false,
+ "contacts_db_get_record() Failed(%d)", err);
+
+ err = contacts_record_get_int(log_record, _contacts_phone_log.log_type,
+ &logtype);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_record() Failed(%d)", err);
+ err = contacts_record_set_int(log_record, _contacts_phone_log.log_type,
+ logtype + 1);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_record() Failed(%d)", err);
+ err = contacts_db_update_record(log_record);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_update_record() Failed(%d)", err);
+ err = contacts_record_destroy(log_record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ return true;
+ }
+
+ err = contacts_query_destroy(query);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_query_destroy() Failed(%d)",
+ err);
+ err = contacts_filter_destroy(filter);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_filter_destroy() Failed(%d)", err);
+
+ return true;
+}
+
+Eina_Bool ph_log_missed_call_count_reset(void *data)
+{
+ PH_TRACE;
+ ph_log_data * log_d = (ph_log_data *) data;
+
+ notification_delete_group_by_group_id(VOICECALL_PKG, NOTIFICATION_TYPE_NOTI,
+ 1001);
+ notification_delete_group_by_group_id(VIDEOCALL_PKG, NOTIFICATION_TYPE_NOTI,
+ 1001);
+
+ ph_log_set_log_as_seen(0, CONTACTS_PLOG_TYPE_NONE);
+
+ log_d->timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+}
+
+API void phone_log_set_background(Evas_Object *obj, bool is_background)
+{
+ PH_TRACE;
+ ph_log_data *log_d;
+ log_d = (ph_log_data *) evas_object_data_get(obj, KEY_LOG_DATA);
+ p_retm_if(NULL == log_d, "log data is null");
+
+ log_d->is_background = is_background;
+ if (log_d->update_timer)
+ {
+ ecore_timer_del(log_d->update_timer);
+ log_d->update_timer = NULL;
+ ph_log_data_changed_cb(log_d);
+ }
+}
+
+API void phone_log_missed_info_update(void *layout)
+{
+ PH_TRACE;
+ ph_log_data *log_d;
+ log_d = (ph_log_data *) evas_object_data_get((const Evas_Object *) layout,
+ KEY_LOG_DATA);
+ p_retm_if(NULL == log_d, "log data is null");
+
+ if (elm_naviframe_top_item_get(log_d->navi)
+ == elm_naviframe_bottom_item_get(log_d->navi))
+ {
+ if (LOG_VIEW_TYPE_NORMAL == log_d->view_type)
+ {
+ if (log_d->timer)
+ ecore_timer_del(log_d->timer);
+ log_d->timer = ecore_timer_add(1.0, ph_log_missed_call_count_reset,
+ (void*) log_d);
+ }
+ }
+}
+
+static void log_list_popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_log_data *log_d = static_cast<ph_log_data*>( data );
+ if (NULL != log_d->popup)
+ {
+ evas_object_del(log_d->popup);
+ log_d->popup = NULL;
+ }
+ }
+}
+
+static void log_list_menu_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_log_data *log_d = static_cast<ph_log_data*>( data );
+ if (NULL != log_d->m_Menu)
+ {
+ evas_object_del(log_d->m_Menu);
+ log_d->m_Menu = NULL;
+ }
+ }
+}
+
+static void log_sweep_delete_reponse_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data && NULL != obj)
+ {
+ ph_log_info *l_info = static_cast<ph_log_info*>(data);
+ ph_log_data *log_d = static_cast<ph_log_data*>(evas_object_data_get(obj, KEY_LOG_DATA));
+
+ log_list_popup_hide_cb(log_d, NULL, NULL);
+
+ int err = CONTACTS_ERROR_NONE;
+ err = ph_log_util_del_log_by_id(log_d->log_list, l_info);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ phone_show_tickernoti (S_(PH_SYS_POP_FAILED));
+ }
+ else
+ {
+ phone_show_tickernoti(S_(PH_SYS_POP_DELETED));
+ }
+ }
+}
+
+static void log_gl_sweep_del_btn_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_log_info *l_info = (ph_log_info *) data;
+ ph_log_data *log_d = (ph_log_data *) evas_object_data_get(obj,
+ KEY_LOG_DATA);
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ Evas_Object *btn;
+
+ if(!log_d || !l_info)
+ {
+ return;
+ }
+
+ elm_genlist_item_select_mode_set(log_d->item_last_sweep,
+ ELM_OBJECT_SELECT_MODE_DEFAULT);
+ snprintf(buf, sizeof(buf), "%s?", S_(PH_SYS_SK_DELETE));
+ btn = phone_create_confirm_popup(&log_d->popup, log_d->win, buf,
+ log_sweep_delete_reponse_cb, (void *) l_info);
+ evas_object_data_set(btn, KEY_LOG_DATA, log_d);
+}
+
+static void log_gl_sweep_left(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) data;
+
+ if (!event_info || !log_d)
+ {
+ return;
+ }
+
+ if (!obj)
+ {
+ evas_object_smart_callback_add(obj, longPressedEvent,logLongpressedCb, data);
+ }
+
+ elm_genlist_item_decorate_mode_set((Elm_Object_Item *) event_info, "slide",EINA_FALSE);
+ elm_genlist_item_select_mode_set((Elm_Object_Item *) event_info, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ log_d->item_last_sweep = NULL;
+}
+
+static void log_gl_sweep_right(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) data;
+
+ if (!event_info || !log_d || !obj)
+ {
+ return;
+ }
+ evas_object_smart_callback_del(obj,longPressedEvent,logLongpressedCb);
+ if(log_d->item_last_sweep != event_info)
+ {
+ log_gl_sweep_left(data, obj, log_d->item_last_sweep);
+ }
+
+ elm_genlist_item_decorate_mode_set((Elm_Object_Item *) event_info, "slide", EINA_TRUE);
+ elm_genlist_item_select_mode_set((Elm_Object_Item *) event_info, ELM_OBJECT_SELECT_MODE_NONE);
+ log_d->item_last_sweep = (Elm_Object_Item *) event_info;
+}
+
+static void log_gl_sweep_up_down(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) data;
+ Elm_Object_Item * item;
+
+ if (!obj || !log_d)
+ {
+ return;
+ }
+ item = (Elm_Object_Item *) elm_genlist_decorated_item_get(obj);
+ if (item)
+ {
+ elm_genlist_item_decorate_mode_set(item, "slide", EINA_FALSE);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ log_d->item_last_sweep = NULL;
+ }
+}
+
+
+void scroll_drag_start_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ if(obj)
+ {
+ evas_object_smart_callback_del(obj,longPressedEvent,logLongpressedCb);
+ }
+}
+void scroll_drag_end_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_log_data *log_d = static_cast<ph_log_data *>(data);
+ if(log_d && obj)
+ {
+ evas_object_smart_callback_add(obj, longPressedEvent,logLongpressedCb, log_d);
+ }
+}
+static char* log_gl_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ char buf[PH_TEXT_MAX_LEN] = { 0 };
+ ph_log_info *l_info = (ph_log_info *) data;
+
+ if (data == NULL)
+ {
+ PH_DBG("WARNING: data is NULL");
+ return NULL;
+ }
+
+ if (0 == strcmp(part, "elm.text.1"))
+ {
+ if (NULL == l_info->plog_number || '\0' == l_info->plog_number[0])
+ {
+ snprintf(buf, PH_TEXT_MAX_LEN, "%s", S_(PH_SYS_BODY_UNKNOWN));
+ }
+ else if(0 == l_info->plog_ct_id)
+ {
+ snprintf(buf, PH_TEXT_MAX_LEN, "%s", l_info->plog_number);
+ }
+ else if(l_info->plog_ct_id > 0)
+ {
+ if (l_info->plog_display && *l_info->plog_display)
+ {
+ snprintf(buf, PH_TEXT_MAX_LEN, "%s", l_info->plog_display);
+ }
+ else
+ {
+ snprintf(buf, PH_TEXT_MAX_LEN, "%s", T_(CT_GET_TEXT_ERR, CTTEXT_NONAME));
+ }
+ }
+ }
+ else if(0 == strcmp(part, "elm.text.2"))
+ {
+ ph_log_data * log_d;
+ char *time;
+ log_d = (ph_log_data *) evas_object_data_get(obj, KEY_LOG_DATA);
+ time = ph_log_util_get_formatted_date(log_d->formatter,
+ l_info->plog_log_time - l_info->plog_duration,
+ PH_LOG_TIME_ONLY);
+ snprintf(buf, PH_TEXT_MAX_LEN, "%s", time);
+ free(time);
+ }
+ else if(0 == strcmp(part, "elm.text.3"))
+ {
+ if(NULL == l_info->plog_number || '\0' == l_info->plog_number[0])
+ {
+ buf[0] = '\0';
+ }
+ else if(0 == l_info->plog_ct_id)
+ {
+ snprintf(buf, PH_TEXT_MAX_LEN, "%s", T_(PH_GET_TEXT_BASIC, PHTEXT_UNSAVED));
+ }
+ else if(l_info->plog_ct_id > 0)
+ {
+ if (l_info->plog_display && *l_info->plog_display)
+ {
+ snprintf(buf, PH_TEXT_MAX_LEN, "%s", l_info->plog_number);
+ }
+ }
+ }
+ else if(0 == strcmp(part, "elm.text.4"))
+ {
+ if(l_info->grouped_count > 0)
+ {
+ snprintf(buf, PH_TEXT_MAX_LEN, "(%d)", l_info->grouped_count);
+ }
+ }
+ return strdup(buf);
+}
+
+static void log_gl_call_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_log_info * l_info = (ph_log_info *) data;
+ ph_log_data *log_d = (ph_log_data *) evas_object_data_get(obj,
+ KEY_LOG_DATA);
+
+ p_retm_if(NULL == l_info, "parameter(l_info) is NULL");
+ p_retm_if(NULL == log_d, "log_d is NULL");
+ p_retm_if(NULL == l_info->plog_number|| '\0' == *l_info->plog_number,
+ "number is NULL");
+ elm_genlist_item_select_mode_set(log_d->item_last_sweep,
+ ELM_OBJECT_SELECT_MODE_DEFAULT);
+ phone_launch_voice_call(l_info->plog_ct_id, l_info->plog_number);
+}
+
+void ct_list_destroy_child_ug(void *data)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) data;
+ log_d->child_ug = NULL;
+
+}
+
+static Evas_Object *log_gl_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ char buf[PATH_MAX];
+ ph_log_info * l_info = (ph_log_info *) data;
+ ph_log_data * log_d;
+ Evas_Object * returnContent = NULL;
+
+ buf[0] = '\0';
+ log_d = (ph_log_data *) evas_object_data_get(obj, KEY_LOG_DATA);
+
+ if (0 == strcmp(part, "elm.icon.1"))
+ {
+ Evas_Object* layout = NULL;
+ layout = elm_layout_add(obj);
+ p_retvm_if(NULL == layout, NULL, "elm_layout_add is failed");
+ elm_layout_file_set(layout, LOG_ITEM_ICON_EDJ, LOG_ITEM_ICON_DEFAULT_GROUP);
+
+ Evas_Object* icon1 = NULL;
+ icon1 = elm_icon_add(layout);
+ p_retvm_if(NULL == icon1, NULL, "elm_icon_add is failed");
+ if(!l_info->plog_img_path || !(*l_info->plog_img_path))
+ {
+ elm_image_file_set(icon1, IMG_DEFAULT, NULL);
+ }
+ else
+ {
+ elm_image_file_set(icon1, l_info->plog_img_path, NULL);
+ }
+ evas_object_size_hint_aspect_set(icon1, EVAS_ASPECT_CONTROL_VERTICAL,
+ 1, 1);
+
+ Evas_Object* icon2 = NULL;
+ icon2 = elm_icon_add(layout);
+ p_retvm_if(NULL == icon2, NULL, "elm_icon_add is failed");
+ char *icon2_path = phone_detail_log_get_icon_path_with_action(
+ l_info->plog_log_type);
+ elm_image_file_set(icon2, icon2_path, NULL);
+ evas_object_size_hint_aspect_set(icon2, EVAS_ASPECT_CONTROL_VERTICAL,
+ 1, 1);
+
+ elm_object_part_content_set(layout, "elm.swallow.icon.1", icon1);
+ elm_object_part_content_set(layout, "elm.swallow.icon.2", icon2);
+
+ evas_object_show(icon1);
+ evas_object_show(icon2);
+ evas_object_show(layout);
+
+ returnContent = layout;
+ }
+ else if (0 == strcmp(part, "elm.icon.2"))
+ {
+ char *icon_type = phone_detail_log_get_icon_type(l_info->plog_log_type);
+ if (icon_type)
+ {
+ Evas_Object *ic = NULL;
+ snprintf(buf, sizeof(buf), "%s", icon_type);
+ free(icon_type);
+
+ ic = elm_icon_add(obj);
+ p_retvm_if(NULL == ic, NULL, "elm_icon_add is failed");
+ elm_image_file_set(ic, buf, NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL,
+ 1, 1);
+ returnContent = ic;
+ }
+ }
+ else if (0 == strcmp(part, "elm.icon.3"))
+ {
+ if (LOG_VIEW_TYPE_NORMAL != log_d->view_type
+ && LOG_VIEW_TYPE_UG_LAUNCH_CALL != log_d->view_type)
+ {
+ }
+ else if (NULL == l_info->plog_number || '\0' == l_info->plog_number[0])
+ {
+ }
+ else
+ {
+ Evas_Object *btn = NULL;
+ Evas_Object *ic = NULL;
+ btn = elm_button_add(obj);
+ ic = elm_icon_add(btn);
+ p_retvm_if(NULL == ic, NULL, "elm_icon_add is failed");
+ elm_image_file_set(ic, PH_IMG_ICON_PHONE, NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1,
+ 1);
+ elm_object_part_content_set(btn, "icon", ic);
+ evas_object_propagate_events_set(btn, EINA_FALSE);
+ evas_object_smart_callback_add(btn, "clicked", log_gl_call_btn_cb,
+ l_info);
+ returnContent = btn;
+ }
+ }
+ else if (0 == strcmp(part, "elm.slide.swallow.1"))
+ {
+ Evas_Object *btn = NULL;
+ if (l_info->plog_number && *l_info->plog_number)
+ {
+ btn = phone_create_list_sweep_btn(obj, PH_IMG_ICON_CALL);
+ p_retvm_if(NULL == btn, NULL,
+ "phone_create_list_sweep_btn() return NULL");
+
+ evas_object_data_set(btn, KEY_LOG_DATA, log_d);
+ evas_object_smart_callback_add(btn, "clicked", log_gl_call_btn_cb,
+ l_info);
+ returnContent = btn;
+ }
+ else
+ {
+ btn = phone_create_list_sweep_btn(obj, PH_IMG_ICON_CALL_DIM);
+ p_retvm_if(NULL == btn, NULL,
+ "phone_create_list_sweep_btn is failed");
+ evas_object_data_set(btn, KEY_LOG_DATA, log_d);
+ elm_object_disabled_set(btn, true);
+ returnContent = btn;
+
+ }
+ }
+ else if (0 == strcmp(part, "elm.slide.swallow.2"))
+ {
+ Evas_Object *btn = NULL;
+ if (l_info->plog_number && *l_info->plog_number)
+ {
+ btn = phone_create_list_sweep_btn(obj, PH_IMG_ICON_MESSAGE);
+ p_retvm_if(NULL == btn, NULL,
+ "phone_create_list_sweep_btn is failed");
+ evas_object_data_set(btn, KEY_LOG_DATA, log_d);
+ evas_object_smart_callback_add(btn, "clicked", log_gl_msg_btn_cb,
+ l_info->plog_number);
+ returnContent = btn;
+ }
+ else
+ {
+ btn = phone_create_list_sweep_btn(obj, PH_IMG_ICON_MESSAGE_DIM);
+ p_retvm_if(NULL == btn, NULL,
+ "phone_create_list_sweep_btn is failed");
+ evas_object_data_set(btn, KEY_LOG_DATA, log_d);
+ elm_object_disabled_set(btn, true);
+ returnContent = btn;
+ }
+
+ }
+
+ else if (0 == strcmp(part, "elm.slide.swallow.3"))
+ {
+ Evas_Object *btn = NULL;
+ btn = phone_create_list_sweep_btn(obj, PH_IMG_ICON_DELETE);
+ p_retvm_if(NULL == btn, NULL,
+ "phone_create_list_sweep_btn() return NULL");
+
+ evas_object_data_set(btn, KEY_LOG_DATA, log_d);
+ evas_object_smart_callback_add(btn, "clicked", log_gl_sweep_del_btn_cb,
+ l_info);
+ returnContent = btn;
+ }
+
+ else if (0 == strcmp(part, "elm.edit.icon.1"))
+ {
+ Evas_Object *check = NULL;
+ check = elm_check_add(obj);
+ evas_object_data_set(check, "person_info", l_info);
+ evas_object_propagate_events_set(check, EINA_FALSE);
+ p_retvm_if(NULL == check, NULL, "elm_check_add() return NULL");
+ elm_check_state_pointer_set(check, &l_info->checked);
+ evas_object_smart_callback_add(check, "changed",
+ ph_log_check_check_changed_cb, log_d);
+ returnContent = check;
+ }
+
+ return returnContent;
+}
+
+static const char *log_get_day_in_week(ph_log_info *l_info)
+{
+ PH_TRACE;
+ time_t stime;
+ struct tm *tmp;
+
+ stime = l_info->plog_log_time - l_info->plog_duration;
+ tmp = localtime(&stime);
+
+ switch (tmp->tm_wday)
+ {
+ case 0:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_SUNDAY);
+ case 1:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_MONDAY);
+ case 2:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_TUESDAY);
+ case 3:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_WEDNESDAY);
+ case 4:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_THURSDAY);
+ case 5:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_FRIDAY);
+ case 6:
+ return T_(PH_GET_TEXT_DAY, PHTEXT_BODY_SATURDAY);
+ }
+ return NULL;
+}
+
+static char* log_gl_sep_date_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ph_log_info *l_info = (ph_log_info *) data;
+ const char *when;
+ int index = l_info->group_index;
+
+ if (0 == strcmp(part, "elm.text"))
+ {
+ char *date_temp;
+ ph_log_data *log_d;
+
+ if (-1 == index)
+ when = S_(PH_SYS_BODY_TODAY);
+ else if (-2 == index)
+ when = S_(PH_SYS_BODY_YESTERDAY);
+ else
+ when = log_get_day_in_week(l_info);
+
+ log_d = (ph_log_data *) evas_object_data_get(obj, KEY_LOG_DATA);
+ date_temp = phone_detail_log_get_date(log_d->formatter,
+ l_info->plog_log_time - l_info->plog_duration);
+ if (date_temp)
+ {
+ char buf[PATH_MAX] = { 0 };
+ snprintf(buf, sizeof(buf), " %s (%s)", when, date_temp);
+ free(date_temp);
+ return strdup(buf);
+ }
+ else
+ return strdup(when);
+ }
+ else
+ return NULL;
+}
+
+static void log_cancel_clicked_cb(void *data)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) data;
+ ph_log_check_mode_end(log_d, true);
+}
+
+static Evas_Object* log_create_genlist(ph_log_data * log_d)
+{
+ PH_TRACE;
+ Evas_Object *genlist = elm_genlist_add(log_d->box);
+ p_retvm_if(NULL == genlist, NULL, "elm_genlist_add() return NULL");
+
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_genlist_homogeneous_set(genlist, EINA_TRUE);
+ evas_object_show(genlist);
+ evas_object_data_set(genlist, KEY_LOG_DATA, log_d);
+
+ if (!log_d->ug)
+ {
+ evas_object_smart_callback_add(genlist, "drag,start,right", log_gl_sweep_right, log_d);
+
+ evas_object_smart_callback_add(genlist, "drag,start,left",
+ log_gl_sweep_left, log_d);
+ evas_object_smart_callback_add(genlist, "scroll,drag,stop", scroll_drag_end_cb,log_d);
+ evas_object_smart_callback_add(genlist, "scroll,drag,start", scroll_drag_start_cb,log_d);
+ evas_object_smart_callback_add(genlist, "drag,start,up",
+ log_gl_sweep_up_down, log_d);
+ evas_object_smart_callback_add(genlist, "drag,start,down",
+ log_gl_sweep_up_down, log_d);
+ evas_object_smart_callback_add(genlist, longPressedEvent,
+ logLongpressedCb, log_d);
+ }
+ elm_genlist_block_count_set(genlist, 10);
+ return genlist;
+}
+
+static Evas_Object* log_fill_layout(void *data)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) data;
+ if (0 < log_d->log_list_count)
+ {
+ if (NULL == log_d->genlist)
+ log_d->genlist = log_create_genlist(log_d);
+ else
+ {
+ elm_genlist_clear(log_d->genlist);
+ log_d->pre_date_type = 0;
+ }
+ log_fill_genlist(log_d);
+ return log_d->genlist;
+ }
+ else
+ {
+ Evas_Object *noc;
+ noc = phone_create_nocontents(log_d->box,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_NO_LOGS));
+ p_retvm_if(NULL == noc, NULL, "phone_create_nocontents() return NULL");
+ evas_object_size_hint_weight_set(noc, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(noc, EVAS_HINT_FILL,
+ NO_CONTENTS_ICON_POSITION);
+ evas_object_show(noc);
+
+ return noc;
+ }
+}
+
+static void load_logs_with_checked_state(ph_log_data &log_d)
+{
+ if (NULL == log_d.log_list)
+ {
+ log_load_list(&log_d);
+ return;
+ }
+
+ unsigned int count = eina_list_count(log_d.log_list);
+ CheckedState checkedValues[count];
+
+ Eina_List* cList = NULL;
+ void* cListInfo = NULL;
+ ph_log_info* clog = NULL;
+
+ int i =0;
+ EINA_LIST_FOREACH(log_d.log_list, cList, cListInfo)
+ {
+ clog = static_cast<ph_log_info*>(cListInfo);
+ if (clog)
+ {
+ CheckedState state(clog->id, clog->checked, clog->grouped_count);
+ checkedValues[i++] = state;
+ }
+ }
+
+ log_load_list(&log_d);
+
+ i = 0;
+ char* newNumber = NULL;
+ EINA_LIST_FOREACH(log_d.log_list, cList, cListInfo)
+ {
+ clog = static_cast<ph_log_info*>(cListInfo);
+ if (clog)
+ {
+ if (clog->id == checkedValues[i].getId())
+ {
+ if (! (i == 1 && newNumber && newNumber == clog->plog_number))
+ {
+ clog->checked = checkedValues[i].isChecked();
+ }
+ ++i;
+ }
+ else
+ {
+ newNumber = clog->plog_number;
+ }
+ }
+ }
+}
+
+static void update_select_all_state(ph_log_data &log_d)
+{
+ if (log_d.select_all_layout)
+ {
+ Evas_Object *check = elm_object_part_content_get(log_d.select_all_layout, "elm.icon");
+ if (check)
+ {
+ elm_check_state_set(check, EINA_FALSE);
+ }
+ }
+ if (log_d.layout)
+ {
+ phone_hide_notify(log_d.layout);
+ }
+}
+
+Eina_Bool ph_log_data_changed_cb(void *data)
+{
+ PH_TRACE;
+ Evas_Object *content;
+
+ ph_log_data *log_d = (ph_log_data *) data;
+ p_retv_if(log_d == NULL,EINA_FALSE);
+
+ if (log_d->update_timer)
+ {
+ ecore_timer_del(log_d->update_timer);
+ log_d->update_timer = NULL;
+ }
+
+ if (log_d->list_idler)
+ {
+ ecore_idler_del(log_d->list_idler);
+ log_d->list_idler = NULL;
+ }
+
+ load_logs_with_checked_state(*log_d);
+ update_select_all_state(*log_d);
+
+ elm_box_unpack(log_d->box, log_d->content);
+ evas_object_del(log_d->content);
+ log_d->content = NULL;
+ if (log_d->genlist)
+ {
+ log_d->genlist = NULL;
+ log_d->pre_date_type = 0;
+ }
+
+ content = log_fill_layout(log_d);
+ p_retvm_if(NULL == content, ECORE_CALLBACK_CANCEL,
+ "log_fill_layout() return NULL");
+ log_d->content = content;
+
+ elm_box_pack_end(log_d->box, content);
+ if (LOG_VIEW_TYPE_UG_NUMBER_CHECK == log_d->view_type
+ || LOG_VIEW_TYPE_NORMAL_CHECK == log_d->view_type
+ || LOG_VIEW_TYPE_UG_EMAIL_CHECK == log_d->view_type
+ || LOG_VIEW_TYPE_UG_NUMBER_OR_EMAIL_CHECK == log_d->view_type)
+ phone_log_check_mode_start(log_d);
+ ph_log_check_update_button_status(log_d);
+ if (log_d->logdetail_update)
+ {
+ ph_log_detail_update(log_d);
+ log_d->logdetail_update = false;
+ }
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void log_data_lazy_update(const char* view_uri, void* data)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) data;
+ if (log_d->update_timer)
+ {
+ ecore_timer_del(log_d->update_timer);
+ log_d->update_timer = NULL;
+ }
+
+ if (log_d->is_background)
+ log_d->update_timer = ecore_timer_add(3.0, ph_log_data_changed_cb,
+ log_d);
+ else
+ ph_log_data_changed_cb(log_d);
+
+}
+
+static void log_data_updated(const char* view_uri, void* data)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) data;
+ log_d->logdetail_update = true;
+ if (log_d->p_info == NULL)
+ log_data_lazy_update(_contacts_phone_log._uri, log_d);
+}
+
+static void log_view_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) data;
+ p_retm_if(NULL == log_d, "log_d is null");
+
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_db_remove_changed_cb(_contacts_person._uri,
+ log_data_lazy_update, log_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_remove_changed_cb() Failed(%d)", err);
+ err = contacts_db_remove_changed_cb(_contacts_phone_log._uri,
+ log_data_updated, log_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_remove_changed_cb() Failed(%d)", err);
+
+ vconf_ignore_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED,
+ ph_log_timezone_changed);
+ evas_object_data_del(log_d->navi, KEY_LOG_DATA);
+
+ log_free_log_list(log_d);
+
+ if (log_d->list_idler)
+ ecore_idler_del(log_d->list_idler);
+
+ log_list_popup_hide_cb(data, NULL, NULL);
+ log_list_menu_hide_cb(data, NULL, NULL);
+
+ if (log_d->p_info)
+ {
+ log_d->p_info->alive = false;
+ pthread_join(log_d->p_info->thread, NULL);
+ ecore_timer_del(log_d->p_info->timer);
+ free(log_d->p_info);
+ }
+
+ if (log_d->timer)
+ ecore_timer_del(log_d->timer);
+
+ if (log_d->update_timer)
+ ecore_timer_del(log_d->update_timer);
+
+ phone_detail_log_delete_date_format(log_d->formatter);
+
+ free(log_d);
+}
+static Evas_Object* viewby_gl_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ Evas_Object *radio;
+ viewby_list_item *popup_i = (viewby_list_item*) data;
+ Evas_Object *radio_main = NULL;
+
+ if (!strcmp(part, "elm.icon"))
+ {
+ radio = elm_radio_add(obj);
+ p_retvm_if(NULL == radio, NULL, "elm_radio_add() return NULL");
+
+ if (0 == popup_i->index)
+ {
+ evas_object_data_set(obj, "radio_main", radio);
+ }
+ else
+ {
+ radio_main = (Evas_Object *) evas_object_data_get(obj,
+ "radio_main");
+ p_retvm_if(NULL == radio_main, NULL,
+ "evas_object_data_get() return NULL");
+ elm_radio_group_add(radio, radio_main);
+ }
+
+ elm_radio_state_value_set(radio, popup_i->index);
+ if (radio_main && popup_i->state_index == popup_i->index)
+ elm_radio_value_set(radio_main, popup_i->state_index);
+
+ evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_propagate_events_set(radio, EINA_TRUE);
+
+ return radio;
+
+ }
+
+ return NULL;
+
+}
+
+static char *viewby_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ PH_TRACE;
+ viewby_list_item *popup_i = (viewby_list_item*) data;
+
+ if (!strcmp(part, "elm.text"))
+ {
+ switch (popup_i->index)
+ {
+
+ case VIEWBY_POPUP_ALL_CALL_LOG:
+ return strdup("All calls");
+ break;
+ case VIEWBY_POPUP_MISSED_CALL_LOG:
+ return strdup("Missed calls");
+ break;
+ case VIEWBY_POPUP_DIALED_CALL_LOG:
+ return strdup("Dialed calls");
+ break;
+ case VIEWBY_POPUP_RECEIVED_CALL_LOG:
+ return strdup("Received calls");
+ break;
+ case VIEWBY_POPUP_REJECTED_CALL_LOG:
+ return strdup("Rejected calls");
+ break;
+ default:
+ return strdup("Error");
+ break;
+ }
+ }
+ else
+ return NULL;
+}
+
+static Eina_Bool viewby_gl_state_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ return EINA_FALSE;
+}
+
+static void viewby_gl_del(void *data, Evas_Object *obj)
+{
+ PH_TRACE;
+ return;
+}
+
+static void viewby_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+
+ viewby_list_item *popup_i;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ ph_log_data *log_d = (ph_log_data *) data;
+ Evas_Object *content = NULL;
+ Evas_Object * delete_button = NULL;
+ p_retm_if(NULL == log_d, "log_d is NULL");
+ p_retm_if(NULL == item, "item is null");
+
+ popup_i = (viewby_list_item *) elm_object_item_data_get(item);
+ popup_i->state_index = popup_i->index;
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ elm_genlist_item_update(item);
+
+ switch (popup_i->index)
+ {
+ case VIEWBY_POPUP_ALL_CALL_LOG:
+ log_d->viewby_type = VIEWBY_ALL_CALL;
+ break;
+ case VIEWBY_POPUP_MISSED_CALL_LOG:
+ log_d->viewby_type = VIEWBY_MISSED_CALL;
+ break;
+ case VIEWBY_POPUP_DIALED_CALL_LOG:
+ log_d->viewby_type = VIEWBY_DIALED_CALL;
+ break;
+ case VIEWBY_POPUP_RECEIVED_CALL_LOG:
+ log_d->viewby_type = VIEWBY_RECEIVED_CALL;
+ break;
+ case VIEWBY_POPUP_REJECTED_CALL_LOG:
+ log_d->viewby_type = VIEWBY_REJECTED_CALL;
+ break;
+ default:
+ log_d->viewby_type = VIEWBY_ALL_CALL;
+ }
+
+ log_load_list(log_d);
+
+ elm_box_unpack(log_d->box, log_d->content);
+ evas_object_del(log_d->content);
+ log_d->content = NULL;
+ if (log_d->genlist)
+ {
+ log_d->genlist = NULL;
+ log_d->pre_date_type = 0;
+ }
+ content = log_fill_layout(log_d);
+ p_retm_if(NULL == content,
+ "log_fill_layout() return NULL");
+ log_d->content = content;
+ elm_box_pack_end(log_d->box, log_d->content);
+
+ log_list_popup_hide_cb(log_d, NULL, NULL);
+ log_list_menu_hide_cb(data, NULL, NULL);
+
+ delete_button = elm_object_part_content_get(log_d->layout,
+ "toolbar");
+ if (0 == log_d->log_list_count)
+ {
+ elm_object_disabled_set(delete_button, EINA_TRUE);
+ }
+ else
+ {
+ elm_object_disabled_set(delete_button, EINA_FALSE);
+ }
+}
+
+static void log_set_genlist_item_style()
+{
+ PH_TRACE;
+ itc.item_style = "4text.1icon.3";
+ itc.decorate_item_style = "mode/slide3";
+ itc.decorate_all_item_style = "edit_default";
+ itc.func.text_get = log_gl_label_get;
+ itc.func.content_get = log_gl_icon_get;
+ itc.func.state_get = NULL;
+
+ itc_date.item_style = "grouptitle";
+ itc_date.func.text_get = log_gl_sep_date_label_get;
+
+ itc_viewby_list.item_style = "1text.1icon.2";
+ itc_viewby_list.func.text_get = viewby_gl_text_get;
+ itc_viewby_list.func.content_get = viewby_gl_icon_get;
+ itc_viewby_list.func.state_get = viewby_gl_state_get;
+ itc_viewby_list.func.del = viewby_gl_del;
+}
+
+static void log_genlist_update(Evas_Object *genlist)
+{
+ PH_TRACE;
+ Elm_Object_Item * item;
+ p_retm_if(NULL == genlist, "Genlist is null");
+
+ item = elm_genlist_first_item_get(genlist);
+ while (item)
+ {
+ elm_genlist_item_update(item);
+ item = elm_genlist_item_next_get(item);
+ }
+}
+
+API void phone_log_views_update(Evas_Object *navi)
+{
+ PH_TRACE;
+ ph_log_data *log_d;
+ ph_log_detail_data *logdetail_d;
+
+ log_d = (ph_log_data *) evas_object_data_get(navi, KEY_LOG_DATA);
+ if (log_d)
+ {
+ phone_detail_log_generate_date_format(log_d->formatter);
+ log_genlist_update(log_d->genlist);
+ }
+
+ logdetail_d = (ph_log_detail_data *) evas_object_data_get(navi,
+ "logdetail_d");
+ if (logdetail_d)
+ log_genlist_update(logdetail_d->genlist);
+}
+
+void ph_log_timezone_changed(keynode_t* key, void *data)
+{
+ PH_TRACE;
+ phone_log_views_update((Evas_Object *) data);
+}
+
+API void phone_log_view_resume(Evas_Object *navi)
+{
+ PH_TRACE;
+
+ phone_log_missed_info_update(navi);
+
+}
+
+API void phone_log_view_reset(Evas_Object *navi)
+{
+ PH_TRACE;
+ ph_log_data *log_d;
+ Elm_Object_Item * item;
+
+ log_d = (ph_log_data *) evas_object_data_get(navi, KEY_LOG_DATA);
+ p_retm_if(NULL == log_d, "log_d is null");
+
+ if (log_d->child_ug)
+ {
+ ug_destroy(log_d->child_ug);
+ log_d->child_ug = NULL;
+ }
+
+ item = elm_naviframe_bottom_item_get(log_d->navi);
+ if (elm_naviframe_top_item_get(log_d->navi) != item)
+ elm_naviframe_item_pop_to(item);
+ else if (LOG_VIEW_TYPE_NORMAL_CHECK == log_d->view_type)
+ ph_log_check_mode_end(log_d, true);
+ else if (log_d->item_last_sweep)
+ {
+ elm_genlist_item_decorate_mode_set(log_d->item_last_sweep, "slide",
+ EINA_FALSE);
+ elm_genlist_item_select_mode_set(log_d->item_last_sweep,
+ ELM_OBJECT_SELECT_MODE_DEFAULT);
+ log_d->item_last_sweep = NULL;
+ }
+ log_d->ctrl_item = NULL;
+}
+
+API void phone_viewby_type_set(Evas_Object *layout, int viewby_type)
+{
+ PH_TRACE;
+ ph_log_data *log_d;
+ log_d = (ph_log_data *) evas_object_data_get(layout, KEY_LOG_DATA);
+ p_retm_if(NULL == log_d, "log data is NULL");
+ log_d->viewby_type = viewby_type;
+}
+
+static void log_settings_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_log_data * log_d = static_cast<ph_log_data *>(data);
+ check_if(!log_d, return);
+
+ log_list_popup_hide_cb(log_d, NULL, NULL);
+ log_list_menu_hide_cb(data, NULL, NULL);
+
+ log_d->child_ug = phone_launch_settings_ug(log_d->ug, CONTACTS_SETTINGS_UG, log_destroy_child_ug, log_d);
+}
+
+static void log_duration_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_log_data * log_d = static_cast<ph_log_data *>(data);
+ check_if(!log_d, return);
+
+ log_list_popup_hide_cb(log_d, NULL, NULL);
+ log_list_menu_hide_cb(data, NULL, NULL);
+
+ Phone::Logs::CallDurationView *view = new Phone::Logs::CallDurationView();
+ bool success = view->initialize(log_d->navi);
+ check_if(!success, delete view; return);
+
+ Common::ViewManager *manager = static_cast<Common::ViewManager *>(evas_object_data_get(log_d->navi, "ViewManager"));
+ assert(manager);
+ if(manager)
+ {
+ manager->push(*view);
+ }
+ else
+ {
+ delete view;
+ }
+}
+
+static void log_delete_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_log_data * log_d = (ph_log_data *) data;
+ p_retm_if(NULL == log_d, "log data is null");
+
+ log_list_popup_hide_cb(log_d, NULL, NULL);
+ log_list_menu_hide_cb(data, NULL, NULL);
+
+ phone_log_check_mode_start(log_d);
+}
+
+static void viewby_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+
+ Evas_Object *popup;
+ Evas_Object *genlist;
+ ph_log_data *log_d = (ph_log_data *) data;
+ int i;
+ viewby_list_item *popup_i;
+ Elm_Object_Item * item;
+
+ log_list_popup_hide_cb(data, NULL, NULL);
+ log_list_menu_hide_cb(data, NULL, NULL);
+
+ popup = elm_popup_add(log_d->navi);
+ log_d->popup = popup;
+ elm_object_style_set(popup, "menustyle");
+ elm_object_part_text_set(popup, "title,text",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_VIEW));
+ genlist = elm_genlist_add(popup);
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ Evas_Object *cancel_btn = elm_button_add(popup);
+ elm_object_style_set(cancel_btn, "popup_button/default");
+ elm_object_text_set(cancel_btn, S_(PH_SYS_SK_CANCEL));
+ elm_object_part_content_set(popup, "button1", cancel_btn);
+ evas_object_smart_callback_add(cancel_btn, "clicked",
+ log_list_popup_hide_cb, log_d);
+
+ for (i = 0; i < VIEWBY_MAX; i++)
+ {
+ popup_i = (viewby_list_item*) calloc(1, sizeof(viewby_list_item));
+ popup_i->index = i;
+ popup_i->state_index = log_d->viewby_type;
+ item = elm_genlist_item_append(genlist, &itc_viewby_list,
+ (void *) popup_i, NULL, ELM_GENLIST_ITEM_NONE, viewby_gl_sel,
+ log_d);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ }
+
+ elm_object_content_set(popup, genlist);
+ evas_object_show(popup);
+}
+
+static void more_btn_clicked_cb(void *data)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_log_data *log_d = static_cast<ph_log_data*>(data);
+
+ log_list_popup_hide_cb(data, NULL, NULL);
+ log_list_menu_hide_cb(data, NULL, NULL);
+
+ Evas_Object *menu = elm_ctxpopup_add(log_d->navi);
+ if (NULL != menu)
+ {
+ Elm_Object_Item *last_item = log_d->item_last_sweep;
+ if (last_item)
+ {
+ log_gl_sweep_left(log_d, NULL, last_item);
+ }
+
+ if(log_d->log_list_count > 0)
+ {
+ elm_ctxpopup_item_append(menu, S_(PH_SYS_SK_DELETE), NULL, log_delete_clicked_cb, log_d);
+ elm_ctxpopup_item_append(menu, T_(CT_GET_TEXT_BASIC, CTTEXT_VIEW_BY), NULL, viewby_clicked_cb, log_d);
+ elm_ctxpopup_item_append(menu, T_(PH_GET_TEXT_BASIC, PHTEXT_CALL_DURATION), NULL, log_duration_clicked_cb, log_d);
+ }
+ elm_ctxpopup_item_append(menu, T_(PH_GET_TEXT_BASIC, PHTEXT_SETTINGS), NULL, log_settings_clicked_cb, log_d);
+
+ elm_ctxpopup_direction_priority_set(menu, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN);
+
+ evas_object_smart_callback_add(menu, "dismissed", log_list_menu_hide_cb, log_d);
+
+ int x, y, w, h;
+ evas_object_geometry_get(log_d->navi, &x, &y, &w, &h);
+
+ evas_object_move(menu, 0, y + h);
+ evas_object_show(menu);
+
+ log_d->m_Menu = menu;
+ }
+ else
+ {
+ ERR("more_btn_clicked_cb failed: ", "elm_ctxpopup_add() return NULL");
+ }
+ }
+}
+
+API void phone_log_set_navi(Evas_Object *layout)
+{
+ PH_TRACE;
+ ph_log_data *log_d;
+ Elm_Object_Item *navi_it;
+
+ log_d = (ph_log_data *) evas_object_data_get(layout, KEY_LOG_DATA);
+ p_retm_if(NULL == log_d, "log data is NULL");
+
+ navi_it = elm_naviframe_bottom_item_get(log_d->navi);
+ p_retm_if(NULL == navi_it, "navi item is NULL");
+
+ phone_navi_item_reset(log_d->navi_item, log_d);
+
+ switch (log_d->view_type)
+ {
+ case LOG_VIEW_TYPE_NORMAL:
+ case LOG_VIEW_TYPE_UG_LAUNCH_CALL:
+ log_d->menu_cb = more_btn_clicked_cb;
+ if(log_d->ctrl_item)
+ {
+ elm_object_part_content_unset(log_d->layout, "toolbar");
+ evas_object_hide(log_d->ctrl_item);
+ }
+ break;
+ case LOG_VIEW_TYPE_NORMAL_CHECK:
+ {
+ if(!log_d->ctrl_item)
+ {
+ log_d->ctrl_item = phone_create_toolbar_btn(log_d->layout,
+ S_(PH_SYS_SK_DELETE), ph_log_check_del_btn_cb, log_d);
+ }
+
+ elm_object_part_content_set(log_d->layout, "toolbar",
+ log_d->ctrl_item);
+
+ if (0 == log_d->cnt_checked)
+ {
+ elm_object_disabled_set(log_d->ctrl_item, EINA_TRUE);
+ }
+ else
+ {
+ elm_object_disabled_set(log_d->ctrl_item, EINA_FALSE);
+ }
+
+ log_d->back_cb = log_cancel_clicked_cb;
+ }
+ break;
+
+ case LOG_VIEW_TYPE_UG_NUMBER_CHECK:
+ case LOG_VIEW_TYPE_UG_EMAIL_CHECK:
+ case LOG_VIEW_TYPE_UG_NUMBER_OR_EMAIL_CHECK:
+ {
+ log_d->ctrl_item = phone_create_toolbar_btn(log_d->layout,
+ S_(CT_SYS_SK_DONE), ph_log_check_done_btn_cb, log_d);
+ elm_object_part_content_set(log_d->layout, "toolbar",
+ log_d->ctrl_item);
+ }
+ break;
+ case LOG_VIEW_TYPE_UG_NUMBER_SELECT:
+ case LOG_VIEW_TYPE_UG_EMAIL_SELECT:
+ case LOG_VIEW_TYPE_UG_NUMBER_OR_EMAIL_SELECT:
+ default:
+ break;
+ }
+
+ if (log_d->ctrl_item)
+ ph_log_check_update_button_status(log_d);
+}
+
+int ph_log_create_content(ph_log_data *log_d)
+{
+ PH_TRACE;
+ Evas_Object *box;
+ Evas_Object *content;
+ int err = CONTACTS_ERROR_NONE;
+
+ log_d->layout = elm_layout_add(log_d->navi);
+ p_retvm_if(NULL == log_d->layout, -1, "elm_layout_add() return NULL");
+ elm_layout_file_set(log_d->layout, SELECTION_INFO_EDJ,
+ "selectioninfo_layout");
+ box = elm_box_add(log_d->layout);
+ elm_object_part_content_set(log_d->layout, "contents", box);
+ p_retvm_if(NULL == box, -1, "elm_box_add() return NULL");
+ log_d->box = box;
+
+ log_set_genlist_item_style();
+ log_load_list(log_d);
+ content = log_fill_layout(log_d);
+ p_retvm_if(NULL == content, -1, "log_fill_layout() return NULL");
+ elm_box_pack_end(box, content);
+ log_d->content = content;
+
+ evas_object_event_callback_add(box, EVAS_CALLBACK_DEL, log_view_delete_cb,
+ log_d);
+
+ err = contacts_db_add_changed_cb(_contacts_person._uri,
+ log_data_lazy_update, log_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_add_changed_cb() Failed(%d)", err);
+ err = contacts_db_add_changed_cb(_contacts_phone_log._uri, log_data_updated,
+ log_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_add_changed_cb() Failed(%d)", err);
+
+ evas_object_data_set(log_d->navi, KEY_LOG_DATA, log_d);
+
+ vconf_notify_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED,
+ ph_log_timezone_changed, log_d->navi);
+
+ return 0;
+}
+
+API void phone_log_view_language_changed(Evas_Object *navi)
+{
+ PH_TRACE;
+ // TODO: Fixme
+}
+
diff --git a/lib/log/ph-log-main-view.h b/lib/log/ph-log-main-view.h
new file mode 100755
index 0000000..4da8de0
--- /dev/null
+++ b/lib/log/ph-log-main-view.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PH_LOG_MAIN_VIEW_H__
+#define __PH_LOG_MAIN_VIEW_H__
+
+#include "vconf.h"
+
+int ph_log_create_content(ph_log_data *log_d);
+Eina_Bool ph_log_missed_call_count_reset(void *data);
+void ph_log_timezone_changed(keynode_t *key, void *data);
+Eina_Bool ph_log_data_changed_cb(void *data);
+
+/*
+ * \par Description:
+ * save info about call log state.
+ */
+class CheckedState
+{
+public :
+ CheckedState(): m_id (0), m_groupedCount(0), m_checked(false)
+ {}
+
+ CheckedState(int id, bool checked, int groupedCount) : m_id (id), m_groupedCount(groupedCount), m_checked(checked)
+ {
+ }
+
+ int getId() {return m_id;}
+ int getGroupCount() {return m_groupedCount;}
+ bool isChecked() {return m_checked;}
+
+private:
+ int m_id;
+ int m_groupedCount;
+ bool m_checked;
+};
+
+#endif /* __PH_LOG_MAIN_VIEW_H__ */
diff --git a/lib/log/ph-log-main.cpp b/lib/log/ph-log-main.cpp
new file mode 100755
index 0000000..ee83384
--- /dev/null
+++ b/lib/log/ph-log-main.cpp
@@ -0,0 +1,320 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <ui-gadget-module.h>
+#include <efl_assist.h>
+
+#include "phone.h"
+#include "phone-log.h"
+#include "ph-log-utils.h"
+#include "ph-log-main-view.h"
+#include "ph-log-check-view.h"
+#include "ph-log-detail-view.h"
+#include <bundle.h>
+
+#include "ViewManager.h"
+
+static bool log_create_ug_view(int request, ph_log_data *log_d,
+ Evas_Object *base)
+{
+ PH_TRACE;
+ int ret;
+ p_retvm_if(NULL == log_d, false, "Parameter is null");
+
+ if (NULL == log_d->navi)
+ {
+ log_d->navi = elm_naviframe_add(base);
+ p_retvm_if(NULL == log_d->navi, false, "elm_naviframe_add is failed");
+ ea_object_event_callback_add(log_d->navi, EA_CALLBACK_BACK, &Common::ViewManager::onBack, log_d->win);
+ ea_object_event_callback_add(log_d->navi, EA_CALLBACK_MORE, &Common::ViewManager::onMenu, NULL);
+ elm_object_part_content_set(base, "elm.swallow.content", log_d->navi);
+ evas_object_show(log_d->navi);
+ }
+
+ if (PH_UG_REQUEST_LOG_SELECT == request)
+ log_d->view_type = LOG_VIEW_TYPE_UG_NUMBER_SELECT;
+ else if (PH_UG_REQUEST_LOG_CHECK == request)
+ log_d->view_type = LOG_VIEW_TYPE_UG_NUMBER_CHECK;
+ else
+ log_d->view_type = LOG_VIEW_TYPE_UG_LAUNCH_CALL;
+
+ ret = ph_log_create_content(log_d);
+ if (ret < 0)
+ {
+ ERR("Fail to ph_log_create_content");
+ return false;
+ }
+ log_d->navi_item = elm_naviframe_item_push(log_d->navi,
+ T_(PH_GET_TEXT_BASE_OP, PHTEXT_SELECT_LOGS), NULL, NULL,
+ log_d->box, NULL);
+
+ if (LOG_VIEW_TYPE_UG_NUMBER_CHECK == log_d->view_type)
+ phone_log_check_mode_start(log_d);
+ else
+ phone_log_set_navi(log_d->navi);
+
+ return true;
+}
+
+static void *log_on_create(ui_gadget_h ug, enum ug_mode mode, service_h service,
+ void *priv)
+{
+ PH_TRACE;
+ int ret;
+ Evas_Object *bg;
+ Evas_Object *parent;
+ Evas_Object *base;
+ ph_log_data *log_d;
+ int request = PH_UG_REQUEST_LOG_CHECK;
+ char* val = NULL;
+
+ if (!ug || !priv)
+ return NULL;
+
+ bindtextdomain(PACKAGE, LOCALEDIR);
+
+ parent = (Evas_Object *) ug_get_parent_layout(ug);
+ if (!parent)
+ return NULL;
+
+ ret = contacts_connect2();
+ p_retvm_if(CONTACTS_ERROR_NONE != ret, NULL,
+ "contacts_connect2() Failed(%d)", ret);
+
+ if (SERVICE_ERROR_NONE == service_get_extra_data(service, "type", &val))
+ {
+ if (val)
+ request = atoi(val);
+ PH_DBG("log request : %d", request);
+ free(val);
+ }
+
+ if (mode == UG_MODE_FULLVIEW)
+ base = phone_create_base_layout(parent, true);
+ else
+ base = phone_create_base_layout(parent, false);
+
+ log_d = (ph_log_data *) priv;
+ log_d->win = (Evas_Object *) ug_get_window();
+ log_d->ug = ug;
+
+ bg = phone_create_bg(base);
+ if (NULL == bg)
+ {
+ PH_DBG("phone_create_bg() return NULL");
+ evas_object_del(base);
+ ret = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != ret,
+ "contacts_disconnect2() Failed(%d)", ret);
+ return NULL;
+ }
+
+ phone_detail_log_init_time_format();
+ phone_detail_log_generate_date_format(log_d->formatter);
+
+ if (!log_create_ug_view(request, log_d, base))
+ {
+ phone_detail_log_delete_date_format(log_d->formatter);
+ evas_object_del(base);
+ ret = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != ret,
+ "contacts_disconnect2() Failed(%d)", ret);
+ return NULL;
+ }
+
+ return base;
+}
+
+static void log_on_start(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+}
+
+static void log_on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) priv;
+ log_d->is_background = true;
+
+}
+
+static void log_on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) priv;
+
+ log_d->is_background = false;
+ if (log_d->update_timer)
+ {
+ ecore_timer_del(log_d->update_timer);
+ log_d->update_timer = NULL;
+ ph_log_data_changed_cb(log_d);
+ }
+}
+
+static void log_on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+
+ if (!ug)
+ return;
+
+ evas_object_del((Evas_Object *) ug_get_layout(ug));
+ contacts_disconnect2();
+}
+
+static void log_on_message(ui_gadget_h ug, service_h msg, service_h service,
+ void *priv)
+{
+ PH_TRACE;
+}
+
+static void log_on_event(ui_gadget_h ug, enum ug_event event, service_h service,
+ void *priv)
+{
+ PH_TRACE;
+ ph_log_data *log_d = (ph_log_data *) priv;
+
+ switch (event)
+ {
+ case UG_EVENT_REGION_CHANGE:
+ if (log_d->navi)
+ phone_log_views_update(log_d->navi);
+ break;
+ case UG_EVENT_ROTATE_PORTRAIT:
+ case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+ case UG_EVENT_ROTATE_LANDSCAPE:
+ case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+ break;
+ case UG_EVENT_LANG_CHANGE:
+ phone_log_view_language_changed(log_d->navi);
+ break;
+ default:
+ break;
+ }
+}
+
+static void log_on_key_event(ui_gadget_h ug, enum ug_key_event event,
+ service_h service, void *priv)
+{
+ PH_TRACE;
+ if (!ug)
+ return;
+
+ switch (event)
+ {
+ case UG_KEY_EVENT_END:
+ ug_destroy_me(ug);
+ break;
+ default:
+ break;
+ }
+}
+
+extern "C" API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ ph_log_data *log_d;
+
+ if (!ops)
+ return -1;
+
+ log_d = (ph_log_data *) calloc(1, sizeof(ph_log_data));
+ p_retvm_if(NULL == log_d, -1, "calloc is failed");
+
+ ops->create = log_on_create;
+ ops->start = log_on_start;
+ ops->pause = log_on_pause;
+ ops->resume = log_on_resume;
+ ops->destroy = log_on_destroy;
+ ops->message = log_on_message;
+ ops->event = log_on_event;
+ ops->key_event = log_on_key_event;
+ ops->priv = log_d;
+ ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+ return 0;
+}
+
+extern "C" API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+
+ if (!ops)
+ return;
+
+ ops->priv = NULL;
+}
+
+API Evas_Object* phone_create_log_view(ph_view_info *view_info)
+{
+ PH_TRACE;
+ int ret;
+ ph_log_data * log_d = (ph_log_data *) calloc(1, sizeof(ph_log_data));
+ p_retvm_if(NULL == log_d, NULL, "Fail to calloc ph_log_data");
+ memset(log_d, 0x00, sizeof(ph_log_data));
+
+ log_d->ug = view_info->ug;
+ log_d->win = view_info->win;
+ log_d->navi = view_info->navi;
+ log_d->navi_item = elm_naviframe_bottom_item_get(log_d->navi);
+ log_d->is_background = true;
+
+ if (!log_d->ug)
+ {
+ log_d->view_type = LOG_VIEW_TYPE_NORMAL;
+ log_d->viewby_type = VIEWBY_ALL_CALL;
+ }
+ else
+ {
+ switch (view_info->ug_request)
+ {
+ case PH_UG_REQUEST_SELECT:
+ case PH_UG_REQUEST_SELECT_NUMBER:
+ log_d->view_type = LOG_VIEW_TYPE_UG_NUMBER_SELECT;
+ break;
+ case PH_UG_REQUEST_SELECT_EMAIL:
+ log_d->view_type = LOG_VIEW_TYPE_UG_EMAIL_SELECT;
+ break;
+ case PH_UG_REQUEST_CHECK:
+ case PH_UG_REQUEST_CHECK_FOR_NUMBER:
+ log_d->view_type = LOG_VIEW_TYPE_UG_NUMBER_CHECK;
+ break;
+ case PH_UG_REQUEST_CHECK_FOR_EMAIL:
+ log_d->view_type = LOG_VIEW_TYPE_UG_EMAIL_CHECK;
+ break;
+ case PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL:
+ log_d->view_type = LOG_VIEW_TYPE_UG_NUMBER_OR_EMAIL_CHECK;
+ break;
+ default:
+ log_d->view_type = LOG_VIEW_TYPE_UG_LAUNCH_CALL;
+ break;
+ }
+ }
+
+ phone_detail_log_init_time_format();
+ phone_detail_log_generate_date_format(log_d->formatter);
+
+ ret = ph_log_create_content(log_d);
+ if (ret < 0)
+ {
+ free(log_d);
+ return NULL;
+ }
+
+ return log_d->layout;
+}
+
diff --git a/lib/log/ph-log-utils.cpp b/lib/log/ph-log-utils.cpp
new file mode 100755
index 0000000..67632ac
--- /dev/null
+++ b/lib/log/ph-log-utils.cpp
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "phone.h"
+#include "ph-log-utils.h"
+#include <feedback.h>
+
+#include <vconf.h>
+#include <vconf-keys.h>
+
+contacts_error_e ph_log_util_del_log_by_id(Eina_List *list, ph_log_info *l_info)
+{
+ PH_TRACE;
+ Eina_List *l;
+ Elm_Object_Item * item;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ void *v_l_info;
+
+ l = eina_list_data_find_list(list, l_info);
+ item = l_info->item;
+ v_l_info = (void *) l_info;
+ EINA_LIST_FOREACH(l, l, v_l_info)
+ {
+ l_info = (ph_log_info *) v_l_info;
+ if (item != l_info->item)
+ break;
+ err = (contacts_error_e) contacts_db_delete_record(_contacts_phone_log._uri, l_info->id);
+ if (CONTACTS_ERROR_NONE != err)
+ break;
+ }
+ return err;
+}
+
+void ph_log_util_svi_play(int vibration_key, int sound_key)
+{
+ PH_TRACE;
+ int effect_status = FALSE;
+ vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &effect_status);
+ if (effect_status)
+ feedback_play_type(FEEDBACK_TYPE_SOUND, (feedback_pattern_e) sound_key);
+
+ vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &effect_status);
+ if (effect_status)
+ feedback_play_type(FEEDBACK_TYPE_VIBRATION, (feedback_pattern_e) vibration_key);
+}
diff --git a/lib/log/ph-log-utils.h b/lib/log/ph-log-utils.h
new file mode 100755
index 0000000..7187f72
--- /dev/null
+++ b/lib/log/ph-log-utils.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PH_LOG_UTILS_H__
+#define __PH_LOG_UTILS_H__
+
+#include "phone-common.h"
+contacts_error_e ph_log_util_del_log_by_id(Eina_List *list,
+ ph_log_info *l_info);
+void ph_log_util_svi_play(int vibration_key, int sound_key);
+
+#endif /* __PH_LOG_UTILS_H__ */
diff --git a/lib/ph-front/CMakeLists.txt b/lib/ph-front/CMakeLists.txt
new file mode 100755
index 0000000..ec63f89
--- /dev/null
+++ b/lib/ph-front/CMakeLists.txt
@@ -0,0 +1,14 @@
+LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
+
+SET(TARGET ${PH_FRONT})
+
+FILE(GLOB SRCS *.cpp)
+
+ADD_LIBRARY(${TARGET} SHARED ${SRCS})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES VERSION ${VERSION})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS})
+TARGET_LINK_LIBRARIES(${TARGET} ${COMMON_LIB} ${FAVOR_LIB} ${ug_pkgs_LDFLAGS} ${SPEEDDIAL} ${PH_LOG} ${PH_DIALER} ${CT_DETAILS} ${CT_LIST})
+
+INSTALL(TARGETS ${TARGET} DESTINATION ${UGLIBDIR})
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/lib/ph-front/phone-tabui-efl.xml DESTINATION "/usr/share/packages")
diff --git a/lib/ph-front/include/ph-front.h b/lib/ph-front/include/ph-front.h
new file mode 100755
index 0000000..a28e880
--- /dev/null
+++ b/lib/ph-front/include/ph-front.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PH_FRONT_H__
+#define __PH_FRONT_H__
+
+#include <app.h>
+#include <phone-common.h>
+#include <ViewManager.h>
+
+enum
+{
+ PH_FRONT_DIALER_WITH_NUM,
+ PH_FRONT_LOG_MISSED,
+ PH_FRONT_DIALER_WITH_SEND_KEY,
+};
+
+enum PH_VIEW_TYPE
+{
+ PH_VIEW_NONE = -1,
+ PH_VIEW_DIALER = 0,
+ PH_VIEW_CONTACT,
+ PH_VIEW_LOG,
+ PH_VIEW_FAVORITE,
+ PH_VIEW_MAX,
+};
+
+struct ph_phoneui_data : public Common::TabbedView<PH_VIEW_MAX>
+{
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+ Evas_Object *icon;
+ bool is_desktop_mode;
+
+ ph_phoneui_data()
+ : icon(NULL), is_desktop_mode(0) { }
+#endif
+};
+
+ph_phoneui_data* phone_front_view_create(Evas_Object *win);
+API void phone_front_view_show_sub_view(ph_phoneui_data *phoneui_d);
+Eina_Bool phone_front_view_load_timer(void *data);
+void phone_front_view_region_changed(ph_phoneui_data *phoneui_d);
+void phone_front_view_reset(ph_phoneui_data *phoneui_d, int tab_index, int op,
+ service_h service);
+void phone_front_view_language_changed(ph_phoneui_data *phoneui_d);
+void phone_front_view_resume(ph_phoneui_data *phoneui_d);
+void phone_front_view_pause(ph_phoneui_data *phoneui_d);
+int phone_front_view_show_call_app(ph_phoneui_data *phoneui_d);
+
+#endif /* __PH_FRONT_H__ */
+
diff --git a/lib/ph-front/ph-front-main.cpp b/lib/ph-front/ph-front-main.cpp
new file mode 100755
index 0000000..03c7cbe
--- /dev/null
+++ b/lib/ph-front/ph-front-main.cpp
@@ -0,0 +1,205 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <ui-gadget-module.h>
+
+#include "phone.h"
+#include "phone-common.h"
+#include "phone-ug.h"
+#include "ph-front.h"
+#include "ph-front-view.h"
+#include <bundle.h>
+
+void *phoneui_on_create(ui_gadget_h ug, enum ug_mode mode, service_h service,
+ void *priv)
+{
+ PH_TRACE;
+ if (!ug || !priv)
+ return NULL;
+
+ bindtextdomain(PACKAGE, LOCALEDIR);
+
+ ph_phoneui_data *phoneui_d = (ph_phoneui_data *) priv;
+
+ if (service)
+ {
+ char *val = NULL;
+ service_get_extra_data(service, PH_UG_BUNDLE_TYPE, &val);
+ if (val)
+ {
+ phoneui_d->ug_request = atoi(val);
+ free(val);
+ val = NULL;
+ }
+ PH_DBG("type = %d", phoneui_d->ug_request);
+ }
+
+ p_retvm_if(PH_UG_REQUEST_LAUNCH_VOICECALL != phoneui_d->ug_request, NULL,
+ "Invalid ug request (%d)", phoneui_d->ug_request);
+
+ phoneui_d->view_visible[PH_VIEW_DIALER] = true;
+ phoneui_d->view_visible[PH_VIEW_LOG] = true;
+ phoneui_d->view_visible[PH_VIEW_CONTACT] = false;
+ phoneui_d->view_visible[PH_VIEW_FAVORITE] = false;
+
+ Evas_Object *parent = (Evas_Object *) ug_get_parent_layout(ug);
+ if (!parent)
+ {
+ return NULL;
+ }
+ phoneui_d = (ph_phoneui_data *) priv;
+ phoneui_d->win = (Evas_Object *) ug_get_window();
+ elm_win_conformant_set(phoneui_d->win, EINA_TRUE);
+
+ elm_win_wm_rotation_available_rotations_set(phoneui_d->win, NULL, 0);
+ elm_win_wm_rotation_preferred_rotation_set(phoneui_d->win, 0);
+
+ phoneui_d->select_tab = PH_VIEW_NONE;
+ phoneui_d->ug = ug;
+
+ bool success = phoneui_d->initialize(phoneui_d->win, parent);
+ check_if(!success, return NULL);
+
+ success = ph_front_create_toolbar(*phoneui_d) != NULL;
+ check_if(!success, return NULL);
+
+ int err = contacts_connect2();
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_connect2() Failed(%d)", err);
+
+ return phoneui_d->getContent();
+}
+
+void phoneui_on_start(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ ph_phoneui_data *phoneui_d = (ph_phoneui_data *) priv;
+
+ elm_toolbar_select_mode_set(phoneui_d->tabbar,
+ ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+ phoneui_d->timer = ecore_timer_add(3.0, phone_front_view_load_timer,
+ phoneui_d);
+}
+
+void phoneui_on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+}
+
+void phoneui_on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+}
+
+void phoneui_on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ p_retm_if(NULL == priv, "The parameter is invalid(priv=%p)", priv);
+ p_retm_if(NULL == ug, "The parameter is invalid(ug=%p)", ug);
+ ph_phoneui_data *phoneui_d = (ph_phoneui_data *) priv;
+ if (!ug)
+ return;
+
+ elm_win_wm_rotation_preferred_rotation_set((Evas_Object *) ug_get_window(), -1);
+
+ free(phoneui_d->ug_data);
+
+ if (phoneui_d && phoneui_d->ug == NULL)
+ {
+ PH_DBG("view destroy already called, so clist_d free here");
+ free(phoneui_d);
+ }
+ else
+ {
+ evas_object_del((Evas_Object *) ug_get_layout(ug));
+ phoneui_d->ug = NULL;
+ }
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_disconnect2() Failed(%d)",
+ err);
+}
+
+void phoneui_on_message(ui_gadget_h ug, service_h msg, service_h service,
+ void *priv)
+{
+ PH_TRACE;
+}
+
+void phoneui_on_event(ui_gadget_h ug, enum ug_event event, service_h service,
+ void *priv)
+{
+ PH_TRACE;
+ ph_phoneui_data *phoneui_d = (ph_phoneui_data *) priv;
+ switch (event)
+ {
+ case UG_EVENT_REGION_CHANGE:
+ phone_front_view_region_changed(phoneui_d);
+ break;
+ case UG_EVENT_ROTATE_PORTRAIT:
+ case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+ case UG_EVENT_ROTATE_LANDSCAPE:
+ case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+ break;
+ case UG_EVENT_LANG_CHANGE:
+ phone_front_view_language_changed(phoneui_d);
+ break;
+ default:
+ break;
+ }
+}
+
+void phoneui_on_key_event(ui_gadget_h ug, enum ug_key_event event,
+ service_h data, void *priv)
+{
+ PH_TRACE;
+}
+
+extern "C" API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ ph_phoneui_data *phoneui_d;
+
+ if (!ops)
+ return -1;
+
+ phoneui_d = new ph_phoneui_data();
+ if (!phoneui_d)
+ return -1;
+
+ ops->create = phoneui_on_create;
+ ops->start = phoneui_on_start;
+ ops->pause = phoneui_on_pause;
+ ops->resume = phoneui_on_resume;
+ ops->destroy = phoneui_on_destroy;
+ ops->message = phoneui_on_message;
+ ops->event = phoneui_on_event;
+ ops->key_event = phoneui_on_key_event;
+ ops->priv = phoneui_d;
+ ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+ return 0;
+}
+
+extern "C" API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ if (!ops)
+ return;
+ ops->priv = NULL;
+}
+
diff --git a/lib/ph-front/ph-front-view.cpp b/lib/ph-front/ph-front-view.cpp
new file mode 100755
index 0000000..d37e4f5
--- /dev/null
+++ b/lib/ph-front/ph-front-view.cpp
@@ -0,0 +1,670 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <bundle.h>
+#include <aul.h>
+#include <app.h>
+
+#include "phone.h"
+#include "ph-front.h"
+#include "phone-log.h"
+#include "phone-dialer.h"
+#include "ph-front-view.h"
+#include "ct-list.h"
+#include "ct-favor.h"
+
+static void front_view_reset_current_sub_view(ph_phoneui_data *phoneui_d)
+{
+ PH_TRACE;
+ p_ret_if(
+ phoneui_d->select_tab <= PH_VIEW_NONE || PH_VIEW_MAX <= phoneui_d->select_tab);
+ if (phoneui_d->sub_view[phoneui_d->select_tab])
+ {
+ switch (phoneui_d->select_tab)
+ {
+ case PH_VIEW_DIALER:
+ phone_dialer_view_reset(phoneui_d->sub_view[PH_VIEW_DIALER]);
+ phone_dialer_set_background(phoneui_d->sub_view[PH_VIEW_DIALER],
+ true);
+ break;
+ case PH_VIEW_CONTACT:
+ ctui_list_view_reset((ct_list_data *)
+ evas_object_data_get(phoneui_d->navi, "clist_d"));
+ ctui_list_set_background(phoneui_d->navi, true);
+ break;
+ case PH_VIEW_LOG:
+ phone_log_view_reset(phoneui_d->navi);
+ phone_log_set_background(phoneui_d->navi, true);
+ break;
+ case PH_VIEW_FAVORITE:
+ phone_favor_view_reset(phoneui_d->sub_view[PH_VIEW_FAVORITE]);
+ phone_favor_set_background(
+ phoneui_d->sub_view[PH_VIEW_FAVORITE], true);
+ break;
+ }
+ }
+}
+
+static void front_view_load_sub_view(ph_phoneui_data *phoneui_d, int tab_index)
+{
+ PH_TRACE;
+ ph_view_info *view_info;
+ view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info));
+ phone_set_view_info(view_info, phoneui_d->win, phoneui_d->navi,
+ phoneui_d->ug, phoneui_d->ug_request, phoneui_d->cnt_max,
+ phoneui_d->ug_data);
+ switch (tab_index)
+ {
+ case PH_VIEW_DIALER:
+ phoneui_d->sub_view[tab_index] = phone_create_dialer_view(
+ view_info);
+ break;
+ case PH_VIEW_CONTACT:
+ phoneui_d->sub_view[tab_index] = ctui_create_phone_list_view(
+ view_info);
+ break;
+ case PH_VIEW_LOG:
+ phoneui_d->sub_view[tab_index] = phone_create_log_view(view_info);
+ break;
+ case PH_VIEW_FAVORITE:
+ phoneui_d->sub_view[tab_index] = phone_favor_create_view(view_info);
+ break;
+ default:
+ ERR("INVALID tab_index : %d", tab_index);
+ break;
+ };
+ free(view_info);
+ return;
+}
+
+API void phone_front_view_show_sub_view(ph_phoneui_data *phoneui_d)
+{
+ PH_TRACE;
+ Evas_Object *view;
+ ph_view_info *view_info;
+
+ front_view_reset_current_sub_view(phoneui_d);
+ phone_hide_notify(phoneui_d->navi);
+
+ view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info));
+ phone_set_view_info(view_info, phoneui_d->win, phoneui_d->navi,
+ phoneui_d->ug, phoneui_d->ug_request, phoneui_d->cnt_max,
+ phoneui_d->ug_data);
+
+ if (NULL == phoneui_d->sub_view[PH_VIEW_CONTACT])
+ phoneui_d->sub_view[PH_VIEW_CONTACT] = ctui_create_phone_list_view(
+ view_info);
+ ctui_list_set_background(phoneui_d->navi, false);
+ ctui_list_navi_set(CT_LIST_MODE_DEFAULT, (ct_list_data *)
+ evas_object_data_get(phoneui_d->navi, "clist_d"));
+
+ phoneui_d->select_tab = PH_VIEW_CONTACT;
+
+ view = elm_object_part_content_unset(phoneui_d->layout,
+ "elm.swallow.content");
+ if (view)
+ evas_object_hide(view);
+ elm_object_part_content_set(phoneui_d->layout, "elm.swallow.content",
+ phoneui_d->sub_view[PH_VIEW_CONTACT]);
+ evas_object_show(phoneui_d->sub_view[PH_VIEW_CONTACT]);
+
+ free(view_info);
+}
+
+static void front_view_show_sub_view(ph_phoneui_data *phoneui_d, int tab_index)
+{
+ PH_TRACE;
+ Evas_Object *view;
+ ph_view_info *view_info;
+ p_retm_if(NULL == phoneui_d, "phoneui_d is NULL");
+
+ p_retm_if(tab_index <= PH_VIEW_NONE || PH_VIEW_MAX <= tab_index,
+ "tab index is invalid");
+ p_retm_if(phoneui_d->select_tab == tab_index, "The tab is already shown");
+
+ front_view_reset_current_sub_view(phoneui_d);
+ phone_hide_notify(phoneui_d->navi);
+
+ view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info));
+ phone_set_view_info(view_info, phoneui_d->win, phoneui_d->navi,
+ phoneui_d->ug, phoneui_d->ug_request, phoneui_d->cnt_max,
+ phoneui_d->ug_data);
+
+ switch (tab_index)
+ {
+ case PH_VIEW_DIALER:
+ if (NULL == phoneui_d->sub_view[tab_index])
+ phoneui_d->sub_view[tab_index] = phone_create_dialer_view(
+ view_info);
+ phone_dialer_set_background(phoneui_d->sub_view[PH_VIEW_DIALER],
+ false);
+ phone_dialer_set_navi(phoneui_d->sub_view[PH_VIEW_DIALER]);
+ phone_dialer_check_focus(phoneui_d->sub_view[PH_VIEW_DIALER]);
+
+ evas_object_data_set(phoneui_d->sub_view[tab_index], "phoneui_d",
+ phoneui_d);
+ break;
+ case PH_VIEW_CONTACT:
+ if (NULL == phoneui_d->sub_view[tab_index])
+ phoneui_d->sub_view[tab_index] = ctui_create_phone_list_view(
+ view_info);
+ ctui_list_set_background(phoneui_d->navi, false);
+ if (PH_UG_REQUEST_CHECK == phoneui_d->ug_request
+ || PH_UG_REQUEST_CHECK_FOR_NUMBER == phoneui_d->ug_request
+ || PH_UG_REQUEST_CHECK_FOR_EMAIL == phoneui_d->ug_request
+ || PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL
+ == phoneui_d->ug_request)
+ {
+ ctui_list_edit_mode_start((ct_list_data *)
+ evas_object_data_get(phoneui_d->navi, "clist_d"));
+ }
+ else
+ ctui_list_navi_set(CT_LIST_MODE_DEFAULT, (ct_list_data *)
+ evas_object_data_get(phoneui_d->navi, "clist_d"));
+ break;
+ case PH_VIEW_LOG:
+ if (NULL == phoneui_d->sub_view[tab_index])
+ phoneui_d->sub_view[tab_index] = phone_create_log_view(
+ view_info);
+ phone_log_set_background(phoneui_d->navi, false);
+ if (!phoneui_d->ug)
+ phone_log_missed_info_update(phoneui_d->navi);
+
+ if (PH_UG_REQUEST_CHECK == phoneui_d->ug_request
+ || PH_UG_REQUEST_CHECK_FOR_NUMBER == phoneui_d->ug_request
+ || PH_UG_REQUEST_CHECK_FOR_EMAIL == phoneui_d->ug_request
+ || PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL
+ == phoneui_d->ug_request)
+ phone_log_check_mode_start((ph_log_data *)
+ evas_object_data_get(phoneui_d->navi, "log_data"));
+ else
+ phone_log_set_navi(phoneui_d->navi);
+ break;
+ case PH_VIEW_FAVORITE:
+ if (NULL == phoneui_d->sub_view[tab_index])
+ phoneui_d->sub_view[tab_index] = phone_favor_create_view(
+ view_info);
+ phone_favor_set_background(phoneui_d->sub_view[PH_VIEW_FAVORITE],
+ false);
+ if (phoneui_d->ug
+ && (PH_UG_REQUEST_CHECK == phoneui_d->ug_request
+ || PH_UG_REQUEST_CHECK_FOR_NUMBER
+ == phoneui_d->ug_request
+ || PH_UG_REQUEST_CHECK_FOR_EMAIL
+ == phoneui_d->ug_request
+ || PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL
+ == phoneui_d->ug_request))
+ {
+ phone_favor_edit_mode_start((ph_favorite_data *)
+ evas_object_data_get(phoneui_d->sub_view[tab_index],
+ "favor_d"));
+ }
+ else
+ phone_favor_set_navi(phoneui_d->sub_view[tab_index],
+ PH_FAVOR_MODE_DEFAULT);
+ break;
+ default:
+ free(view_info);
+ ERR("INVALID tab_index: %d", tab_index);
+ return;
+ }
+ phoneui_d->select_tab = tab_index;
+
+ view = elm_object_part_content_unset(phoneui_d->layout,
+ "elm.swallow.content");
+ if (view)
+ evas_object_hide(view);
+ elm_object_part_content_set(phoneui_d->layout, "elm.swallow.content",
+ phoneui_d->sub_view[tab_index]);
+ evas_object_show(phoneui_d->sub_view[tab_index]);
+
+ free(view_info);
+}
+
+static Eina_Bool front_view_load_all_sub_view(void *data)
+{
+ PH_TRACE;
+ ph_phoneui_data *phoneui_d = (ph_phoneui_data *) data;
+ int i;
+
+ for (i = PH_VIEW_DIALER; i < PH_VIEW_MAX; i++)
+ {
+ if (phoneui_d->view_visible[i] && NULL == phoneui_d->sub_view[i])
+ {
+ front_view_load_sub_view(phoneui_d, i);
+ return ECORE_CALLBACK_RENEW;
+ }
+ }
+ phoneui_d->idler = NULL;
+ return ECORE_CALLBACK_CANCEL;
+}
+
+API Eina_Bool phone_front_view_load_timer(void *data)
+{
+ PH_TRACE;
+ ph_phoneui_data *phoneui_d = (ph_phoneui_data *) data;
+ phoneui_d->idler = ecore_idler_add(front_view_load_all_sub_view, phoneui_d);
+ phoneui_d->timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void pfront_view_change_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int i;
+ Elm_Object_Item *selected_it;
+ ph_phoneui_data *phoneui_d = (ph_phoneui_data *) data;
+
+ selected_it = elm_toolbar_selected_item_get(obj);
+
+ for (i = PH_VIEW_DIALER; i < PH_VIEW_MAX; i++)
+ {
+ if (phoneui_d->item[i])
+ if (selected_it == phoneui_d->item[i])
+ break;
+ }
+ PH_DBG("cur sel : %d, sel index : %d", phoneui_d->select_tab, i);
+ front_view_show_sub_view(phoneui_d, i);
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+ if(phoneui_d->is_desktop_mode)
+ {
+ Elm_Object_Item *navi_item = elm_naviframe_bottom_item_get(phoneui_d->navi);
+ elm_object_item_part_content_set(navi_item, "prev_btn", NULL);
+ }
+#endif
+}
+
+static void pfront_view_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_phoneui_data *phoneui_d = (ph_phoneui_data *) data;
+ int i;
+
+ p_retm_if(NULL == phoneui_d, "phoneui_d is null");
+
+ for (i = 0; i < PH_VIEW_MAX; i++)
+ {
+ if (phoneui_d->sub_view[i])
+ evas_object_del(phoneui_d->sub_view[i]);
+ }
+
+ if (phoneui_d->idler)
+ ecore_idler_del(phoneui_d->idler);
+
+ if (phoneui_d->timer)
+ ecore_timer_del(phoneui_d->timer);
+
+ if (!phoneui_d->ug)
+ {
+ PH_DBG("no ug");
+ delete phoneui_d;
+ }
+ else
+ {
+ PH_DBG("view destroy called earlier than ug destroy");
+ phoneui_d->ug = NULL;
+ }
+}
+
+Evas_Object* ph_front_create_toolbar(ph_phoneui_data &phoneui_d)
+{
+ PH_TRACE;
+ Evas_Object *layout = elm_layout_add(phoneui_d.navi);
+ p_retvm_if(NULL == layout, NULL, "elm_layout_add() Failed");
+ elm_layout_theme_set(layout, "layout", "tabbar", "default");
+ phoneui_d.layout = layout;
+
+ Evas_Object *toolbar = elm_toolbar_add(phoneui_d.navi);
+ p_retvm_if(NULL == toolbar, NULL, "elm_toolbar_add() Failed");
+ elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
+ elm_object_style_set(toolbar, "tabbar");
+ elm_object_part_content_set(layout, "elm.swallow.tabbar", toolbar);
+ phoneui_d.tabbar = toolbar;
+
+ elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+ if (phoneui_d.view_visible[PH_VIEW_DIALER])
+ {
+ phoneui_d.item[PH_VIEW_DIALER] = elm_toolbar_item_append(toolbar,
+ PH_IMG_ICON_DIALER,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_KEYPAD),
+ pfront_view_change_cb,
+ &phoneui_d);
+ }
+ if (phoneui_d.view_visible[PH_VIEW_CONTACT])
+ {
+ phoneui_d.item[PH_VIEW_CONTACT] = elm_toolbar_item_append(toolbar,
+ PH_IMG_ICON_CONTACTS,
+ S_(PH_SYS_BODY_CONTACTS),
+ pfront_view_change_cb,
+ &phoneui_d);
+ }
+ if (phoneui_d.view_visible[PH_VIEW_LOG])
+ {
+ phoneui_d.item[PH_VIEW_LOG] = elm_toolbar_item_append(toolbar,
+ PH_IMG_ICON_LOGS,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_LOGS),
+ pfront_view_change_cb,
+ &phoneui_d);
+ }
+ if (phoneui_d.view_visible[PH_VIEW_FAVORITE])
+ {
+ phoneui_d.item[PH_VIEW_FAVORITE] = elm_toolbar_item_append(toolbar,
+ PH_IMG_ICON_FAVORITE,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_FAVORITES),
+ pfront_view_change_cb,
+ &phoneui_d);
+ }
+
+ Elm_Object_Item *navi_it = elm_naviframe_item_push(phoneui_d.navi, NULL, NULL, NULL, layout, NULL);
+ elm_naviframe_item_title_visible_set(navi_it, EINA_FALSE);
+ evas_object_event_callback_add(phoneui_d.getContent(), EVAS_CALLBACK_DEL, pfront_view_delete_cb, &phoneui_d);
+ return layout;
+}
+
+API ph_phoneui_data* phone_front_view_create(Evas_Object *win)
+{
+ PH_TRACE;
+ ph_phoneui_data *phoneui_d = new ph_phoneui_data();
+ phoneui_d->win = win;
+ phoneui_d->select_tab = PH_VIEW_NONE;
+
+ phoneui_d->view_visible[PH_VIEW_DIALER] = true;
+ phoneui_d->view_visible[PH_VIEW_CONTACT] = true;
+ phoneui_d->view_visible[PH_VIEW_LOG] = true;
+ phoneui_d->view_visible[PH_VIEW_FAVORITE] = true;
+
+ Evas_Object *conform = elm_conformant_add(phoneui_d->win);
+ p_retvm_if(NULL == conform, NULL, "elm_conformant_add() Failed");
+
+ evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(phoneui_d->win, conform);
+ evas_object_show(conform);
+
+ bool success = phoneui_d->initialize(phoneui_d->win, conform);
+ check_if(!success, delete phoneui_d; return NULL)
+
+ elm_object_content_set(conform, phoneui_d->getContent());
+ success = ph_front_create_toolbar(*phoneui_d) != NULL;
+ check_if(!success, delete phoneui_d; return NULL);
+
+ return phoneui_d;
+}
+
+API void phone_front_view_region_changed(ph_phoneui_data *phoneui_d)
+{
+ PH_TRACE;
+ if (phoneui_d && phoneui_d->sub_view[PH_VIEW_LOG])
+ phone_log_views_update(phoneui_d->navi);
+}
+
+API void phone_front_view_pause(ph_phoneui_data *phoneui_d)
+{
+ PH_TRACE;
+ if (phoneui_d && phoneui_d->sub_view[PH_VIEW_LOG])
+ phone_log_set_background(phoneui_d->navi, true);
+ if (phoneui_d && phoneui_d->sub_view[PH_VIEW_CONTACT])
+ ctui_list_view_pause(phoneui_d->navi);
+ if (phoneui_d && phoneui_d->sub_view[PH_VIEW_DIALER])
+ phone_dialer_set_background(phoneui_d->sub_view[PH_VIEW_DIALER], true);
+ if (phoneui_d && phoneui_d->sub_view[PH_VIEW_FAVORITE])
+ phone_favor_set_background(phoneui_d->sub_view[PH_VIEW_FAVORITE], true);
+}
+
+API void phone_front_view_resume(ph_phoneui_data *phoneui_d)
+{
+ PH_TRACE;
+ if (phoneui_d && phoneui_d->sub_view[PH_VIEW_LOG] && PH_VIEW_LOG == phoneui_d->select_tab)
+ {
+ bool shouldRemoveBadge(hasBadge());
+ if(!shouldRemoveBadge)
+ {
+ phone_log_set_background(phoneui_d->navi, false);
+ phone_log_view_resume(phoneui_d->navi);
+ }
+ }
+
+ if (phoneui_d && phoneui_d->sub_view[PH_VIEW_CONTACT])
+ {
+ ctui_list_view_resume(phoneui_d->navi);
+ }
+
+ if (phoneui_d && phoneui_d->sub_view[PH_VIEW_DIALER])
+ {
+ if (PH_VIEW_DIALER == phoneui_d->select_tab)
+ {
+ phone_dialer_set_background(phoneui_d->sub_view[PH_VIEW_DIALER],
+ false);
+ phone_dialer_view_resume(phoneui_d->sub_view[PH_VIEW_DIALER]);
+ }
+ }
+
+ if (phoneui_d && phoneui_d->sub_view[PH_VIEW_FAVORITE]
+ && PH_VIEW_FAVORITE == phoneui_d->select_tab)
+ {
+ phone_favor_set_background(phoneui_d->sub_view[PH_VIEW_FAVORITE], false);
+ }
+
+ removeBadge();
+
+}
+
+static void front_view_win_activate(void *data, Evas *e, void *even_info)
+{
+ PH_TRACE;
+ elm_win_activate((Evas_Object *) data);
+ evas_event_callback_del(e, EVAS_CALLBACK_RENDER_FLUSH_POST,
+ front_view_win_activate);
+}
+
+API void phone_front_view_language_changed(ph_phoneui_data *phoneui_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == phoneui_d, "parameter(phoneui_d) is NULL");
+
+ // 1. Update toolbar
+ if (phoneui_d->item[PH_VIEW_LOG])
+ elm_object_item_text_set(phoneui_d->item[PH_VIEW_LOG],
+ T_(PH_GET_TEXT_BASIC, PHTEXT_LOGS));
+
+ if (phoneui_d->item[PH_VIEW_CONTACT])
+ elm_object_item_text_set(phoneui_d->item[PH_VIEW_CONTACT],
+ S_(PH_SYS_BODY_CONTACTS));
+
+ if (phoneui_d->item[PH_VIEW_DIALER])
+ elm_object_item_text_set(phoneui_d->item[PH_VIEW_DIALER],
+ T_(PH_GET_TEXT_BASIC, PHTEXT_KEYPAD));
+
+ if (phoneui_d->item[PH_VIEW_FAVORITE])
+ elm_object_item_text_set(phoneui_d->item[PH_VIEW_FAVORITE],
+ T_(PH_GET_TEXT_BASIC, PHTEXT_FAVORITES));
+
+ // 2. update view
+ if (phoneui_d->sub_view[PH_VIEW_LOG])
+ phone_log_view_language_changed(phoneui_d->navi);
+
+ if (phoneui_d->sub_view[PH_VIEW_CONTACT])
+ ctui_list_view_language_changed(phoneui_d->navi);
+
+ if (phoneui_d->sub_view[PH_VIEW_DIALER])
+ phone_dialer_view_language_changed(phoneui_d->sub_view[PH_VIEW_DIALER]);
+
+ if (phoneui_d->sub_view[PH_VIEW_FAVORITE])
+ phone_favor_view_language_changed(
+ phoneui_d->sub_view[PH_VIEW_FAVORITE]);
+}
+
+API void phone_front_view_reset(ph_phoneui_data *phoneui_d, int select_index,
+ int op, service_h service)
+{
+ PH_TRACE;
+ int call_launched = FALSE;
+ ph_view_info *view_info;
+ Evas_Object *view;
+ int ret;
+
+ elm_toolbar_select_mode_set(phoneui_d->tabbar, ELM_OBJECT_SELECT_MODE_NONE);
+
+ front_view_reset_current_sub_view(phoneui_d);
+ if (phoneui_d->sub_view[PH_VIEW_CONTACT])
+ ctui_list_view_resume(phoneui_d->navi);
+ view = elm_object_part_content_unset(phoneui_d->layout,
+ "elm.swallow.content");
+ if (view)
+ evas_object_hide(view);
+
+ elm_toolbar_select_mode_set(phoneui_d->tabbar,
+ ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+ view_info = (ph_view_info *) calloc(1, sizeof(ph_view_info));
+ phone_set_view_info(view_info, phoneui_d->win, phoneui_d->navi,
+ phoneui_d->ug, phoneui_d->ug_request, phoneui_d->cnt_max,
+ phoneui_d->ug_data);
+
+ switch (select_index)
+ {
+ case PH_VIEW_DIALER:
+ if (NULL == phoneui_d->sub_view[select_index])
+ phoneui_d->sub_view[select_index] = phone_create_dialer_view(
+ view_info);
+
+ if (PH_FRONT_DIALER_WITH_NUM == op)
+ {
+ char *num = NULL;
+ ret = service_get_uri(service, &num);
+ p_warn_if(SERVICE_ERROR_NONE != ret,
+ "service_get_uri is failed(%d)", ret);
+ phone_dialer_view_set_num(phoneui_d->sub_view[PH_VIEW_DIALER],
+ num + 4);
+ free(num);
+ }
+ else if (PH_FRONT_DIALER_WITH_SEND_KEY == op)
+ {
+ phone_dialer_view_send_key(phoneui_d->sub_view[PH_VIEW_DIALER]);
+ }
+ else
+ {
+ phone_dialer_view_resume(phoneui_d->sub_view[PH_VIEW_DIALER]);
+ }
+
+ phone_dialer_set_navi(phoneui_d->sub_view[PH_VIEW_DIALER]);
+ phone_dialer_check_focus(phoneui_d->sub_view[PH_VIEW_DIALER]);
+ phone_dialer_set_background(phoneui_d->sub_view[PH_VIEW_DIALER],
+ false);
+ break;
+ case PH_VIEW_CONTACT:
+ if (NULL == phoneui_d->sub_view[select_index])
+ {
+ phoneui_d->sub_view[PH_VIEW_CONTACT] =
+ ctui_create_phone_list_view(view_info);
+ }
+ ctui_list_navi_set(CT_LIST_MODE_DEFAULT, (ct_list_data *)
+ evas_object_data_get(phoneui_d->navi, "clist_d"));
+ break;
+ case PH_VIEW_LOG:
+ if (NULL == phoneui_d->sub_view[select_index])
+ {
+ phoneui_d->sub_view[select_index] = phone_create_log_view(view_info);
+ }
+
+ if (!phoneui_d->ug)
+ {
+ phone_log_missed_info_update(phoneui_d->navi);
+ }
+
+ phone_log_set_navi(phoneui_d->navi);
+ break;
+ case PH_VIEW_FAVORITE:
+ if (NULL == phoneui_d->sub_view[select_index])
+ phoneui_d->sub_view[select_index] = phone_favor_create_view(
+ view_info);
+ phone_favor_set_navi(phoneui_d->sub_view[select_index],
+ PH_FAVOR_MODE_DEFAULT);
+ phone_favor_set_background(phoneui_d->sub_view[PH_VIEW_FAVORITE],
+ false);
+ break;
+ default:
+ break;
+ }
+
+ phoneui_d->select_tab = select_index;
+
+ if (PH_VIEW_NONE < select_index && select_index < PH_VIEW_MAX)
+ {
+ elm_object_part_content_set(phoneui_d->layout, "elm.swallow.content",
+ phoneui_d->sub_view[select_index]);
+ evas_object_show(phoneui_d->sub_view[select_index]);
+ elm_toolbar_item_selected_set(phoneui_d->item[select_index], EINA_TRUE);
+ }
+
+ if (phoneui_d->win && FALSE == call_launched
+ && PH_VIEW_NONE != select_index)
+ {
+ if (EINA_FALSE == evas_object_visible_get(phoneui_d->win))
+ evas_object_show(phoneui_d->win);
+ evas_event_callback_add(evas_object_evas_get(phoneui_d->navi),
+ EVAS_CALLBACK_RENDER_FLUSH_POST, front_view_win_activate,
+ phoneui_d->win);
+ elm_win_activate(phoneui_d->win);
+ }
+ else
+ elm_win_lower(phoneui_d->win);
+ phoneui_d->timer = ecore_timer_add(3.0, phone_front_view_load_timer,
+ phoneui_d);
+
+ free(view_info);
+}
+
+static bool front_view_call_app_check(service_h service, const char *pkg_name,
+ void *data)
+{
+ PH_TRACE;
+ int *call_app_launched = (int *) data;
+
+ // premise : Only one Call app can be running at a time
+ if (1 == aul_app_is_running(pkg_name))
+ {
+ aul_open_app(pkg_name);
+ *call_app_launched = TRUE;
+ return true;
+ }
+ return true;
+}
+
+API int phone_front_view_show_call_app(ph_phoneui_data *phoneui_d)
+{
+ PH_TRACE;
+ service_h service;
+ int call_app_launched = FALSE;
+
+ service_create(&service);
+ service_set_operation(service, SERVICE_OPERATION_CALL);
+ service_set_uri(service, "tel:");
+ service_foreach_app_matched(service, front_view_call_app_check,
+ (void *) &call_app_launched);
+
+ if (call_app_launched)
+ return 1;
+ if (1 == aul_app_is_running(VIDEOCALL_PKG))
+ {
+ aul_open_app(VIDEOCALL_PKG);
+ return 1;
+ }
+ return 0;
+}
+
diff --git a/lib/ph-front/ph-front-view.h b/lib/ph-front/ph-front-view.h
new file mode 100755
index 0000000..8758114
--- /dev/null
+++ b/lib/ph-front/ph-front-view.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PH_FRONT_VIEW_H__
+#define __PH_FRONT_VIEW_H__
+
+Evas_Object* ph_front_create_toolbar(ph_phoneui_data &phoneui_d);
+
+#endif /* __PH_FRONT_VIEW_H__ */
+
diff --git a/lib/ph-front/phone-tabui-efl.xml b/lib/ph-front/phone-tabui-efl.xml
new file mode 100644
index 0000000..e486c8e
--- /dev/null
+++ b/lib/ph-front/phone-tabui-efl.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="phone-tabui-efl" version="0.1.0-0" install-location="internal-only">
+ <label>phone-tabui</label>
+ <author email="ensung.park@samsung.com" href="www.samsung.com">ensung park</author>
+ <description>phone-tabui-efl Application</description>
+ <ui-application appid="phone-tabui-efl" exec="/usr/ug/bin/phone-tabui-efl" nodisplay="true" multiple="true" type="capp" taskmanage="false">
+ <icon>org.tizen.contacts.png</icon>
+ <label>phone-tabui</label>
+ <label xml:lang="en-us">phone-tabui</label>
+ <label xml:lang="nl-nl">phone-tabui</label>
+ <label xml:lang="de-de">phone-tabui</label>
+ <label xml:lang="en-gb">phone-tabui</label>
+ <label xml:lang="zh-hk">phone-tabui</label>
+ <label xml:lang="zh-cn">phone-tabui</label>
+ <label xml:lang="ru-ru">phone-tabui</label>
+ <label xml:lang="zh-tw">phone-tabui</label>
+ <label xml:lang="ja-jp">phone-tabui</label>
+ <label xml:lang="es-es">phone-tabui</label>
+ <label xml:lang="el-gr">phone-tabui</label>
+ <label xml:lang="it-it">phone-tabui</label>
+ <label xml:lang="tr-tr">phone-tabui</label>
+ <label xml:lang="pt-pt">phone-tabui</label>
+ <label xml:lang="fr-fr">phone-tabui</label>
+ <label xml:lang="ko-kr">phone-tabui</label>
+ <application-service>
+ <operation name="http://tizen.org/ns/packages"/>
+ </application-service>
+ </ui-application>
+</manifest>
diff --git a/lib/settings/CMakeLists.txt b/lib/settings/CMakeLists.txt
new file mode 100755
index 0000000..67b35b3
--- /dev/null
+++ b/lib/settings/CMakeLists.txt
@@ -0,0 +1,13 @@
+LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
+
+SET(TARGET ${CT_SETTING})
+
+FILE(GLOB SRCS *.cpp)
+
+ADD_LIBRARY(${TARGET} SHARED ${SRCS})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS})
+TARGET_LINK_LIBRARIES(${TARGET} ${COMMON_LIB} ${ug_pkgs_LDFLAGS} ${CT_LIST})
+ADD_DEPENDENCIES(${TARGET} contacts_edj_build)
+INSTALL(TARGETS ${TARGET} DESTINATION ${UGLIBDIR})
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/lib/settings/contacts-settings-efl.xml DESTINATION "/usr/share/packages")
diff --git a/lib/settings/contacts-settings-efl.xml b/lib/settings/contacts-settings-efl.xml
new file mode 100644
index 0000000..42fbf9a
--- /dev/null
+++ b/lib/settings/contacts-settings-efl.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="contacts-settings-efl" version="0.1.0-0" install-location="internal-only">
+ <label>contacts-settings</label>
+ <author email="ensung.park@samsung.com" href="www.samsung.com">ensung park</author>
+ <description>contacts-settings-efl Application</description>
+ <ui-application appid="contacts-settings-efl" exec="/usr/ug/bin/contacts-settings-efl" nodisplay="true" multiple="true" type="capp" taskmanage="false">
+ <icon>org.tizen.contacts.png</icon>
+ <label>contacts-settings</label>
+ <label xml:lang="en-us">contacts-settings</label>
+ <label xml:lang="nl-nl">contacts-settings</label>
+ <label xml:lang="de-de">contacts-settings</label>
+ <label xml:lang="en-gb">contacts-settings</label>
+ <label xml:lang="zh-hk">contacts-settings</label>
+ <label xml:lang="zh-cn">contacts-settings</label>
+ <label xml:lang="ru-ru">contacts-settings</label>
+ <label xml:lang="zh-tw">contacts-settings</label>
+ <label xml:lang="ja-jp">contacts-settings</label>
+ <label xml:lang="es-es">contacts-settings</label>
+ <label xml:lang="el-gr">contacts-settings</label>
+ <label xml:lang="it-it">contacts-settings</label>
+ <label xml:lang="tr-tr">contacts-settings</label>
+ <label xml:lang="pt-pt">contacts-settings</label>
+ <label xml:lang="fr-fr">contacts-settings</label>
+ <label xml:lang="ko-kr">contacts-settings</label>
+ <application-service>
+ <operation name="http://tizen.org/ns/packages"/>
+ </application-service>
+ </ui-application>
+</manifest>
diff --git a/lib/settings/ct-setting-main.cpp b/lib/settings/ct-setting-main.cpp
new file mode 100755
index 0000000..1e013f3
--- /dev/null
+++ b/lib/settings/ct-setting-main.cpp
@@ -0,0 +1,155 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <ui-gadget-module.h>
+#include <efl_assist.h>
+#include "phone.h"
+#include "phone-common.h"
+
+#include "ct-setting-view.h"
+#include "ViewManager.h"
+
+static int create_setting_view(Evas_Object *parent, ct_setting_data *csetting_d)
+{
+ PH_TRACE;
+ Evas_Object *content;
+ Elm_Object_Item *navi_item;
+
+ p_retvm_if(NULL == parent, FALSE, "parameter(parent) is NULL");
+
+ csetting_d->navi = elm_naviframe_add(parent);
+ p_retvm_if(NULL == csetting_d->navi, FALSE, "navi is NULL");
+ ea_object_event_callback_add(csetting_d->navi, EA_CALLBACK_BACK, &Common::ViewManager::onBack, csetting_d->win);
+ ea_object_event_callback_add(csetting_d->navi, EA_CALLBACK_MORE, &Common::ViewManager::onMenu, NULL);
+ evas_object_show(csetting_d->navi);
+
+ content = ct_setting_create_layout(csetting_d);
+ navi_item = elm_naviframe_item_push(csetting_d->navi,
+ S_(PH_SYS_BODY_CONTACTS), NULL, NULL, content, NULL);
+ elm_object_item_data_set(navi_item, csetting_d);
+ csetting_d->navi_item = navi_item;
+
+ return TRUE;
+}
+
+static void* settings_on_create(ui_gadget_h ug, enum ug_mode mode,
+ service_h service, void *priv)
+{
+ PH_TRACE;
+ Evas_Object *bg;
+ Evas_Object *parent;
+ Evas_Object *base;
+ int err = CONTACTS_ERROR_NONE;
+ ct_setting_data *csetting_d = (ct_setting_data *) priv;
+
+ p_retvm_if(NULL == ug || NULL == priv, NULL,
+ "The parameter is invalid(ug=%p, priv=%p)", ug, priv);
+
+ parent = (Evas_Object *) ug_get_parent_layout(ug);
+ p_retvm_if(NULL == parent, NULL, "ug_get_parent_layout() return NULL");
+ csetting_d->ug = ug;
+
+ bindtextdomain(PACKAGE, "/usr/ug/res/locale");
+
+ err = contacts_connect2();
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_connect2() Failed(%d)", err);
+
+ if (UG_MODE_FULLVIEW == mode)
+ base = phone_create_base_layout(parent, true);
+ else
+ {
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_disconnect2() Failed(%d)", err);
+ return NULL;
+ }
+
+ bg = phone_create_bg(base);
+ if (NULL == bg)
+ {
+ ERR("phone_create_bg() return NULL");
+ evas_object_del(base);
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_disconnect2() Failed(%d)", err);
+ return NULL;
+ }
+
+ if (create_setting_view(base, csetting_d))
+ elm_object_part_content_set(base, "elm.swallow.content",
+ csetting_d->navi);
+ else
+ {
+ evas_object_del(base);
+ base = NULL;
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_disconnect2() Failed(%d)", err);
+ }
+
+ return base;
+}
+
+static void settings_on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ p_retm_if(NULL == ug, "The ug is NULL(ug = %p)", ug);
+ evas_object_del((Evas_Object *) ug_get_layout(ug));
+
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_disconnect2() Failed(%d)",
+ err);
+}
+
+extern "C" API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ ct_setting_data *csetting_d;
+
+ p_retvm_if(!ops, -1, "ops is NULL");
+
+ csetting_d = (ct_setting_data *) calloc(1, sizeof(ct_setting_data));
+ p_retvm_if(NULL == csetting_d, -1, "calloc() return NULL");
+
+ ops->create = settings_on_create;
+ ops->start = NULL;
+ ops->pause = NULL;
+ ops->resume = NULL;
+ ops->destroy = settings_on_destroy;
+ ops->message = NULL;
+ ops->event = NULL;
+ ops->key_event = NULL;
+ ops->priv = csetting_d;
+
+ return 0;
+}
+
+extern "C" API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ if (!ops)
+ return;
+
+ ops->priv = NULL;
+}
+
+API int setting_plugin_reset(service_h service, void *priv)
+{
+ PH_TRACE;
+ return 0;
+}
diff --git a/lib/settings/ct-setting-view.cpp b/lib/settings/ct-setting-view.cpp
new file mode 100755
index 0000000..89dfd1b
--- /dev/null
+++ b/lib/settings/ct-setting-view.cpp
@@ -0,0 +1,1627 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <media_content.h>
+#include <contacts.h>
+#include <assert.h>
+#include "phone.h"
+#include "phone-common.h"
+
+#include "ct-list.h"
+#include "ct-setting-view.h"
+
+#define CT_SETTING_PHONE_PATH "/opt/usr/media/Backup/Contacts"
+#define CT_SETTING_MEMORY_CARD_PATH "/opt/storage/sdcard/Backup/Contacts"
+
+#define CT_SETTING_TIMER_DURATION 0.2
+
+enum SETTING_ITC_TYPE
+{
+ SETTING_ITC_TEXT = 0,
+ SETTING_ITC_IMPORT = SETTING_ITC_TEXT,
+ SETTING_ITC_EXPORT = SETTING_ITC_TEXT,
+ SETTING_ITC_IMPORT_EXPORT = SETTING_ITC_TEXT,
+ SETTING_ITC_ORDER = 1,
+ SETTING_ITC_RADIO = 2,
+ SETTING_ITC_FIRSTLAST = SETTING_ITC_RADIO,
+ SETTING_ITC_LASTFIRST = SETTING_ITC_RADIO,
+ SETTING_ITC_MFC = 3,
+ SETTING_ITC_MFC_RIDIO = 4,
+ SETTING_ITC_SHOW = SETTING_ITC_MFC_RIDIO,
+ SETTING_ITC_HIDE = SETTING_ITC_MFC_RIDIO,
+ SETTING_ITC_SDN = 5,
+ SETTING_ITC_MAX,
+};
+
+enum SETTING_STORAGE_TYPE
+{
+ SETTING_STORAGE_PHONE = 0,
+ SETTING_STORAGE_MEMORY_CARD = 1,
+};
+
+static Elm_Genlist_Item_Class setting_itcs[] =
+{
+ {
+ 0, 0, 1, "dialogue/1text", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "dialogue/2text.3/expandable", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "dialogue/1text.1icon/expandable2", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "dialogue/2text.3/expandable", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "dialogue/1text.1icon/expandable2", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+ {
+ 0, 0, 1, "dialogue/2text.2", NULL, NULL,
+ {NULL, NULL, NULL, NULL},
+ },
+};
+
+typedef enum
+{
+ CT_SETTING_IMPORT,
+ CT_SETTING_EXPORT,
+} ct_setting_op;
+
+static void __setting_insert_records(ct_setting_data *csetting_d);
+
+static void setting_set_mfc_option(int mfc_option)
+{
+ PH_TRACE;
+ int fd;
+ char buf[PH_TEXT_MAX_LEN + 1] = { 0 };
+
+ fd = open(SETTING_MFC_PATH, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+ p_retm_if(fd < 0, "Open(%s) Failed", SETTING_MFC_PATH);
+ snprintf(buf, sizeof(buf), "%d", mfc_option);
+ if (-1 == write(fd, buf, strlen(buf)))
+ ERR("write()... Failed(%s)", strerror(errno));
+ close(fd);
+}
+
+static void setting_order(contacts_name_display_order_e order_type)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+
+ /* set ORDER_OF_DISPLAY */
+ err = contacts_setting_set_name_display_order(order_type);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_setting_set_name_display_order() Failed(%d)", err);
+}
+
+static void setting_order_ui(Evas_Object *genlist)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_name_display_order_e order;
+ ct_setting_data *csetting_d;
+ Elm_Object_Item *item_order;
+
+ p_retm_if(NULL == genlist, "parameter(genlist) is NULL");
+
+ csetting_d = (ct_setting_data *) evas_object_data_get(genlist, "csetting_d");
+ p_retm_if(NULL == csetting_d, "evas_object_data_get() return NULL");
+
+ err = contacts_setting_get_name_display_order(&order);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_name_display_order_e() Failed(%d)", err);
+ elm_radio_value_set(csetting_d->radio_order, (int) order);
+
+ item_order = (Elm_Object_Item *) evas_object_data_get(genlist, "order");
+ p_retm_if(NULL == item_order, "evas_object_data_get() return NULL");
+ elm_genlist_item_update(item_order);
+}
+
+static void setting_handle_order(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ Elm_Object_Item *it = (Elm_Object_Item *) event_info;
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+
+ setting_order((contacts_name_display_order_e)((int) data));
+ setting_order_ui(obj);
+}
+
+static void setting_handle_mfc(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_setting_data *csetting_d;
+ Elm_Object_Item *it = (Elm_Object_Item *) event_info;
+ Evas_Object *genlist = obj;
+ Elm_Object_Item * item;
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+
+ csetting_d = (ct_setting_data *) evas_object_data_get(genlist, "csetting_d");
+ p_retm_if(NULL == csetting_d, "evas_object_data_get() return NULL");
+
+ setting_set_mfc_option((int) data);
+ elm_radio_value_set(csetting_d->radio_mfc, (int) data);
+
+ item = (Elm_Object_Item *) evas_object_data_get(genlist, "mfc");
+ p_retm_if(NULL == item, "evas_object_data_get() return NULL");
+
+ elm_genlist_item_update(item);
+}
+
+static PTHREAD_FN setting_import_sim_contacts(void *data)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_connect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_connect2() Failed(%d)",
+ err);
+
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ ph_progress_info *p_info = csetting_d->p_info;
+ p_info->result = contacts_sim_import_all_contacts();
+ PH_DBG("p_info->result = %d", p_info->result);
+ p_info->completed = true;
+
+ contacts_disconnect2();
+
+ pthread_exit(NULL);
+}
+
+static Eina_Bool setting_import_sim_timer_cb(void *data)
+{
+ PH_TRACE;
+ const char *message;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ ph_progress_info *p_info;
+
+ p_retvm_if(NULL == csetting_d, ECORE_CALLBACK_CANCEL,
+ "parameter(ct_setting_data) is NULL");
+ p_info = csetting_d->p_info;
+
+ if (!p_info->completed)
+ return ECORE_CALLBACK_RENEW;
+
+ pthread_join(p_info->thread, NULL);
+
+ if (CONTACTS_ERROR_NONE == p_info->result)
+ message = T_(CT_GET_TEXT_BASIC, CTTEXT_IMPORTED);
+ else if (CONTACTS_ERROR_NO_DATA == p_info->result)
+ message = T_(CT_GET_TEXT_ERR, CTTEXT_IMPORT_SIM_NO_DATA);
+ else
+ {
+ switch (p_info->result)
+ {
+ case CONTACTS_ERROR_DB:
+ message = T_(CT_GET_TEXT_ERR, CTTEXT_ERR_DB_LOCKED);
+ break;
+ case CONTACTS_ERROR_FILE_NO_SPACE:
+ message = S_(CT_SYS_POP_NOT_ENOUGH_MEMORY);
+ break;
+ default:
+ message = S_(PH_SYS_POP_FAILED);
+ break;
+ }
+ }
+
+ evas_object_del(csetting_d->popup);
+ csetting_d->popup = NULL;
+
+ free(p_info);
+ csetting_d->p_info = NULL;
+
+ phone_show_tickernoti(message);
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void setting_import_sim(ct_setting_data *csetting_d)
+{
+ PH_TRACE;
+ int ret;
+ ph_progress_info *p_info;
+
+ p_retm_if(csetting_d->p_info, "thread is running");
+
+ p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info));
+ p_retm_if(NULL == p_info, "calloc() return NULL");
+ csetting_d->p_info = p_info;
+ p_info->alive = true;
+ p_info->result = TRUE;
+ p_info->without_cancel_btn = true;
+ ret = pthread_create(&p_info->thread, NULL, setting_import_sim_contacts,
+ csetting_d);
+ if (0 != ret)
+ {
+ ERR("Thread creation failed(%d)", ret);
+ free(p_info);
+ csetting_d->p_info = NULL;
+ return;
+ }
+
+ p_info->timer = ecore_timer_add(CT_SETTING_TIMER_DURATION,
+ setting_import_sim_timer_cb, csetting_d);
+ if (NULL == p_info->timer)
+ {
+ ERR("ecore_timer_add() return NULL");
+ p_info->alive = false;
+ pthread_join(p_info->thread, NULL);
+ free(p_info);
+ csetting_d->p_info = NULL;
+ return;
+ }
+ csetting_d->popup = phone_progressbar_popup(csetting_d->navi, p_info,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_IMPORTING_SIM_CONTACTS));
+}
+
+static inline void setting_progress_fail(ph_progress_info *p_info)
+{
+ PH_TRACE;
+ p_info->completed = true;
+ p_info->result = FALSE;
+ pthread_exit(NULL);
+}
+
+static Eina_Bool setting_export_timer_cb(void *data)
+{
+ PH_TRACE;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ ph_progress_info *p_info;
+
+ p_retvm_if(NULL == csetting_d, ECORE_CALLBACK_CANCEL,
+ "parameter(ct_setting_data) is NULL");
+ p_info = csetting_d->p_info;
+
+ if (!p_info->completed)
+ {
+ char count[PH_TEXT_SHORT_LEN];
+ char percent[PH_TEXT_SHORT_LEN];
+ double value = (double) p_info->cnt
+ / (double) p_info->cnt_checked_total;
+
+ if (!p_info->alive)
+ {
+ p_info->result = FALSE;
+ p_info->completed = true;
+ return ECORE_CALLBACK_RENEW;
+ }
+
+ elm_progressbar_value_set(p_info->progressbar, value);
+ snprintf(percent, sizeof(percent), "%d%%", (int) (100.0 * value));
+ snprintf(count, sizeof(count), "%d/%d", p_info->cnt,
+ p_info->cnt_checked_total);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext1", percent);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext2", count);
+
+ if (p_info->cnt == p_info->cnt_checked_total)
+ p_info->completed = true;
+
+ return ECORE_CALLBACK_RENEW;
+ }
+ else
+ {
+ const char *message;
+
+ pthread_join(p_info->thread, NULL);
+
+ if (p_info->result)
+ message = T_(CT_GET_TEXT_BASIC, CTTEXT_EXPORTED);
+ else
+ message = S_(PH_SYS_POP_FAILED);
+
+ free(p_info);
+ csetting_d->p_info = NULL;
+
+ if (csetting_d->list_export_ct)
+ {
+ free(csetting_d->list_export_ct);
+ csetting_d->list_export_ct = NULL;
+ }
+
+ evas_object_del(csetting_d->popup);
+ csetting_d->popup = NULL;
+ phone_show_tickernoti(message);
+ elm_naviframe_item_pop_to(csetting_d->navi_item);
+ return ECORE_CALLBACK_CANCEL;
+ }
+}
+
+static Eina_Bool setting_import_timer_cb(void *data)
+{
+ PH_TRACE;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ ph_progress_info *p_info;
+
+ p_retvm_if(NULL == csetting_d, ECORE_CALLBACK_CANCEL,
+ "parameter(ct_setting_data) is NULL");
+ p_info = csetting_d->p_info;
+
+ if (p_info->next_job)
+ {
+ pthread_join(p_info->thread, NULL);
+ __setting_insert_records(csetting_d);
+ p_info->next_job = false;
+ }
+
+ if (!p_info->alive && !p_info->completed)
+ {
+ p_info->result = FALSE;
+ p_info->completed = true;
+ }
+
+ if (!p_info->completed)
+ {
+ return ECORE_CALLBACK_RENEW;
+ }
+ else
+ {
+ const char *message;
+
+ pthread_join(p_info->thread, NULL);
+
+ if (p_info->result)
+ message = T_(CT_GET_TEXT_BASIC, CTTEXT_IMPORTED);
+ else
+ message = S_(PH_SYS_POP_FAILED);
+
+ evas_object_del(csetting_d->popup);
+ csetting_d->popup = NULL;
+ phone_show_tickernoti(message);
+
+ free(p_info);
+ csetting_d->p_info = NULL;
+
+ elm_naviframe_item_pop_to(csetting_d->navi_item);
+ return ECORE_CALLBACK_CANCEL;
+ }
+}
+
+static void __setting_update_media_db(const char *path)
+{
+ PH_TRACE;
+ p_retm_if(NULL == path, "path is NULL");
+
+ int error = media_content_connect();
+ p_retm_if(error != MEDIA_CONTENT_ERROR_NONE,
+ "media_content_connect(%s) is failed(%d)", path, error);
+
+ error = media_content_scan_file(path);
+ p_retm_if(error != MEDIA_CONTENT_ERROR_NONE,
+ "media_content_scan_file(%s) is failed(%d)", path, error);
+
+ error = media_content_disconnect();
+ p_retm_if(error != MEDIA_CONTENT_ERROR_NONE,
+ "media_content_disconnect(%s) is failed(%d)", path, error);
+}
+
+static PTHREAD_FN setting_export_contacts(void *data)
+{
+ PH_TRACE;
+ int i;
+ int ret;
+ int fd;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h record = NULL;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ ph_progress_info *p_info = csetting_d->p_info;
+
+ fd = open(csetting_d->path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+ if (fd < 0)
+ {
+ ERR("open(%s) Failed", csetting_d->path);
+ setting_progress_fail(p_info);
+ }
+ else
+ __setting_update_media_db(csetting_d->path);
+
+ err = contacts_connect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_connect2() Failed(%d)",
+ err);
+
+ for (i = 0; i < csetting_d->list_export_ct_cnt; i++)
+ {
+ char* vcard;
+
+ if (!p_info->alive)
+ {
+ p_info->result = FALSE;
+ p_info->completed = true;
+ break;
+ }
+ PH_DBG("csetting_d->list_export_ct[%d] = %d",
+ i, csetting_d->list_export_ct[i]);
+ err = contacts_db_get_record(_contacts_person._uri,
+ csetting_d->list_export_ct[i], &record);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_db_get_record() Failed(%d)", err);
+ p_info->result = FALSE;
+ continue;
+ }
+
+ err = contacts_vcard_make_from_person(record, &vcard);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_vcard_make_from_person() Failed(%d)", err);
+ p_info->result = FALSE;
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+ continue;
+ }
+ err = contacts_record_destroy(record, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_record_destroy() Failed(%d)", err);
+
+ if (-1 == write(fd, vcard, strlen(vcard)))
+ ERR("write()... Failed(%s)", strerror(errno));
+ else
+ __setting_update_media_db(csetting_d->path);
+
+ p_info->cnt++;
+ free(vcard);
+ }
+
+ ret = fsync(fd);
+ if (0 != ret)
+ ERR("fsync() failed(%d)", ret);
+
+ close(fd);
+ if (!p_info->result)
+ {
+ ret = unlink(csetting_d->path);
+ if (0 != ret)
+ ERR("unlink(%s) failed(%d)", csetting_d->path, ret);
+ }
+
+ contacts_disconnect2();
+
+ pthread_exit(NULL);
+}
+
+static void setting_get_filename(char *fullpath, char *dest, int size_dest)
+{
+ PH_TRACE;
+ char* index;
+ index = strrchr(fullpath, '/');
+ snprintf(dest, size_dest, "%s", index + 1);
+}
+
+static inline char* setting_export_get_filename(const char *path)
+{
+ PH_TRACE;
+ int ret __attribute__ ((unused));
+ time_t timer;
+ struct tm *stime;
+ char buf[PH_TEXT_MAX_LEN + 1] = { 0 };
+ char mkcmd[PH_TEXT_MAX_LEN + 1] = { 0 };
+
+ timer = time(NULL);
+ stime = localtime(&timer);
+ p_retvm_if(NULL == stime, NULL, "localtime() Failed(%d)", errno);
+
+ sprintf(mkcmd, "mkdir -p %s", path);
+ ret = system(mkcmd);
+
+ snprintf(buf, sizeof(buf), "%s/contacts_%02d%02d%02d%02d%02d%02d.vcf", path,
+ stime->tm_year - 100, stime->tm_mon + 1, stime->tm_mday,
+ stime->tm_hour, stime->tm_min, stime->tm_sec);
+
+ return strdup(buf);
+}
+
+static void setting_ug_destroy_cb(ui_gadget_h ug, void *priv)
+{
+ PH_TRACE;
+ ct_setting_data *csetting_d = (ct_setting_data *) priv;
+ p_retm_if(NULL == ug, "parameter(ug) is NULL");
+ ug_destroy(ug);
+
+ p_retm_if(NULL == priv, "parameter(ct_setting_data) is NULL");
+ csetting_d->child_ug = NULL;
+}
+
+static bool setting_import_vcard_foreach_cb(contacts_record_h record,
+ void *data)
+{
+ PH_TRACE;
+ int err;
+ ph_progress_info *p_info;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ contacts_record_h record_clone = NULL;
+
+ p_retvm_if(NULL == csetting_d, -1, "parameter(csetting_d) is NULL");
+
+ p_info = csetting_d->p_info;
+ p_retvm_if(NULL == p_info, -1, "csetting_d->p_info is NULL");
+
+ PH_DBG("setting_import_vcard_foreach_cb total_cnt %d",
+ csetting_d->import_total_cnt);
+
+ if (!p_info->alive)
+ {
+ p_info->result = FALSE;
+ p_info->completed = true;
+ return false;
+ }
+
+ err = contacts_record_clone(record, &record_clone);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ ERR("contacts_record_clone() Failed(%d)", err);
+ return false;
+ }
+ csetting_d->list_import_records = eina_list_append(
+ csetting_d->list_import_records, record_clone);
+ csetting_d->import_total_cnt++;
+
+ return true;
+}
+
+static void __setting_insert_records_cb(int err, int *ids, unsigned int count,
+ void *data)
+{
+ PH_TRACE;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ int _err = CONTACTS_ERROR_NONE;
+
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ if (csetting_d->p_info)
+ {
+ csetting_d->p_info->completed = true;
+ csetting_d->p_info->alive = false;
+ csetting_d->p_info->result = false;
+ }
+ ctui_create_contacts_error_popup(csetting_d->navi, err);
+ return;
+ }
+
+ _err = contacts_list_destroy(csetting_d->import_list, true);
+ p_retm_if(CONTACTS_ERROR_NONE != _err, "contacts_list_destroy() Failed(%d)",
+ _err);
+
+ PH_DBG("__setting_insert_records_cb total count %d, count %d",
+ csetting_d->import_total_cnt, csetting_d->import_cnt);
+
+ if (csetting_d->p_info)
+ {
+ if (!csetting_d->p_info->alive)
+ {
+ csetting_d->p_info->result = FALSE;
+ csetting_d->p_info->completed = true;
+ return;
+ }
+ }
+ else
+ return;
+
+ if (csetting_d->import_cnt == csetting_d->import_total_cnt)
+ {
+ if (csetting_d->p_info)
+ {
+ csetting_d->p_info->completed = true;
+ csetting_d->p_info->alive = false;
+ csetting_d->p_info->result = true;
+ }
+ return;
+ }
+
+ __setting_insert_records(csetting_d);
+}
+
+static void __setting_insert_records(ct_setting_data *csetting_d)
+{
+ PH_TRACE;
+ const int LIST_BULK_LENGTH = 50;
+ Eina_List *l;
+ int err = CONTACTS_ERROR_NONE;
+ void *v_record_temp = NULL;
+
+ err = contacts_list_create(&csetting_d->import_list);
+ p_retm_if(CONTACTS_ERROR_NONE != err, "contacts_list_create() Failed(%d)",
+ err);
+
+ EINA_LIST_FOREACH(csetting_d->list_import_records, l, v_record_temp)
+ {
+ contacts_record_h record_temp = (contacts_record_h) v_record_temp;
+ err = contacts_list_add(csetting_d->import_list, record_temp);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_add() Failed(%d) count %d",
+ err, csetting_d->import_cnt);
+ csetting_d->list_import_records = eina_list_remove_list(
+ csetting_d->list_import_records, l);
+
+ csetting_d->import_cnt++;
+
+ if ((csetting_d->import_cnt % LIST_BULK_LENGTH) == 0)
+ break;
+
+ }
+ err = contacts_db_insert_records_async(csetting_d->import_list,
+ __setting_insert_records_cb, csetting_d);
+ p_retm_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_insert_records_async() Failed(%d)", err);
+}
+
+static PTHREAD_FN setting_import_vcard_contacts(void *data)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ const char *path = NULL;
+ char *last = NULL;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ ph_progress_info *p_info = csetting_d->p_info;
+
+ err = contacts_connect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_connect2() Failed(%d)",
+ err);
+
+ path = strtok_r(csetting_d->path, "?", &last);
+ while (path)
+ {
+ err = contacts_vcard_parse_to_contact_foreach(path,
+ setting_import_vcard_foreach_cb, csetting_d);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ p_info->result = FALSE;
+ ERR("contacts_svc_vcard_foreach() Failed(%d)", p_info->result);
+ break;
+ }
+ path = strtok_r(NULL, "?", &last);
+ }
+
+ p_info->next_job = true;
+
+ contacts_disconnect2();
+
+ pthread_exit(NULL);
+}
+
+static void setting_import_vcard_myfile_ug_result(ui_gadget_h ug,
+ service_h service, void *data)
+{
+ PH_TRACE;
+ int ret;
+ char *val = NULL;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ ph_progress_info *p_info;
+
+ p_retm_if(NULL == ug, "parameter(ug) is NULL");
+ ug_destroy(ug);
+
+ p_retm_if(NULL == data, "parameter(ct_setting_data) is NULL");
+ csetting_d->child_ug = NULL;
+
+ p_retm_if(NULL == service, "parameter(result) is NULL");
+
+ service_get_extra_data(service, "result", &val);
+ p_retm_if(NULL == val, "service_get_extra_data() return NULL");
+
+ FREEandSTRDUP(csetting_d->path, val);
+ p_retm_if(NULL == csetting_d->path, "strdup() return NULL");
+
+ free(val);
+
+ p_retm_if(csetting_d->p_info, "thread is running");
+
+ p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info));
+ p_retm_if(NULL == p_info, "calloc() return NULL");
+ csetting_d->p_info = p_info;
+ p_info->alive = true;
+ p_info->result = TRUE;
+
+ ret = pthread_create(&p_info->thread, NULL, setting_import_vcard_contacts,
+ csetting_d);
+ if (0 != ret)
+ {
+ ERR("Thread creation failed(%d)", ret);
+ free(p_info);
+ csetting_d->p_info = NULL;
+ return;
+ }
+
+ p_info->timer = ecore_timer_add(CT_SETTING_TIMER_DURATION,
+ setting_import_timer_cb, csetting_d);
+ if (NULL == p_info->timer)
+ {
+ ERR("ecore_timer_add() return NULL");
+ p_info->alive = false;
+ pthread_join(p_info->thread, NULL);
+ free(p_info);
+ csetting_d->p_info = NULL;
+ return;
+ }
+ csetting_d->popup = phone_progressbar_popup(csetting_d->navi, p_info,
+ T_(CT_GET_TEXT_BASIC, CTTEXT_IMPORTING_SD_CONTACTS));
+}
+
+static void setting_import_vcard_myfile_ug(ct_setting_data *csetting_d)
+{
+ PH_TRACE;
+ ui_gadget_h ug;
+ struct ug_cbs cbs = { 0 };
+ service_h service;
+
+ service_create(&service);
+ service_add_extra_data(service, "path", CT_SETTING_PHONE_PATH);
+ service_add_extra_data(service, "select_type", "IMPORT");
+ service_add_extra_data(service, "file_type", "vcf");
+
+ cbs.result_cb = setting_import_vcard_myfile_ug_result;
+ cbs.destroy_cb = setting_ug_destroy_cb;
+ cbs.layout_cb = ug_common_layout_cb;
+ cbs.priv = csetting_d;
+
+ ug = ug_create(csetting_d->ug, MYFILES_UG, UG_MODE_FULLVIEW, service, &cbs);
+ p_warn_if(NULL == ug, "ug_create() Failed");
+ csetting_d->child_ug = ug;
+
+ service_destroy(service);
+}
+
+//////There was no initialization of contacts_sim_export_person function//////
+//////That's why it is written here. It needs to be rewritten/////////////////
+int contacts_sim_export_person(int data)
+{
+ PH_TRACE;
+ assert(false);
+ return 1;
+}
+//////////////////////////////////////////////////////////////////////////////
+
+static PTHREAD_FN setting_export_sim_contacts(void *data)
+{
+ PH_TRACE;
+ int i;
+ int err = CONTACTS_ERROR_NONE;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+
+ csetting_d->p_info->result = CONTACTS_ERROR_NONE;
+ for (i = 0; i < csetting_d->list_export_ct_cnt; i++)
+ {
+ err = contacts_sim_export_person(csetting_d->list_export_ct[i]);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ csetting_d->p_info->cnt++;
+ }
+ else
+ {
+ csetting_d->p_info->result = err;
+ ERR("contacts_sim_export_person() Failed(%d)", err);
+ }
+ }
+ pthread_exit(NULL);
+}
+
+static Eina_Bool setting_export_sim_timer_cb(void *data)
+{
+ PH_TRACE;
+ const char *message;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ ph_progress_info *p_info;
+ p_info = csetting_d->p_info;
+
+ double value = (double) p_info->cnt / (double) p_info->cnt_checked_total;
+ p_retvm_if(NULL == csetting_d, ECORE_CALLBACK_CANCEL,
+ "parameter(ct_setting_data) is NULL");
+ p_info = csetting_d->p_info;
+
+ if (!p_info->completed)
+ {
+ char count[PH_TEXT_SHORT_LEN];
+ char percent[PH_TEXT_SHORT_LEN];
+ if (!p_info->alive)
+ {
+ p_info->result = FALSE;
+ p_info->completed = true;
+ return ECORE_CALLBACK_RENEW;
+ }
+ elm_progressbar_value_set(p_info->progressbar, value);
+ snprintf(percent, sizeof(percent), "%d%%", (int) (100.0 * value));
+ snprintf(count, sizeof(count), "%d/%d", p_info->cnt,
+ p_info->cnt_checked_total);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext1", percent);
+ edje_object_part_text_set(elm_layout_edje_get(p_info->layout),
+ "elm.text.subtext2", count);
+
+ if (p_info->cnt == p_info->cnt_checked_total)
+ p_info->completed = true;
+
+ if (p_info->result == CONTACTS_ERROR_INTERNAL)
+ p_info->completed = true;
+
+ return ECORE_CALLBACK_RENEW;
+ }
+ pthread_join(p_info->thread, NULL);
+
+ if (CONTACTS_ERROR_NONE == p_info->result)
+ message = T_(CT_GET_TEXT_BASIC, CTTEXT_EXPORTED);
+ else
+ message = S_(PH_SYS_POP_FAILED);
+
+ evas_object_del(csetting_d->popup);
+ csetting_d->popup = NULL;
+
+ free(p_info);
+ csetting_d->p_info = NULL;
+
+ phone_show_tickernoti(message);
+ return ECORE_CALLBACK_CANCEL;
+}
+static void setting_export_sim(void *data, int *list, int cnt)
+{
+ PH_TRACE;
+ int ret;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ ph_progress_info *p_info;
+ char title[PH_TEXT_MAX_LEN] = { 0, };
+
+ if (NULL == csetting_d)
+ {
+ ERR("parameter(csetting_d) is NULL");
+ return;
+ }
+
+ if (cnt <= 0)
+ {
+ ERR("evas_object_data_get() return NULL");
+ return;
+ }
+ if (list == NULL)
+ {
+ ERR("list is NULL");
+ return;
+ }
+ p_retm_if(csetting_d->p_info, "thread is running");
+ p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info));
+ p_retm_if(NULL == p_info, "calloc() return NULL");
+
+ csetting_d->p_info = p_info;
+ p_info->cnt_checked_total = csetting_d->list_export_ct_cnt = cnt;
+ int *export_list = (int *) calloc(cnt, sizeof(int));
+ memcpy(export_list, list, sizeof(int) * cnt);
+ csetting_d->list_export_ct = export_list;
+
+ p_info->alive = true;
+ p_info->result = TRUE;
+ p_info->without_cancel_btn = true;
+
+ ret = pthread_create(&p_info->thread, NULL, setting_export_sim_contacts,
+ csetting_d);
+ if (0 != ret)
+ {
+ ERR("Thread creation failed(%d)", ret);
+ free(p_info);
+ csetting_d->p_info = NULL;
+ return;
+ }
+
+ p_info->timer = ecore_timer_add(CT_SETTING_TIMER_DURATION,
+ setting_export_sim_timer_cb, csetting_d);
+ if (NULL == p_info->timer)
+ {
+ ERR("ecore_timer_add() return NULL");
+ p_info->alive = false;
+ free(p_info);
+ csetting_d->p_info = NULL;
+ return;
+ }
+ snprintf(title, sizeof(title), "%s",
+ T_(CT_GET_TEXT_BASIC, CTTEXT_EXPORT_TO_SIM_CARD));
+ csetting_d->popup = phone_progressbar_popup(csetting_d->navi, p_info,
+ title);
+
+ return;
+
+}
+
+///There was no initialization of contacts_sim_get_empty_record_count function///
+///That's why it is written here. It needs to be rewritten///////////////////////
+int contacts_sim_get_empty_record_count(int *data)
+{
+ PH_TRACE;
+ assert(false);
+ return 1;
+}
+/////////////////////////////////////////////////////////////////////////////////
+
+static void setting_import_export_sim_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int cnt_max = 0;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ int err;
+ elm_genlist_item_selected_set((Elm_Object_Item *) event_info, EINA_FALSE);
+
+ if (CT_SETTING_IMPORT == csetting_d->mode)
+ {
+ setting_import_sim(csetting_d);
+ }
+ else
+ { // CT_SETTING_EXPORT
+ err = contacts_sim_get_empty_record_count(&cnt_max);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_sim_get_empty_record_count() Failed(%d)", err);
+
+ if (0 == cnt_max)
+ {
+ phone_show_popup(csetting_d->navi,
+ T_(CT_GET_TEXT_ERR, CTTEXT_SIM_MEMORY_FULL), 2.0);
+ PH_DBG("cnt_max is zero");
+ return;
+ }
+ ctui_create_list_select_view(csetting_d->navi, setting_export_sim,
+ csetting_d, CT_GET_LIST_ALL_PERSON, 0, 0, cnt_max);
+ }
+}
+
+static void setting_export_vcard_contacts(void *data, int *list, int cnt)
+{
+ PH_TRACE;
+ int ret;
+ char title[PH_TEXT_MAX_LEN] = { 0 };
+ ;
+ char filepath[PH_TEXT_MAX_LEN + 1] = { 0 };
+ ;
+ ph_progress_info *p_info;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+
+ if (NULL == csetting_d)
+ {
+ ERR("parameter(csetting_d) is NULL");
+ return;
+ }
+
+ if (cnt <= 0)
+ {
+ ERR("evas_object_data_get() return NULL");
+ return;
+ }
+ if (list == NULL)
+ {
+ ERR("list is NULL");
+ return;
+ }
+ int *export_list = (int *) calloc(cnt, sizeof(int));
+ memcpy(export_list, list, sizeof(int) * cnt);
+ csetting_d->list_export_ct = export_list;
+ csetting_d->list_export_ct_cnt = cnt;
+
+ p_retm_if(csetting_d->p_info, "thread is running");
+
+ p_info = (ph_progress_info *) calloc(1, sizeof(ph_progress_info));
+ p_retm_if(NULL == p_info, "calloc() return NULL");
+ csetting_d->p_info = p_info;
+
+ p_info->cnt_checked_total = csetting_d->list_export_ct_cnt;
+ if (p_info->cnt_checked_total <= 0)
+ {
+ char err[PH_TEXT_SHORT_LEN];
+ ERR("cnt_checked_total is %d", p_info->cnt_checked_total);
+ free(p_info);
+ free(csetting_d->list_export_ct);
+ csetting_d->p_info = NULL;
+ csetting_d->list_export_ct = NULL;
+ snprintf(err, sizeof(err), "Fail (%s)",
+ T_(CT_GET_TEXT_ERR, CTTEXT_NO_CONTACTS));
+ phone_show_tickernoti(err);
+ return;
+ }
+ free(csetting_d->path);
+ if (SETTING_STORAGE_MEMORY_CARD == csetting_d->storage_type)
+ {
+ csetting_d->path = setting_export_get_filename(
+ CT_SETTING_MEMORY_CARD_PATH);
+ }
+ else
+ {
+ csetting_d->path = setting_export_get_filename(CT_SETTING_PHONE_PATH);
+ }
+
+ p_info->alive = true;
+ p_info->result = TRUE;
+ setting_get_filename(csetting_d->path, filepath, sizeof(filepath));
+ snprintf(title, sizeof(title),
+ T_(CT_GET_TEXT_BASIC, CTTEXT_EXPORTING_CONTACTS_TO), filepath);
+ ret = pthread_create(&p_info->thread, NULL, setting_export_contacts,
+ csetting_d);
+ if (0 != ret)
+ {
+ ERR("Thread creation failed(%d)", ret);
+ free(p_info);
+ free(csetting_d->list_export_ct);
+ csetting_d->p_info = NULL;
+ csetting_d->list_export_ct = NULL;
+ return;
+ }
+
+ p_info->timer = ecore_timer_add(CT_SETTING_TIMER_DURATION,
+ setting_export_timer_cb, csetting_d);
+ if (NULL == p_info->timer)
+ {
+ ERR("ecore_timer_add() return NULL");
+ p_info->alive = false;
+ pthread_join(p_info->thread, NULL);
+ free(p_info);
+ free(csetting_d->list_export_ct);
+ csetting_d->p_info = NULL;
+ csetting_d->list_export_ct = NULL;
+ return;
+ }
+
+ csetting_d->popup = phone_progressbar_popup(csetting_d->navi, p_info,
+ title);
+}
+
+static void setting_import_export_phone_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ elm_genlist_item_selected_set((Elm_Object_Item *) event_info, EINA_FALSE);
+ csetting_d->storage_type = SETTING_STORAGE_PHONE;
+ if (CT_SETTING_IMPORT == csetting_d->mode)
+ setting_import_vcard_myfile_ug(csetting_d);
+ else
+ { // CT_SETTING_EXPORT
+ ctui_create_list_select_view(csetting_d->navi,
+ setting_export_vcard_contacts, csetting_d,
+ CT_GET_LIST_ALL_PERSON, 0, 0, 0);
+ }
+}
+
+static void setting_import_export_memory_card_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ elm_genlist_item_selected_set((Elm_Object_Item *) event_info, EINA_FALSE);
+ csetting_d->storage_type = SETTING_STORAGE_MEMORY_CARD;
+ if (CT_SETTING_IMPORT == csetting_d->mode)
+ setting_import_vcard_myfile_ug(csetting_d);
+ else
+ { // CT_SETTING_EXPORT
+ ctui_create_list_select_view(csetting_d->navi,
+ setting_export_vcard_contacts, csetting_d,
+ CT_GET_LIST_ALL_PERSON, 0, 0, 0);
+ }
+}
+
+static void setting_import_export(ct_setting_data *csetting_d)
+{
+ PH_TRACE;
+ int sim_state;
+ int mmc_mode = VCONFKEY_SYSMAN_MMC_REMOVED;
+ char buf[PH_TEXT_MAX_LEN + 1] = { 0 };
+
+ Evas_Object *genlist;
+ Elm_Object_Item * item;
+
+ genlist = elm_genlist_add(csetting_d->navi);
+ elm_object_style_set(genlist, "dialogue");
+ vconf_get_int(VCONFKEY_TELEPHONY_SIM_PB_INIT, &sim_state);
+
+ ctui_genlist_append_separator_20px_with_line(genlist);
+
+ PH_DBG("import/export sim_state is %d", sim_state);
+ item = elm_genlist_item_append(genlist,
+ &setting_itcs[SETTING_ITC_IMPORT_EXPORT], S_(CT_SYS_BODY_SIM), NULL,
+ ELM_GENLIST_ITEM_NONE, setting_import_export_sim_sel, csetting_d);
+ if (sim_state <= 0)
+ elm_object_item_disabled_set(item, EINA_TRUE);
+
+ if (CT_SETTING_EXPORT == csetting_d->mode)
+ {
+ elm_genlist_item_append(genlist,
+ &setting_itcs[SETTING_ITC_IMPORT_EXPORT],
+ T_(CT_GET_TEXT_BASIC, CTTEXT_PHONE), NULL,
+ ELM_GENLIST_ITEM_NONE, setting_import_export_phone_sel,
+ csetting_d);
+
+ item = elm_genlist_item_append(genlist,
+ &setting_itcs[SETTING_ITC_IMPORT_EXPORT],
+ S_(CT_SYS_BODY_MEMORYCARD), NULL, ELM_GENLIST_ITEM_NONE,
+ setting_import_export_memory_card_sel, csetting_d);
+ vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_mode);
+ if (mmc_mode == VCONFKEY_SYSMAN_MMC_REMOVED
+ || mmc_mode == VCONFKEY_SYSMAN_MMC_INSERTED_NOT_MOUNTED)
+ elm_object_item_disabled_set(item, EINA_TRUE);
+ snprintf(buf, sizeof(buf), "%s",
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_EXPORT_CONTACTS));
+ }
+ else if (CT_SETTING_IMPORT == csetting_d->mode)
+ {
+ elm_genlist_item_append(genlist,
+ &setting_itcs[SETTING_ITC_IMPORT_EXPORT],
+ S_(CT_SYS_BODY_MEMORYCARD), NULL, ELM_GENLIST_ITEM_NONE,
+ setting_import_export_phone_sel, csetting_d);
+ snprintf(buf, sizeof(buf), "%s",
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_IMPORT_CONTACTS));
+ }
+
+ elm_naviframe_item_push(csetting_d->navi, buf, NULL, NULL, genlist, NULL);
+}
+
+static void setting_import_contacts_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ elm_genlist_item_selected_set((Elm_Object_Item *) event_info, EINA_FALSE);
+
+ csetting_d->mode = CT_SETTING_IMPORT;
+ setting_import_export(csetting_d);
+}
+
+static void setting_order_item_sel(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ if (EINA_TRUE == elm_genlist_item_expanded_get(item))
+ elm_genlist_item_expanded_set(item, EINA_FALSE);
+ else
+ elm_genlist_item_expanded_set(item, EINA_TRUE);
+}
+
+static void setting_mfc_item_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ if (EINA_TRUE == elm_genlist_item_expanded_get(item))
+ elm_genlist_item_expanded_set(item, EINA_FALSE);
+ else
+ elm_genlist_item_expanded_set(item, EINA_TRUE);
+}
+
+static void setting_gl_exp(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_name_display_order_e order;
+ int mfc_option;
+ Evas_Object *genlist = obj;
+ Elm_Object_Item *it = (Elm_Object_Item *) event_info;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+
+ if (evas_object_data_get(obj, "order") == it)
+ {
+ csetting_d->radio_order = elm_radio_add(genlist);
+ elm_genlist_item_append(genlist, &setting_itcs[SETTING_ITC_FIRSTLAST],
+ (void *) CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST, it,
+ ELM_GENLIST_ITEM_NONE, setting_handle_order,
+ (void *) CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST);
+ elm_genlist_item_append(genlist, &setting_itcs[SETTING_ITC_LASTFIRST],
+ (void *) CONTACTS_NAME_DISPLAY_ORDER_LASTFIRST, it,
+ ELM_GENLIST_ITEM_NONE, setting_handle_order,
+ (void *) CONTACTS_NAME_DISPLAY_ORDER_LASTFIRST);
+
+ err = contacts_setting_get_name_display_order(&order);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_name_display_order_e() Failed(%d)", err);
+ elm_radio_value_set(csetting_d->radio_order, (int) order);
+ }
+ else if (evas_object_data_get(obj, "mfc") == it)
+ {
+ csetting_d->radio_mfc = elm_radio_add(genlist);
+ elm_genlist_item_append(genlist, &setting_itcs[SETTING_ITC_SHOW],
+ (void *) 0, it, ELM_GENLIST_ITEM_NONE, setting_handle_mfc,
+ (void *) 0);
+ elm_genlist_item_append(genlist, &setting_itcs[SETTING_ITC_HIDE],
+ (void *) 1, it, ELM_GENLIST_ITEM_NONE, setting_handle_mfc,
+ (void *) 1);
+ mfc_option = ctui_get_mfc_option();
+ elm_radio_value_set(csetting_d->radio_mfc, mfc_option);
+ }
+
+}
+
+static void setting_gl_con(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ elm_genlist_item_subitems_clear(item);
+
+ p_retm_if(NULL == csetting_d, "parameter(csetting_d) is NULL");
+
+ if (evas_object_data_get(obj, "order") == item)
+ {
+ if (csetting_d->radio_order)
+ {
+ evas_object_del(csetting_d->radio_order);
+ csetting_d->radio_order = NULL;
+ }
+ }
+ else if (evas_object_data_get(obj, "mfc") == item)
+ {
+ if (csetting_d->radio_mfc)
+ {
+ evas_object_del(csetting_d->radio_mfc);
+ csetting_d->radio_mfc = NULL;
+ }
+ }
+}
+
+static char *setting_gl_text_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ if (0 == strcmp(part, "elm.text"))
+ return strdup((const char *) data);
+ return NULL;
+}
+
+static char *setting_gl_order_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_name_display_order_e order;
+
+ if (0 == strcmp(part, "elm.text.1"))
+ return strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_ORDER_DISPLAY_NAME));
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+ err = contacts_setting_get_name_display_order(&order);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_name_display_order_e() Failed(%d)", err);
+
+ if (CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST == order)
+ return strdup(T_(CT_GET_TEXT_BASE_OP, CTTEXT_FIRSTLAST));
+ else
+ return strdup(T_(CT_GET_TEXT_BASE_OP, CTTEXT_LASTFIRST));
+ }
+ return NULL;
+}
+
+static char *setting_gl_mf_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ if (0 == strcmp(part, "elm.text.1"))
+ return strdup(T_(CT_GET_TEXT_BASIC, CTTEXT_MOST_FREQUENT_CONTACTS));
+ else if (0 == strcmp(part, "elm.text.2"))
+ {
+ if (0 == ctui_get_mfc_option())
+ return strdup(T_(CT_GET_TEXT_BASE_OP, CTTEXT_SHOW));
+ else if (1 == ctui_get_mfc_option())
+ return strdup(T_(CT_GET_TEXT_BASE_OP, CTTEXT_HIDE));
+ }
+ return NULL;
+}
+
+static char *setting_gl_mf_radio_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int type = (int) data;
+ if (0 == strcmp(part, "elm.text"))
+ {
+ if (0 == type)
+ return strdup(T_(CT_GET_TEXT_BASE_OP, CTTEXT_SHOW));
+ else if (1 == type)
+ return strdup(T_(CT_GET_TEXT_BASE_OP, CTTEXT_HIDE));
+ }
+ return NULL;
+}
+
+static char *setting_gl_radio_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int type = (int) data;
+ if (0 == strcmp(part, "elm.text"))
+ {
+ if (CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST == type)
+ return strdup(T_(CT_GET_TEXT_BASE_OP, CTTEXT_FIRSTLAST));
+ else if (CONTACTS_NAME_DISPLAY_ORDER_LASTFIRST == type)
+ return strdup(T_(CT_GET_TEXT_BASE_OP, CTTEXT_LASTFIRST));
+ }
+ return NULL;
+}
+
+static Evas_Object *setting_gl_radio_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int type = (int) data;
+ ct_setting_data *csetting_d;
+
+ if (0 == strcmp(part, "elm.icon"))
+ {
+ Evas_Object *radio;
+
+ csetting_d = (ct_setting_data *) evas_object_data_get(obj, "csetting_d");
+ p_retvm_if(NULL == csetting_d, NULL,
+ "evas_object_data_get() return NULL");
+
+ radio = elm_radio_add(obj);
+ p_retvm_if(NULL == radio, NULL, "elm_radio_add() return NULL");
+
+ elm_radio_group_add(radio, csetting_d->radio_order);
+ elm_radio_state_value_set(radio, type);
+
+ return radio;
+ }
+ return NULL;
+}
+
+static Evas_Object *setting_gl_mf_radio_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ int type = (int) data;
+ ct_setting_data *csetting_d;
+
+ if (0 == strcmp(part, "elm.icon"))
+ {
+ Evas_Object *radio;
+
+ csetting_d = (ct_setting_data *) evas_object_data_get(obj, "csetting_d");
+ p_retvm_if(NULL == csetting_d, NULL,
+ "evas_object_data_get() return NULL");
+
+ radio = elm_radio_add(obj);
+ p_retvm_if(NULL == radio, NULL, "elm_radio_add() return NULL");
+
+ elm_radio_group_add(radio, csetting_d->radio_mfc);
+ elm_radio_state_value_set(radio, type);
+
+ return radio;
+ }
+ return NULL;
+}
+
+static char* setting_gl_sdn_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ct_sdn_list *info = (ct_sdn_list *) data;
+ p_retvm_if(NULL == data, NULL, "The parameter(data) is NULL");
+
+ if (0 == strcmp(part, "elm.text.2"))
+ return SAFE_STRDUP(info->name);
+ else if (0 == strcmp(part, "elm.text.1"))
+ return SAFE_STRDUP(info->number);
+ return NULL;
+}
+
+static void setting_gl_sdn_del(void *data, Evas_Object *obj)
+{
+ PH_TRACE;
+ ct_sdn_list *info = (ct_sdn_list *) data;
+ p_retm_if(NULL == info, "parameter(info) is NULL");
+
+ free(info->name);
+ free(info->number);
+ free(info);
+}
+
+static inline void setting_create_itcs()
+{
+ PH_TRACE;
+ setting_itcs[SETTING_ITC_TEXT].func.text_get = setting_gl_text_label_get;
+
+ setting_itcs[SETTING_ITC_ORDER].func.text_get = setting_gl_order_label_get;
+
+ setting_itcs[SETTING_ITC_MFC].func.text_get = setting_gl_mf_label_get;
+
+ setting_itcs[SETTING_ITC_RADIO].func.text_get = setting_gl_radio_label_get;
+ setting_itcs[SETTING_ITC_MFC_RIDIO].func.text_get =
+ setting_gl_mf_radio_label_get;
+ setting_itcs[SETTING_ITC_RADIO].func.content_get =
+ setting_gl_radio_icon_get;
+ setting_itcs[SETTING_ITC_MFC_RIDIO].func.content_get =
+ setting_gl_mf_radio_icon_get;
+
+ setting_itcs[SETTING_ITC_SDN].func.text_get = setting_gl_sdn_label_get;
+ setting_itcs[SETTING_ITC_SDN].func.del = setting_gl_sdn_del;
+}
+
+static void setting_view_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Eina_List *l;
+ void *v_record = NULL;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ p_retm_if(NULL == csetting_d, "parameter(csetting_d) is NULL");
+
+ if (csetting_d->popup)
+ evas_object_del(csetting_d->popup);
+
+ EINA_LIST_FOREACH(csetting_d->list_import_records, l, v_record)
+ {
+ contacts_record_h record = (contacts_record_h) v_record;
+ contacts_record_destroy(record, true);
+ }
+ eina_list_free(csetting_d->list_import_records);
+
+ if (csetting_d->p_info)
+ {
+ csetting_d->p_info->alive = false;
+ pthread_join(csetting_d->p_info->thread, NULL);
+
+ ecore_timer_del(csetting_d->p_info->timer);
+ free(csetting_d->p_info);
+ csetting_d->p_info = NULL;
+ }
+
+ if (csetting_d->child_ug)
+ ug_destroy(csetting_d->child_ug);
+
+ free(csetting_d->path);
+ free(csetting_d);
+}
+
+static void setting_gl_sdn_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ ct_sdn_list *info = (ct_sdn_list *) elm_object_item_data_get(item);
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ phone_launch_voice_call(0, info->number);
+}
+
+static Evas_Object* setting_fill_sdn_view(Evas_Object *parent,
+ ct_setting_data *csetting_d)
+{
+ PH_TRACE;
+ Evas_Object *genlist;
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_list_h list = NULL;
+
+ genlist = elm_genlist_add(parent);
+ elm_object_style_set(genlist, "dialogue");
+ p_retvm_if(NULL == genlist, NULL, "elm_genlist_add() return NULL");
+
+ ctui_genlist_append_separator_20px_with_line(genlist);
+
+ err = contacts_db_get_all_records(_contacts_sdn._uri, 0, 0, &list);
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_db_get_all_records...() Failed(%d)", err);
+
+ csetting_d->cnt_sdn_list = 0;
+ while (CONTACTS_ERROR_NONE == err)
+ {
+ ct_sdn_list *data;
+
+ data = (ct_sdn_list *) calloc(1, sizeof(ct_sdn_list));
+ if (NULL == data)
+ {
+ ERR("calloc() return NULL");
+ break;
+ }
+ err = phone_cts_get_str_from_list(list, _contacts_sdn.name,
+ &(data->name));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() Failed(%d)", err);
+
+ err = phone_cts_get_str_from_list(list, _contacts_sdn.number,
+ &(data->number));
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "phone_cts_get_str_from_list() Failed(%d)", err);
+
+ csetting_d->cnt_sdn_list++;
+ elm_genlist_item_append(genlist, &setting_itcs[SETTING_ITC_SDN], data,
+ NULL, ELM_GENLIST_ITEM_NONE, setting_gl_sdn_sel, NULL);
+
+ err = contacts_list_next(list);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_next() Failed(%d)",
+ err);
+ }
+ err = contacts_list_destroy(list, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_list_destroy() Failed(%d)",
+ err);
+
+ return genlist;
+}
+
+static void setting_create_genlist_sdn(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ Evas_Object *genlist;
+ ct_setting_data *csetting_d = (ct_setting_data *) data;
+ char buf[PH_TEXT_MAX_LEN + 1] = { 0 };
+
+ elm_genlist_item_selected_set((Elm_Object_Item *) event_info, EINA_FALSE);
+ genlist = setting_fill_sdn_view(csetting_d->navi, csetting_d);
+
+ snprintf(buf, sizeof(buf), "%s (%d)", T_(CT_GET_TEXT_BASIC, CTTEXT_SDN),
+ csetting_d->cnt_sdn_list);
+
+ elm_naviframe_item_push(csetting_d->navi, buf, NULL, NULL, genlist,
+ NULL);
+}
+
+Evas_Object* ct_setting_create_layout(ct_setting_data *csetting_d)
+{
+ PH_TRACE;
+ unsigned int sdn_count;
+ contacts_list_h list = NULL;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *genlist;
+ Elm_Object_Item * item;
+
+ setting_create_itcs();
+
+ genlist = elm_genlist_add(csetting_d->navi);
+ elm_object_style_set(genlist, "dialogue");
+ evas_object_data_set(genlist, "csetting_d", csetting_d);
+ evas_object_event_callback_add(genlist, EVAS_CALLBACK_DEL,
+ setting_view_delete_cb, csetting_d);
+
+ ctui_genlist_append_separator_20px_with_line(genlist);
+
+ elm_genlist_item_append(genlist, &setting_itcs[SETTING_ITC_IMPORT],
+ T_(CT_GET_TEXT_BASE_OP, CTTEXT_IMPORT_CONTACTS), NULL,
+ ELM_GENLIST_ITEM_NONE, setting_import_contacts_cb, csetting_d);
+ item = elm_genlist_item_append(genlist, &setting_itcs[SETTING_ITC_ORDER],
+ NULL, NULL, ELM_GENLIST_ITEM_TREE, setting_order_item_sel, NULL);
+ evas_object_data_set(genlist, "order", item);
+
+ item = elm_genlist_item_append(genlist, &setting_itcs[SETTING_ITC_MFC],
+ NULL, NULL, ELM_GENLIST_ITEM_TREE, setting_mfc_item_sel, NULL);
+ evas_object_data_set(genlist, "mfc", item);
+
+ err = contacts_db_get_all_records(_contacts_sdn._uri, 0, 0, &list);
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ err = contacts_list_get_count(list, &sdn_count);
+ if (CONTACTS_ERROR_NONE == err && sdn_count)
+ {
+ elm_genlist_item_append(genlist, &setting_itcs[SETTING_ITC_TEXT],
+ T_(CT_GET_TEXT_BASIC, CTTEXT_SDN), NULL,
+ ELM_GENLIST_ITEM_NONE, setting_create_genlist_sdn,
+ csetting_d);
+ }
+ err = contacts_list_destroy(list, true);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_list_destroy() Failed(%d)", err);
+ }
+
+ evas_object_smart_callback_add(genlist, "expanded", setting_gl_exp,
+ csetting_d);
+ evas_object_smart_callback_add(genlist, "contracted", setting_gl_con,
+ csetting_d);
+
+ return genlist;
+}
+
diff --git a/lib/settings/ct-setting-view.h b/lib/settings/ct-setting-view.h
new file mode 100755
index 0000000..c485142
--- /dev/null
+++ b/lib/settings/ct-setting-view.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Module responsible for ui-layer of contacts-settings view.
+ */
+
+#ifndef __CONTACTS_SETTING_VIEW_H__
+#define __CONTACTS_SETTING_VIEW_H__
+
+#include "View.h"
+
+typedef struct
+{
+ Eina_Bool checked;
+ void *data;
+} ct_setting_gl_data;
+
+typedef struct : public Common::View
+{
+ Evas_Object *notify;
+ Evas_Object *radio_order;
+ Evas_Object *radio_mfc;
+
+ Evas_Object *genlist;
+
+ int cnt_sdn_list;
+ int id_ab;
+ int mode;
+ char *path;
+
+ int *list_export_ct;
+ int list_export_ct_cnt;
+
+ Eina_List *list_import_records;
+ int import_total_cnt;
+ int import_cnt;
+ int storage_type;
+ contacts_list_h import_list;
+
+ ph_progress_info *p_info;
+} ct_setting_data;
+
+typedef struct
+{
+ char *name;
+ char *number;
+} ct_sdn_list;
+
+Evas_Object* ct_setting_create_layout(ct_setting_data *csetting_d);
+
+#endif //__CONTACTS_DETAIL_VIEW_H__
diff --git a/lib/settings/mfc_option b/lib/settings/mfc_option
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/settings/mfc_option
diff --git a/lib/speed/CMakeLists.txt b/lib/speed/CMakeLists.txt
new file mode 100755
index 0000000..8cdeeba
--- /dev/null
+++ b/lib/speed/CMakeLists.txt
@@ -0,0 +1,16 @@
+LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
+
+SET(TARGET ${SPEEDDIAL})
+
+FILE(GLOB SRCS *.cpp)
+
+ADD_LIBRARY(${TARGET} SHARED ${SRCS})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES VERSION ${VERSION})
+SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS})
+TARGET_LINK_LIBRARIES(${TARGET} ${COMMON_LIB} ${ug_pkgs_LDFLAGS})
+
+ADD_DEPENDENCIES(${TARGET} speeddial_theme_build)
+
+INSTALL(TARGETS ${TARGET} DESTINATION ${UGLIBDIR})
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/lib/speed/speeddial-efl.xml DESTINATION "/usr/share/packages")
diff --git a/lib/speed/include/phone-speed.h b/lib/speed/include/phone-speed.h
new file mode 100755
index 0000000..580617f
--- /dev/null
+++ b/lib/speed/include/phone-speed.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PHONE_SPEED_H__
+#define __PHONE_SPEED_H__
+
+#include "phone-common.h"
+
+Evas_Object *phone_create_speeddial_view(ui_gadget_h ug, Evas_Object *win,
+ Evas_Object *navi);
+
+#endif //__PHONE_SPEED_H__
diff --git a/lib/speed/ph-speeddial-main.cpp b/lib/speed/ph-speeddial-main.cpp
new file mode 100755
index 0000000..ad27970
--- /dev/null
+++ b/lib/speed/ph-speeddial-main.cpp
@@ -0,0 +1,226 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <ui-gadget-module.h>
+#include <bundle.h>
+#include <efl_assist.h>
+
+#include "phone.h"
+#include "phone-common.h"
+#include "ph-speeddial-view.h"
+#include "ViewManager.h"
+
+static bool speed_create_ug_view(ph_speeddial_data * speed_d, Evas_Object *base)
+{
+ PH_TRACE;
+ p_retvm_if(NULL == speed_d, false, "Parameter is null");
+
+ if (NULL == speed_d->navi)
+ {
+ speed_d->navi = elm_naviframe_add(base);
+ p_retvm_if(NULL == speed_d->navi, false, "elm_naviframe_add is failed");
+ ea_object_event_callback_add(speed_d->navi, EA_CALLBACK_BACK, &Common::ViewManager::onBack, speed_d->win);
+ ea_object_event_callback_add(speed_d->navi, EA_CALLBACK_MORE, &Common::ViewManager::onMenu, NULL);
+ elm_object_part_content_set(base, "elm.swallow.content", speed_d->navi);
+ evas_object_show(speed_d->navi);
+ }
+
+ speed_d->layout = ph_speed_create_content(speed_d->navi, speed_d);
+ p_retvm_if(NULL == speed_d->layout, false,
+ "Fail to ph_speed_create_content");
+
+ return true;
+}
+
+static void *speed_on_create(ui_gadget_h ug, enum ug_mode mode,
+ service_h service, void *priv)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *bg;
+ Evas_Object *base;
+ Evas_Object *parent;
+ ph_speeddial_data *speed_d;
+
+ if (!ug || !priv)
+ return NULL;
+
+ bindtextdomain(PACKAGE, LOCALEDIR);
+
+ parent = (Evas_Object *) ug_get_parent_layout(ug);
+ if (!parent)
+ return NULL;
+
+ speed_d = (ph_speeddial_data *) priv;
+ speed_d->ug = ug;
+ speed_d->win = (Evas_Object *) ug_get_window();
+ speed_d->is_ug = true;
+
+ err = contacts_connect2();
+ p_retvm_if(CONTACTS_ERROR_NONE != err, NULL,
+ "contacts_connect2() Failed(%d)", err);
+
+ if (mode == UG_MODE_FULLVIEW)
+ base = phone_create_base_layout(parent, true);
+ else
+ base = phone_create_base_layout(parent, false);
+
+ bg = phone_create_bg(base);
+ if (NULL == bg)
+ {
+ PH_DBG("phone_create_bg() return NULL");
+ evas_object_del(base);
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_disconnect2() Failed(%d)", err);
+ return NULL;
+ }
+
+ if (!speed_create_ug_view(speed_d, base))
+ {
+ evas_object_del(base);
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_disconnect2() Failed(%d)", err);
+ }
+ return base;
+}
+
+static void speed_on_start(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+}
+
+static void speed_on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+}
+
+static void speed_on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+}
+
+static void speed_on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ if (!ug)
+ return;
+
+ evas_object_del((Evas_Object *) ug_get_layout(ug));
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_disconnect2() Failed(%d)",
+ err);
+}
+
+static void speed_on_message(ui_gadget_h ug, service_h msg, service_h service,
+ void *priv)
+{
+ PH_TRACE;
+}
+
+static void speed_on_event(ui_gadget_h ug, enum ug_event event,
+ service_h service, void *priv)
+{
+ PH_TRACE;
+ switch (event)
+ {
+ case UG_EVENT_ROTATE_PORTRAIT:
+ case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+ case UG_EVENT_ROTATE_LANDSCAPE:
+ case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+ break;
+ case UG_EVENT_LANG_CHANGE:
+ break;
+ default:
+ break;
+ }
+}
+
+static void speed_on_key_event(ui_gadget_h ug, enum ug_key_event event,
+ service_h data, void *priv)
+{
+ PH_TRACE;
+ if (!ug)
+ return;
+
+ switch (event)
+ {
+ case UG_KEY_EVENT_END:
+ ug_destroy_me(ug);
+ break;
+ default:
+ break;
+ }
+}
+
+extern "C" API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ ph_speeddial_data *speed_d;
+
+ if (!ops)
+ return -1;
+
+ speed_d = (ph_speeddial_data *) calloc(1, sizeof(ph_speeddial_data));
+ if (!speed_d)
+ return -1;
+
+ ops->create = speed_on_create;
+ ops->start = speed_on_start;
+ ops->pause = speed_on_pause;
+ ops->resume = speed_on_resume;
+ ops->destroy = speed_on_destroy;
+ ops->message = speed_on_message;
+ ops->event = speed_on_event;
+ ops->key_event = speed_on_key_event;
+ ops->priv = speed_d;
+ ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+ return 0;
+}
+
+extern "C" API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ PH_TRACE;
+ if (!ops)
+ return;
+
+ ops->priv = NULL;
+}
+
+API Evas_Object *phone_create_speeddial_view(ui_gadget_h ug, Evas_Object *win,
+ Evas_Object *navi)
+{
+ PH_TRACE;
+ ph_speeddial_data * speed_d = (ph_speeddial_data *) calloc(1, sizeof(ph_speeddial_data));
+ p_retvm_if(NULL == speed_d, NULL, "Faile to calloc ph_speeddial_data");
+
+ speed_d->ug = ug;
+ speed_d->is_ug = false;
+ speed_d->win = win;
+ speed_d->navi = navi;
+ speed_d->layout = ph_speed_create_content(navi, speed_d);
+ if (NULL == speed_d->layout)
+ {
+ free(speed_d);
+ return NULL;
+ }
+
+ return speed_d->layout;
+}
+
diff --git a/lib/speed/ph-speeddial-view.cpp b/lib/speed/ph-speeddial-view.cpp
new file mode 100755
index 0000000..9ff45d0
--- /dev/null
+++ b/lib/speed/ph-speeddial-view.cpp
@@ -0,0 +1,724 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <Ecore_X.h>
+#include <ui-gadget-module.h>
+
+#include "phone.h"
+#include "phone-common.h"
+#include "ph-speeddial-view.h"
+
+#define KEY_SPEED_DATA "speed_d"
+#define SPEED_VOICE_MAIL_NUM 1
+#define ELM_SWALLOW_CHECK_ICON "elm.swallow.check.icon"
+
+static Elm_Gengrid_Item_Class grid_itc, grid_itc_empty;
+
+enum
+{
+ PH_SPEED_MODE_DEFAULT,
+ PH_SPEED_MODE_EDIT,
+};
+
+static void speed_edit_mode_start(ph_speeddial_data * speed_d);
+static void speed_edit_mode_end(ph_speeddial_data * speed_d);
+
+static int speed_unset_speeddial(int spdial_num)
+{
+ PH_TRACE;
+ return contacts_db_delete_record(_contacts_speeddial._uri, spdial_num);
+}
+
+static void speed_update_button_status(ph_speeddial_data *speed_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == speed_d, "Parameter is null");
+ p_retm_if(NULL == speed_d->ctrl_item, "Navi button is null");
+
+ if (speed_d->is_edit_mode && 0 == speed_d->checked_cnt)
+ {
+ elm_object_disabled_set(speed_d->ctrl_item, EINA_TRUE);
+ }
+ else
+ {
+ elm_object_disabled_set(speed_d->ctrl_item, EINA_FALSE);
+ }
+}
+
+static void speed_load_list(ph_speeddial_data *speed_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == speed_d, "Parameter is null");
+
+ phone_free_speeddial_data(speed_d->speeddial_list);
+ speed_d->speeddial_list_count = 0;
+ speed_d->speeddial_list = phone_load_speeddial_data(
+ &(speed_d->speeddial_list_count));
+}
+
+static void speed_popup_response_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) data;
+ evas_object_del(speed_d->popup);
+ speed_d->popup = NULL;
+}
+
+static void speed_add_start_cb(void *data, void *data2)
+{
+ PH_TRACE;
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) data;
+ int *number_id = (int *) data2;
+ int ret;
+
+ p_retm_if(NULL == speed_d, "speed data is null");
+ p_retm_if(*number_id <= 0, "returned number_id is less than 0");
+ p_retm_if(20 < speed_d->cur_dial_num, "current dial num is higher than 20");
+
+ ret = speed_set_speeddial(speed_d->cur_dial_num, *number_id);
+ if (ret < 0)
+ phone_show_popup(speed_d->navi, S_(PH_SYS_POP_ALREDY_EXISTS), 2.0);
+}
+
+static void speed_destroy_child_ug(void *data)
+{
+ PH_TRACE;
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) data;
+ speed_d->child_ug = NULL;
+}
+
+static void speed_grid_empty_selected(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_speeddial_data * speed_d = (ph_speeddial_data *) evas_object_data_get(obj, KEY_SPEED_DATA);
+ int index = (int) data;
+ p_retm_if(true == speed_d->is_edit_mode, "It is in Edit mode");
+ elm_gengrid_item_selected_set((Elm_Object_Item *) event_info, EINA_FALSE);
+
+ speed_d->cur_dial_num = index;
+ speed_d->child_ug = phone_launch_contact_list_ug(speed_d->ug,
+ CT_UG_REQUEST_SELECT_NUMBER, speed_add_start_cb,
+ speed_destroy_child_ug, speed_d);
+}
+
+static void speed_change_start_cb(void *data, void *data2)
+{
+ PH_TRACE;
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) data;
+ int *number_id = (int *) data2;
+ int err = CONTACTS_ERROR_NONE;
+ p_retm_if(NULL == speed_d, "speed data is null");
+ p_retm_if(*number_id <= 0, "returned number_id is less than 0");
+ p_retm_if(20 < speed_d->cur_dial_num, "current dial num is higher than 20");
+ speed_unset_speeddial(speed_d->cur_dial_num);
+ err = speed_set_speeddial(speed_d->cur_dial_num, *number_id);
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ phone_show_popup(speed_d->navi, S_(PH_SYS_POP_ALREDY_EXISTS), 1.5);
+ }
+}
+
+static void speed_grid_change_contact(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) data;
+ p_retm_if(NULL== speed_d, "Speeddial data is null");
+
+ speed_popup_response_cb(speed_d, NULL, NULL);
+ speed_d->child_ug = phone_launch_contact_list_ug(speed_d->ug,
+ CT_UG_REQUEST_SELECT_NUMBER, speed_change_start_cb,
+ speed_destroy_child_ug, speed_d);
+}
+
+static void speed_grid_remove_speeddial(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) data;
+ speed_popup_response_cb(speed_d, NULL, NULL);
+ err = speed_unset_speeddial(speed_d->cur_dial_num);
+ if (CONTACTS_ERROR_NONE != err)
+ phone_show_tickernoti(S_(PH_SYS_POP_FAILED));
+ else
+ phone_show_tickernoti(S_(PH_SYS_POP_REMOVED));
+}
+
+static void speed_create_edit_popup(ph_speeddial_info *s_info, ph_speeddial_data *speed_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == s_info, "speeddial info is null");
+ p_retm_if(NULL == speed_d, "speeddial data is null");
+
+ Evas_Object *popup = NULL;
+ Evas_Object *list = NULL;
+ Evas_Object *btn = NULL;
+
+ if (SPEED_VOICE_MAIL_NUM == s_info->dial_number)
+ return;
+
+ speed_d->cur_dial_num = s_info->dial_number;
+ popup = elm_popup_add(speed_d->win);
+ elm_object_style_set(popup, "min_liststyle");
+ elm_object_part_text_set(popup, "title,text", S_(PH_SYS_SK_EDIT));
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ list = elm_list_add(popup);
+ elm_list_item_append(list, T_(PH_GET_TEXT_BASE_OP, PHTEXT_CHANGE_CONTACT),
+ NULL, NULL, speed_grid_change_contact, speed_d);
+ elm_list_item_append(list, S_(PH_SYS_BODY_REMOVE), NULL, NULL,
+ speed_grid_remove_speeddial, speed_d);
+ elm_list_mode_set(list, ELM_LIST_EXPAND);
+ elm_object_content_set(popup, list);
+
+ btn = elm_button_add(popup);
+ elm_object_text_set(btn, S_(PH_SYS_POP_CLOSE));
+ elm_object_part_content_set(popup, "button1", btn);
+ elm_object_style_set(btn, "popup_button/default");
+ evas_object_smart_callback_add(btn, "clicked", speed_popup_response_cb,
+ speed_d);
+
+ speed_d->popup = popup;
+ evas_object_show(popup);
+}
+
+static void speed_edit_update_check(Elm_Object_Item *item, ph_speeddial_info *s_info, ph_speeddial_data *speed_d);
+
+static void speed_grid_item_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ p_retm_if(NULL == data, "data is null");
+ ph_speeddial_info *s_info = (ph_speeddial_info *) data;
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) evas_object_data_get(obj, KEY_SPEED_DATA);
+ p_retm_if(NULL == speed_d, "speeddial data is null");
+
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ p_retm_if(NULL == item, "item is NULL");
+ elm_gengrid_item_selected_set(item, EINA_FALSE);
+
+ if (speed_d->is_edit_mode)
+ {
+ speed_edit_update_check(item, s_info, speed_d);
+ }
+ else
+ {
+ speed_create_edit_popup(s_info, speed_d);
+ }
+}
+
+static void speed_fill_gengrid(ph_speeddial_data *speed_d)
+{
+ PH_TRACE;
+ int i;
+ p_retm_if(NULL == speed_d, "Parameter is null");
+
+ for (i = 1; i < 10; i++)
+ {
+ Eina_List *l = NULL;
+ bool is_find = false;
+ ph_speeddial_info *cd;
+ void *v_cd = NULL;
+
+ EINA_LIST_FOREACH(speed_d->speeddial_list, l, v_cd)
+ {
+ cd = (ph_speeddial_info *) v_cd;
+ if (!cd)
+ continue;
+ if (cd->dial_number == i)
+ {
+ is_find = true;
+ break;
+ }
+ }
+ if (is_find)
+ elm_gengrid_item_append(speed_d->gengrid, &grid_itc, cd,
+ speed_grid_item_sel, cd);
+ else
+ elm_gengrid_item_append(speed_d->gengrid, &grid_itc_empty,
+ (void*) i, speed_grid_empty_selected, (void*) i);
+ }
+ evas_object_show(speed_d->gengrid);
+}
+
+static void speed_data_list_changed_cb(const char* view_uri, void* data)
+{
+ PH_TRACE;
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) data;
+ p_retm_if(NULL == speed_d, "Parameter is null");
+ if (speed_d->gengrid)
+ {
+ speed_d->checked_cnt = 0;
+ speed_load_list(speed_d);
+ elm_gengrid_clear(speed_d->gengrid);
+ speed_fill_gengrid(speed_d);
+ speed_update_button_status(speed_d);
+ }
+}
+
+static char *speed_grid_empty_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ if (0 == strcmp(part, "elm.text.number"))
+ {
+ int index = (int) data;
+ char buf[PATH_MAX] = { 0 };
+ snprintf(buf, sizeof(buf), "%d", index);
+ return strdup(buf);
+ }
+ return NULL;
+}
+
+static char *speed_grid_label_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ char buf[PATH_MAX] = { 0 };
+ ph_speeddial_info *s_info = (ph_speeddial_info *) data;
+
+ p_retvm_if(NULL == s_info, NULL, "speeddial info is null");
+
+ if (0 == strcmp(part, "elm.text.number"))
+ {
+ if (SPEED_VOICE_MAIL_NUM == s_info->dial_number)
+ return NULL;
+ snprintf(buf, sizeof(buf), "%d", s_info->dial_number);
+ return strdup(buf);
+ }
+ else if (0 == strcmp(part, "elm.text"))
+ {
+ if (s_info->display && *s_info->display)
+ snprintf(buf, sizeof(buf), "%s", s_info->display);
+ else if (s_info->ph_number && *s_info->ph_number)
+ snprintf(buf, sizeof(buf), "%s", s_info->ph_number);
+ else
+ return NULL;
+ return strdup(buf);
+ }
+ return NULL;
+}
+
+static void speed_del_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) data;
+ Eina_List *l;
+ bool deleted = false;
+ void *info = NULL;
+
+ EINA_LIST_FOREACH(speed_d->speeddial_list, l, info)
+ {
+ ph_speeddial_info *s_info = (ph_speeddial_info *) info;
+ if (!s_info)
+ continue;
+ if (EINA_TRUE == s_info->is_checked)
+ {
+ PH_DBG("%d", s_info->dial_number);
+ speed_unset_speeddial(s_info->dial_number);
+ deleted = true;
+ }
+ }
+
+ if (deleted)
+ {
+ phone_hide_notify(speed_d->layout);
+ phone_show_tickernoti(S_(PH_SYS_POP_REMOVED));
+ }
+
+ speed_edit_mode_end(speed_d);
+}
+
+static void speed_edit_set_selection_info(void *data)
+{
+ PH_TRACE;
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) data;
+ p_retm_if(NULL == speed_d, "Selection info is null");
+
+ if (0 == speed_d->checked_cnt)
+ phone_hide_notify(speed_d->layout);
+ else
+ {
+ char info_text[PH_TEXT_SHORT_LEN] = { 0 };
+ snprintf(info_text, sizeof(info_text), "%s (%d)",
+ S_(PH_SYS_POP_SELECTED), speed_d->checked_cnt);
+ phone_show_notify(speed_d->layout, info_text);
+ }
+}
+
+static void speed_edit_check_changed_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) data;
+ if (elm_check_state_get(obj))
+ speed_d->checked_cnt++;
+ else
+ speed_d->checked_cnt--;
+ speed_edit_set_selection_info(speed_d);
+ speed_update_button_status(speed_d);
+}
+
+static void speed_edit_update_check(Elm_Object_Item *item, ph_speeddial_info *s_info, ph_speeddial_data *speed_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == speed_d, "speeddial data is null");
+ p_retm_if(NULL == s_info, "speeddial info is null");
+ p_retm_if(NULL == item, "item is NULL");
+
+ Evas_Object *check = NULL;
+
+ if (s_info->is_checked)
+ {
+ speed_d->checked_cnt--;
+ }
+ else
+ {
+ speed_d->checked_cnt++;
+ }
+ check = elm_object_item_part_content_get(item, ELM_SWALLOW_CHECK_ICON);
+ elm_check_state_set(check, !s_info->is_checked);
+ speed_edit_set_selection_info(speed_d);
+ speed_update_button_status(speed_d);
+}
+
+static Evas_Object *speed_grid_content_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ PH_TRACE;
+ ph_speeddial_info *s_info = (ph_speeddial_info *) data;
+ p_retvm_if(NULL == s_info, NULL, "parameter is null");
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) evas_object_data_get(obj, KEY_SPEED_DATA);
+
+ if ((0 == strcmp(part, "elm.thumbnail"))
+ || (0 == strcmp(part, "elm.swallow.icon")))
+ {
+ Evas_Object *ic;
+ if (s_info->img_path)
+ ic = phone_create_icon_with_img(obj, s_info->img_path);
+ else
+ ic = phone_create_icon_with_img(obj, IMG_DEFAULT);
+ if (SPEED_VOICE_MAIL_NUM == s_info->dial_number)
+ elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
+ return ic;
+ }
+ else if (0 == strcmp(part, ELM_SWALLOW_CHECK_ICON)
+ && speed_d->is_edit_mode)
+ {
+ Evas_Object *btn;
+ if (SPEED_VOICE_MAIL_NUM == s_info->dial_number)
+ return NULL;
+ btn = elm_check_add(obj);
+ elm_object_style_set(btn, "grid");
+ elm_check_state_pointer_set(btn, &(s_info->is_checked));
+ evas_object_smart_callback_add(btn, "changed",
+ speed_edit_check_changed_cb, speed_d);
+ evas_object_propagate_events_set(btn, EINA_FALSE);
+ return btn;
+ }
+ return NULL;
+}
+
+static void ph_speed_menu_cb(void* data);
+
+static void speed_edit_back_btn_cb(void *data)
+{
+ PH_TRACE;
+ Elm_Object_Item * item;
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) data;
+ Eina_List *l;
+ void *info = NULL;
+
+ EINA_LIST_FOREACH(speed_d->speeddial_list, l, info)
+ {
+ ph_speeddial_info *s_info = (ph_speeddial_info *) info;
+ if (!s_info)
+ continue;
+ s_info->is_checked = EINA_FALSE;
+ }
+ speed_d->checked_cnt = 0;
+ phone_hide_notify(speed_d->layout);
+ speed_edit_mode_end(speed_d);
+
+ item = elm_gengrid_first_item_get(speed_d->gengrid);
+ while (item)
+ {
+ elm_gengrid_item_update(item);
+ item = elm_gengrid_item_next_get(item);
+ }
+
+ speed_d->menu_cb = ph_speed_menu_cb;
+ evas_object_del(speed_d->ctrl_item);
+ speed_d->ctrl_item = NULL;
+}
+
+static void speed_edit_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) data;
+ if (speed_d)
+ {
+ speed_edit_mode_start(speed_d);
+ }
+}
+
+static void speed_navi_set(int mode, ph_speeddial_data *speed_d)
+{
+ PH_TRACE;
+ Elm_Object_Item *navi_it;
+ Evas_Object *toolbar_btn;
+
+ p_retm_if(NULL == speed_d, "parameter(controlbar) is NULL");
+
+ navi_it = elm_naviframe_top_item_get(speed_d->navi);
+ p_retm_if(NULL == navi_it, "navi item is NULL");
+ phone_navi_item_reset(speed_d->navi_item, speed_d);
+
+ if (mode == PH_SPEED_MODE_EDIT)
+ {
+ toolbar_btn = phone_create_toolbar_btn(speed_d->navi,
+ S_(PH_SYS_SK_DELETE), speed_del_btn_cb, speed_d);
+
+ elm_object_item_part_content_set(speed_d->navi_item, "toolbar", toolbar_btn);
+ speed_d->back_cb = speed_edit_back_btn_cb;
+
+ speed_d->ctrl_item = toolbar_btn;
+ }
+
+ speed_update_button_status(speed_d);
+}
+
+static void speed_edit_mode_start(ph_speeddial_data *speed_d)
+{
+ PH_TRACE;
+ Elm_Object_Item * item;
+
+ speed_d->is_edit_mode = true;
+
+ item = elm_gengrid_first_item_get(speed_d->gengrid);
+ while (item)
+ {
+ elm_gengrid_item_update(item);
+ item = elm_gengrid_item_next_get(item);
+ }
+ elm_object_item_part_text_set(speed_d->navi_item, "elm.text.title",
+ T_(PH_GET_TEXT_BASE_OP, PHTEXT_SELECT_SPEED_DIAL_CONTACTS));
+ speed_navi_set(PH_SPEED_MODE_EDIT, speed_d);
+}
+
+static void speed_edit_mode_end(ph_speeddial_data *speed_d)
+{
+ PH_TRACE;
+ p_retm_if(NULL == speed_d, "speed_d is NULL");
+
+ speed_d->is_edit_mode = false;
+
+ elm_object_item_part_text_set(speed_d->navi_item, "elm.text.title",
+ T_(PH_GET_TEXT_BASIC, PHTEXT_SPEEDDIAL));
+ speed_navi_set(PH_SPEED_MODE_DEFAULT, speed_d);
+}
+
+static Evas_Object* speed_create_gengrid(ph_speeddial_data *speed_d,
+ Evas_Object *parent)
+{
+ PH_TRACE;
+ Evas_Object *gengrid;
+ int wx = 0;
+ int hy = 0;
+
+ p_retvm_if(NULL == speed_d, NULL, "Parameter is null");
+
+ gengrid = elm_gengrid_add(parent);
+ p_retvm_if(NULL == gengrid, NULL, "elm_gengrid_add is failed");
+ elm_object_theme_set(gengrid, speed_d->th);
+
+ ecore_x_window_size_get(ecore_x_window_root_get(ecore_x_window_focus_get()),
+ &wx, &hy);
+ elm_gengrid_item_size_set(gengrid, wx / 3, 273);
+ elm_gengrid_align_set(gengrid, 0.5, 0.0);
+ elm_gengrid_horizontal_set(gengrid, EINA_FALSE);
+ elm_scroller_bounce_set(gengrid, EINA_FALSE, EINA_TRUE);
+ elm_gengrid_multi_select_set(gengrid, EINA_TRUE);
+
+ evas_object_size_hint_weight_set(gengrid, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ grid_itc_empty.item_style = "gridtext_speeddial";
+ grid_itc_empty.func.text_get = speed_grid_empty_label_get;
+ grid_itc_empty.func.content_get = NULL;
+ grid_itc_empty.func.state_get = NULL;
+ grid_itc_empty.func.del = NULL;
+
+ grid_itc.item_style = "gridtext_speeddial";
+ grid_itc.func.text_get = speed_grid_label_get;
+ grid_itc.func.content_get = speed_grid_content_get;
+ grid_itc.func.state_get = NULL;
+ grid_itc.func.del = NULL;
+
+ evas_object_data_set(gengrid, KEY_SPEED_DATA, speed_d);
+
+ return gengrid;
+}
+
+static void speed_view_delete_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info)
+{
+ PH_TRACE;
+ ph_speeddial_data *speed_d = (ph_speeddial_data *) data;
+ int err = CONTACTS_ERROR_NONE;
+
+ p_retm_if(NULL == speed_d, "speed data is null");
+
+ err = contacts_db_remove_changed_cb(_contacts_person._uri,
+ speed_data_list_changed_cb, speed_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_remove_changed_cb() Failed(%d)", err);
+ err = contacts_db_remove_changed_cb(_contacts_speeddial._uri,
+ speed_data_list_changed_cb, speed_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_remove_changed_cb() Failed(%d)", err);
+
+ if (speed_d->speeddial_list)
+ phone_free_speeddial_data(speed_d->speeddial_list);
+
+ if (speed_d->th)
+ {
+ elm_theme_extension_del(speed_d->th, SPEEDDIAL_THEME_EDJ);
+ elm_theme_free(speed_d->th);
+ }
+
+ if (speed_d->popup)
+ evas_object_del(speed_d->popup);
+
+ if (!speed_d->ug && speed_d->child_ug)
+ ug_destroy(speed_d->child_ug);
+
+ free(speed_d);
+}
+
+static int speed_create_layout(ph_speeddial_data *speed_d)
+{
+ PH_TRACE;
+ Evas_Object *layout;
+ Evas_Object *base;
+ Evas_Object *gengrid;
+
+ base = elm_layout_add(speed_d->navi);
+ p_retvm_if(NULL == base, 0, "elm_layout_add() return NULL");
+ elm_layout_file_set(base, SELECTION_INFO_EDJ, "selectioninfo_layout");
+
+ layout = phone_create_base_layout(base, false);
+ p_retvm_if(NULL == layout, 0, "fail : phone_create_base_layout");
+ elm_object_part_content_set(base, "contents", layout);
+ speed_d->layout = base;
+
+ gengrid = speed_create_gengrid(speed_d, layout);
+ p_retvm_if(NULL == gengrid, 0, "fail : _create_check_gengrid");
+ speed_d->gengrid = gengrid;
+ elm_object_part_content_set(layout, "elm.swallow.content", gengrid);
+
+ speed_load_list(speed_d);
+ speed_fill_gengrid(speed_d);
+
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL,
+ speed_view_delete_cb, speed_d);
+ return 1;
+}
+
+static void ph_speed_hide_menu_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ assert(data);
+ if (NULL != data)
+ {
+ ph_speeddial_data* speed_d = static_cast<ph_speeddial_data*>( data );
+ if(speed_d->m_Menu)
+ {
+ evas_object_del(speed_d->m_Menu);
+ speed_d->m_Menu = NULL;
+ }
+ }
+}
+
+static void ph_speed_delete_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ ph_speed_hide_menu_cb(data,obj,event_info);
+ speed_edit_btn_cb(data,obj,event_info);
+}
+
+static void ph_speed_menu_cb(void* data)
+{
+ PH_TRACE;
+ ph_speeddial_data* speed_d = (ph_speeddial_data*) data;
+
+ if (speed_d)
+ {
+ speed_d->m_Menu = elm_ctxpopup_add(speed_d->navi);
+
+ if (speed_d->m_Menu)
+ {
+ elm_ctxpopup_item_append(speed_d->m_Menu, S_(PH_SYS_SK_DELETE), NULL, ph_speed_delete_cb, speed_d);
+ Elm_Object_Item * changeOrderItem = elm_ctxpopup_item_append(speed_d->m_Menu, T_(PH_GET_TEXT_BASIC, PHTEXT_CHANGE_ORDER), NULL, NULL, speed_d);
+ elm_object_item_disabled_set(changeOrderItem, EINA_TRUE);
+
+ evas_object_smart_callback_add(speed_d->m_Menu, "dismissed", ph_speed_hide_menu_cb, speed_d);
+ int x = 0, y = 0, w = 0, h = 0;
+ evas_object_geometry_get(speed_d->navi, &x, &y, &w, &h);
+
+ evas_object_move(speed_d->m_Menu, 0, y + h);
+ evas_object_show(speed_d->m_Menu);
+ }
+ }
+}
+
+Evas_Object *ph_speed_create_content(Evas_Object *parent,
+ ph_speeddial_data *speed_d)
+{
+ PH_TRACE;
+ Elm_Theme *th;
+ int ret;
+ int err = CONTACTS_ERROR_NONE;
+
+ th = elm_theme_new();
+ elm_theme_ref_set(th, NULL);
+ elm_theme_extension_add(th, SPEEDDIAL_THEME_EDJ);
+ speed_d->th = th;
+
+ ret = speed_create_layout(speed_d);
+ p_retvm_if(0 == ret, NULL, "speed_create_layout is failed");
+
+ speed_d->navi_item = elm_naviframe_item_push(speed_d->navi,
+ T_(PH_GET_TEXT_BASIC, PHTEXT_SPEEDDIAL), NULL, NULL,
+ speed_d->layout, NULL);
+
+ speed_navi_set(PH_SPEED_MODE_DEFAULT, speed_d);
+
+ speed_d->menu_cb = ph_speed_menu_cb;
+
+ err = contacts_db_add_changed_cb(_contacts_person._uri,
+ speed_data_list_changed_cb, speed_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_add_changed_cb() Failed(%d)", err);
+ err = contacts_db_add_changed_cb(_contacts_speeddial._uri,
+ speed_data_list_changed_cb, speed_d);
+ p_warn_if(CONTACTS_ERROR_NONE != err,
+ "contacts_db_add_changed_cb() Failed(%d)", err);
+
+ return speed_d->layout;
+}
diff --git a/lib/speed/ph-speeddial-view.h b/lib/speed/ph-speeddial-view.h
new file mode 100755
index 0000000..cd35f20
--- /dev/null
+++ b/lib/speed/ph-speeddial-view.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __SPEEDDIAL_VIEW_H__
+#define __SPEEDDIAL_VIEW_H__
+
+#include "View.h"
+
+typedef struct : public Common::View
+{
+ Evas_Object *gengrid;
+ Evas_Object *ctrl_item;
+ Eina_List *speeddial_list;
+ int cur_dial_num;
+ int checked_cnt;
+ int speeddial_list_count;
+ bool is_ug;
+ bool is_edit_mode;
+} ph_speeddial_data;
+
+Evas_Object *ph_speed_create_content(Evas_Object *parent,
+ ph_speeddial_data *speed_d);
+
+#endif /* __SPEEDDIAL_VIEW_H__ */
diff --git a/lib/speed/speeddial-efl.xml b/lib/speed/speeddial-efl.xml
new file mode 100644
index 0000000..d6151a2
--- /dev/null
+++ b/lib/speed/speeddial-efl.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="speeddial-efl" version="0.1.0-0" install-location="internal-only">
+ <label>speeddial</label>
+ <author email="ensung.park@samsung.com" href="www.samsung.com">ensung park</author>
+ <description>speeddial-efl Application</description>
+ <ui-application appid="speeddial-efl" exec="/usr/ug/bin/speeddial-efl" nodisplay="true" multiple="true" type="capp" taskmanage="false">
+ <icon>org.tizen.contacts.png</icon>
+ <label>speeddial</label>
+ <label xml:lang="en-us">speeddial</label>
+ <label xml:lang="nl-nl">speeddial</label>
+ <label xml:lang="de-de">speeddial</label>
+ <label xml:lang="en-gb">speeddial</label>
+ <label xml:lang="zh-hk">speeddial</label>
+ <label xml:lang="zh-cn">speeddial</label>
+ <label xml:lang="ru-ru">speeddial</label>
+ <label xml:lang="zh-tw">speeddial</label>
+ <label xml:lang="ja-jp">speeddial</label>
+ <label xml:lang="es-es">speeddial</label>
+ <label xml:lang="el-gr">speeddial</label>
+ <label xml:lang="it-it">speeddial</label>
+ <label xml:lang="tr-tr">speeddial</label>
+ <label xml:lang="pt-pt">speeddial</label>
+ <label xml:lang="fr-fr">speeddial</label>
+ <label xml:lang="ko-kr">speeddial</label>
+ <application-service>
+ <operation name="http://tizen.org/ns/packages"/>
+ </application-service>
+ </ui-application>
+</manifest>
diff --git a/libug-phone-efl.manifest b/libug-phone-efl.manifest
new file mode 100644
index 0000000..4a7d8dd
--- /dev/null
+++ b/libug-phone-efl.manifest
@@ -0,0 +1,11 @@
+<manifest>
+ <define>
+ <domain name="libug-phone"/>
+ <provide>
+ <label name="libug-phone::data"/>
+ </provide>
+ </define>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>
diff --git a/org.tizen.contacts-appservice.manifest b/org.tizen.contacts-appservice.manifest
new file mode 100644
index 0000000..7b27910
--- /dev/null
+++ b/org.tizen.contacts-appservice.manifest
@@ -0,0 +1,12 @@
+<manifest>
+ <define>
+ <domain name="org.tizen.contacts-appservice" policy="restricted"/>
+ </define>
+ <assign>
+ <filesystem path="/usr/share/packages/org.tizen.contacts-appservice.xml" label="_" />
+ <filesystem path="/usr/share/icons/default/small/org.tizen.contacts-appservice.png" label="_" />
+ </assign>
+ <request>
+ <domain name="org.tizen.contacts-appservice"/>
+ </request>
+</manifest>
diff --git a/org.tizen.contacts-appservice.rule b/org.tizen.contacts-appservice.rule
new file mode 100644
index 0000000..e59228f
--- /dev/null
+++ b/org.tizen.contacts-appservice.rule
@@ -0,0 +1,215 @@
+org.tizen.contacts-appservice libaccounts-svc rw---
+org.tizen.contacts-appservice ail::db rw---
+org.tizen.contacts-appservice system::vconf rwxat
+org.tizen.contacts-appservice system::homedir rwxat
+org.tizen.contacts-appservice net-config r-x--
+org.tizen.contacts-appservice xorg rwx--
+org.tizen.contacts-appservice contacts-service rwx--
+org.tizen.contacts-appservice isf rwx--
+org.tizen.contacts-appservice media-data::db rw---
+org.tizen.contacts-appservice sound_server rwx--
+org.tizen.contacts-appservice pkgmgr r----
+org.tizen.contacts-appservice efreet r-x--
+org.tizen.contacts-appservice dbus rwxat
+org.tizen.contacts-appservice pulseaudio rwxat
+org.tizen.contacts-appservice appsvc::db rw---
+org.tizen.contacts-appservice msg-service rwx--
+org.tizen.contacts-appservice syspopup::db rwx--
+org.tizen.contacts-appservice contacts-service::db rwx--
+org.tizen.contacts-appservice contacts-service::svc rw---
+org.tizen.contacts-appservice contacts-service::phonelog rw---
+org.tizen.contacts-appservice libug-phone::data rwx--
+org.tizen.contacts-appservice ug_bluetooth r-x--
+org.tizen.contacts-appservice system::use_internet rwxat
+org.tizen.contacts-appservice org.tizen.phone r-x--
+org.tizen.contacts-appservice libaccounts-svc::db rw---
+org.tizen.contacts-appservice phone-misc::db rw---
+org.tizen.contacts-appservice app-svc::db rw---
+org.tizen.contacts-appservice org.tizen.message rwx--
+org.tizen.contacts-appservice org.tizen.indicator rwx--
+org.tizen.contacts-appservice org.tizen.facebook rwx--
+org.tizen.contacts-appservice org.tizen.setting rwx--
+org.tizen.contacts-appservice immvibed rwx--
+org.tizen.contacts-appservice org.tizen.contacts rwxat
+org.tizen.contacts-appservice org.tizen.contacts-viewer rwxat
+org.tizen.contacts-appservice ui-gadget::client rwx--
+org.tizen.contacts-appservice org.tizen.camera-app rw---
+org.tizen.contacts-appservice media-server rwx--
+org.tizen.contacts-appservice thumb-server r----
+org.tizen.contacts-appservice ug-image-viewer-efl rwxat
+org.tizen.contacts-appservice system::media rwxat
+org.tizen.contacts-appservice system::share rwxat
+org.tizen.contacts-appservice sys-assert::core rwxat
+org.tizen.contacts-appservice org.tizen.gallery-service rwx--
+org.tizen.contacts-appservice csc-manager rwx--
+org.tizen.contacts-appservice org.tizen.email rwx--
+org.tizen.contacts-appservice org.tizen.dropbox r-x--
+org.tizen.contacts-appservice pkgmgr::db rw---
+org.tizen.contacts-appservice org.tizen.cluster-home rwx--
+org.tizen.contacts-appservice org.tizen.easy-home -w---
+org.tizen.contacts-appservice org.tizen.gallery rwxa-
+org.tizen.contacts-appservice system::app_logging -w---
+org.tizen.contacts-appservice mdm-server rwx--
+org.tizen.contacts-appservice nfc-share-service --x--
+org.tizen.contacts-appservice stest-service -w---
+org.tizen.contacts-appservice sdbd rwx--
+org.tizen.contacts-appservice data-provider-master::shortcut rw---
+org.tizen.contacts-appservice data-provider-master::shortcut.shortcut -w---
+org.tizen.contacts-appservice data-provider-master::shortcut.livebox -w---
+org.tizen.app-tray org.tizen.contacts-appservice rwx--
+e17 org.tizen.contacts-appservice rw---
+system::use_internet org.tizen.contacts-appservice rw---
+isf org.tizen.contacts-appservice r-x--
+org.tizen.quickpanel org.tizen.contacts-appservice r-x--
+org.tizen.cluster-home org.tizen.contacts-appservice r-x--
+org.tizen.easy-home org.tizen.contacts-appservice r-x--
+org.tizen.gallery-service org.tizen.contacts-appservice rwx--
+ui-gadget::client org.tizen.contacts-appservice rwxa-
+org.tizen.facebook org.tizen.contacts-appservice --x--
+org.tizen.lockscreen org.tizen.contacts-appservice r-x--
+org.tizen.dailybriefing-agent org.tizen.contacts-appservice --x--
+org.tizen.volume org.tizen.contacts-appservice --x--
+activesync-ui::eas-appsvc org.tizen.contacts-appservice rwx--
+org.tizen.setting org.tizen.contacts-appservice rwx--
+nfc-share-service org.tizen.contacts-appservice r-x--
+stest-service org.tizen.contacts-appservice r-x--
+crash-viewer org.tizen.contacts-appservice --x--
+obexd org.tizen.contacts-appservice r-x--
+org.tizen.data-provider-slave email-service::db rw---
+org.tizen.data-provider-slave org.tizen.contacts-appservice r-x--
+org.tizen.data-provider-slave org.tizen.contacts r-x--
+org.tizen.data-provider-slave contacts-service rwx--
+org.tizen.data-provider-slave contacts-service::svc rw---
+org.tizen.data-provider-slave email-service::db rw---
+org.tizen.data-provider-slave org.tizen.contacts-appservice r-x--
+org.tizen.data-provider-slave org.tizen.contacts r-x--
+org.tizen.data-provider-slave contacts-service rwx--
+org.tizen.data-provider-slave contacts-service::svc rw---
+org.tizen.contacts-appservice xorg::screencapture r----
+org.tizen.contacts-appservice device::app_logging -w---
+org.tizen.contacts-appservice org.tizen.smemo rwx--
+org.tizen.contacts-appservice ims-service::db rw---
+org.tizen.contacts-appservice system::vconf_inhouse rwxat
+org.tizen.contacts-appservice system::vconf_setting rwxat
+org.tizen.contacts-appservice system::vconf_system rw---
+media-server org.tizen.contacts-appservice -w---
+org.tizen.contacts-appservice msg-service::read rw---
+org.tizen.contacts-appservice msg-service::write rw---
+org.tizen.contacts-appservice msg-service::wappush rw---
+org.tizen.contacts-appservice telephony_framework::api_manager r----
+org.tizen.contacts-appservice telephony_framework::api_modem -w---
+org.tizen.contacts-appservice system::home rwxat
+org.tizen.contacts-appservice org.tizen.gallery::web-media.db rwx--
+org.tizen.contacts-appservice org.tizen.gallery::gallery-media.db rwx--
+org.tizen.contacts-appservice download-provider rw---
+org.tizen.contacts-appservice drmfw rw---
+org.tizen.contacts-appservice cbhm rwx--
+org.tizen.contacts-appservice data-provider-master rw---
+org.tizen.contacts-appservice data-provider-master::utility rw---
+org.tizen.contacts-appservice data-provider-master::notification rw---
+org.tizen.contacts-appservice allshare::svc rwx--
+org.tizen.contacts-appservice system-server rwxa-
+org.tizen.contacts-appservice deviced rwxa-
+org.tizen.contacts-appservice org.tizen.myfile rw---
+org.tizen.contacts-appservice dali rwxat
+org.tizen.contacts-appservice crash-worker --x--
+org.tizen.contacts-appservice cloud-content-sync::db rw---
+org.tizen.contacts-appservice cloud-content-sync rwx--
+org.tizen.contacts-appservice device::video rw---
+org.tizen.contacts-appservice device::hwcodec rw---
+org.tizen.contacts-appservice org.tizen.gallery::face-svc.db rwx--
+org.tizen.contacts-appservice ug-email-viewer-efl rwx--
+org.tizen.contacts-appservice email-service rwx--
+org.tizen.contacts-appservice ug-email-docsearch-efl --x--
+org.tizen.contacts-appservice camera-external-engine rw---
+org.tizen.contacts-appservice system::vconf_inouse r----
+org.tizen.contacts-appservice system::vconf_privacy r----
+org.tizen.contacts-appservice system::vconf_multimedia rw---
+org.tizen.contacts-appservice system::vconf_network rw---
+org.tizen.contacts-appservice system::vconf_misc r----
+aul org.tizen.contacts-appservice rwx--
+org.tizen.cluster-home ug-image-viewer-efl r-x--
+org.tizen.lockscreen ug-image-viewer-efl r-x--
+org.tizen.contacts-appservice smemo::db rw---
+org.tizen.contacts-appservice org.tizen.browser rw---
+org.tizen.contacts-appservice org.tizen.image-editor r----
+org.tizen.contacts-appservice org.tizen.calendar rwx--
+org.tizen.contacts-appservice calendar-service rwx--
+org.tizen.contacts-appservice device::sys_logging -w---
+org.tizen.contacts-appservice email-service::db rw---
+org.tizen.contacts-appservice webkit2-efl r-x--
+org.tizen.contacts-appservice data-provider-master::badge rw---
+org.tizen.contacts-appservice resman::db rw---
+org.tizen.contacts-appservice map-efl rwxat
+org.tizen.contacts-appservice ug-email-composer-efl rwxat
+org.tizen.contacts-appservice secure-storage::pkcs12 r----
+org.tizen.contacts-appservice email-service::write rw---
+org.tizen.contacts-appservice calendar-service::svc rw---
+org.tizen.contacts-appservice bt-service::admin -w---
+org.tizen.contacts-appservice bt-service::gap -w---
+org.tizen.contacts-appservice bt-service::manager -w---
+org.tizen.contacts-appservice svi-data rwxat
+org.tizen.contacts-appservice org.tizen.volume rwx--
+org.tizen.contacts-appservice org.tizen.setting::default-resources r-x--
+org.tizen.contacts-appservice device::camera rw---
+org.tizen.contacts-appservice device::mdnie rw---
+org.tizen.contacts-appservice location_fw::client rwx--
+org.tizen.contacts-appservice pkgmer::db r----
+org.tizen.contacts-appservice power_manager rwx--
+org.tizen.contacts-appservice stt-server rwx--
+org.tizen.contacts-appservice tts-server rwx--
+org.tizen.contacts-appservice ug-camera-efl rwxat
+org.tizen.contacts-appservice vcs-server rwx--
+org.tizen.contacts-appservice image-filter-d::db rw---
+org.tizen.contacts-appservice location_fw::db rw---
+org.tizen.contacts-appservice org.tizen.svoice rwx--
+org.tizen.contacts-appservice oma-ds-agent rwx--
+oma-ds-agent org.tizen.contacts-appservice rwx--
+org.tizen.contacts-appservice oma-ds-agent::cfg rwxat
+org.tizen.setting oma-ds-agent::cfg rwx--
+system::use_internet oma-ds-agent rwx--
+oma-ds-agent system::use_internet rwx--
+org.tizen.contacts-appservice syslogd rwx--
+org.tizen.contacts-appservice e17 r----
+org.tizen.contacts-appservice dlogutil r-x--
+org.tizen.contacts-appservice telephony_framework r-x--
+org.tizen.contacts-appservice aul r-x--
+org.tizen.contacts-appservice ode r-x--
+org.tizen.contacts-appservice sensor-framework r-x--
+org.tizen.contacts-appservice secure-storage r-x--
+org.tizen.contacts-appservice starter r-x--
+org.tizen.contacts-appservice osp-app-service r-x--
+org.tizen.contacts-appservice osp-security-service r-x--
+org.tizen.contacts-appservice osp-channel-service r-x--
+org.tizen.contacts-appservice org.tizen.app-tray r-x--
+org.tizen.contacts-appservice org.tizen.quickpanel r-x--
+org.tizen.contacts-appservice connman rwx--
+org.tizen.contacts-appservice mobicore-daemon r-x--
+org.tizen.contacts-appservice alarm-server rwx--
+org.tizen.contacts-appservice brcm_daemon r-x--
+org.tizen.contacts-appservice resman r-x--
+org.tizen.contacts-appservice osp-connectivity-service rwx--
+org.tizen.contacts-appservice push-service rwx--
+org.tizen.contacts-appservice eas-engine rwx--
+org.tizen.contacts-appservice org.tizen.data-provider-slave rwx--
+org.tizen.contacts-appservice org.tizen.data-provider-slave rwx--
+org.tizen.contacts-appservice usb-server rwx--
+org.tizen.contacts-appservice mtp-responder rwx--
+ui-gadget::client oma-ds-agent::svc rw---
+org.tizen.contacts-appservice data-provider-master::notification.client -w---
+org.tizen.contacts-appservice samsung-account-front r-x--
+org.tizen.contacts-appservice worldclock::db rw---
+context-service org.tizen.contacts-appservice r-x--
+org.tizen.contacts-appservice org.tizen.smartsearch --x--
+org.tizen.contacts-appservice ug-map-efl rwxat
+org.tizen.contacts-appservice obexd r-x--
+org.tizen.contacts-appservice org.tizen.fileshare-service rwxat
+org.tizen.contacts-appservice wifi_direct_manager rw---
+org.tizen.fileshare-service org.tizen.contacts-appservice r-x--
+org.tizen.contacts-appservice nfc-manager rwx--
+org.tizen.contacts-appservice nfc-manager::p2p rwx--
+org.tizen.contacts-appservice nfc-manager::admin rwx--
+org.tizen.contacts-appservice ug-setting-gallery-efl rwxat
+org.tizen.contacts-appservice org.tizen.music-player --x--
+org.tizen.contacts-appservice msg-service::db rw---
+
diff --git a/org.tizen.contacts-viewer.manifest b/org.tizen.contacts-viewer.manifest
new file mode 100644
index 0000000..8b5dea3
--- /dev/null
+++ b/org.tizen.contacts-viewer.manifest
@@ -0,0 +1,13 @@
+<manifest>
+ <define>
+ <domain name="org.tizen.contacts-viewer" policy="restricted"/>
+ </define>
+ <assign>
+ <filesystem path="/usr/share/packages/org.tizen.contacts-viewer.xml" label="_" />
+ <filesystem path="/usr/share/applications/org.tizen.contacts-viewer.desktop" label="_" />
+ <filesystem path="/usr/share/icons/default/small/org.tizen.contacts-viewer.png" label="_" />
+ </assign>
+ <request>
+ <domain name="org.tizen.contacts-viewer"/>
+ </request>
+</manifest>
diff --git a/org.tizen.contacts-viewer.rule b/org.tizen.contacts-viewer.rule
new file mode 100644
index 0000000..79ae3d1
--- /dev/null
+++ b/org.tizen.contacts-viewer.rule
@@ -0,0 +1,215 @@
+org.tizen.contacts-viewer libaccounts-svc rw---
+org.tizen.contacts-viewer ail::db rw---
+org.tizen.contacts-viewer system::vconf rwxat
+org.tizen.contacts-viewer system::homedir rwxat
+org.tizen.contacts-viewer net-config r-x--
+org.tizen.contacts-viewer xorg rwx--
+org.tizen.contacts-viewer contacts-service rwx--
+org.tizen.contacts-viewer isf rwx--
+org.tizen.contacts-viewer media-data::db rw---
+org.tizen.contacts-viewer sound_server rwx--
+org.tizen.contacts-viewer pkgmgr r----
+org.tizen.contacts-viewer efreet r-x--
+org.tizen.contacts-viewer dbus rwxat
+org.tizen.contacts-viewer pulseaudio rwxat
+org.tizen.contacts-viewer appsvc::db rw---
+org.tizen.contacts-viewer msg-service rwx--
+org.tizen.contacts-viewer syspopup::db rwx--
+org.tizen.contacts-viewer contacts-service::db rwx--
+org.tizen.contacts-viewer contacts-service::svc rw---
+org.tizen.contacts-viewer libug-phone::data rwx--
+org.tizen.contacts-viewer ug_bluetooth r-x--
+org.tizen.contacts-viewer system::use_internet rwxat
+org.tizen.contacts-viewer org.tizen.phone r-x--
+org.tizen.contacts-viewer libaccounts-svc::db rw---
+org.tizen.contacts-viewer phone-misc::db rw---
+org.tizen.contacts-viewer app-svc::db rw---
+org.tizen.contacts-viewer org.tizen.message rwx--
+org.tizen.contacts-viewer org.tizen.indicator rwx--
+org.tizen.contacts-viewer org.tizen.facebook rwx--
+org.tizen.contacts-viewer org.tizen.setting rwx--
+org.tizen.contacts-viewer immvibed rwx--
+org.tizen.contacts-viewer org.tizen.contacts rwx--
+org.tizen.contacts-viewer ui-gadget::client rwx--
+org.tizen.contacts-viewer org.tizen.camera-app rw---
+org.tizen.contacts-viewer media-server rwx--
+org.tizen.contacts-viewer thumb-server r----
+org.tizen.contacts-viewer ug-image-viewer-efl rwxat
+org.tizen.contacts-viewer system::media rwxat
+org.tizen.contacts-viewer system::share rwxat
+org.tizen.contacts-viewer sys-assert::core rwxat
+org.tizen.contacts-viewer org.tizen.gallery-service rwx--
+org.tizen.contacts-viewer csc-manager rwx--
+org.tizen.contacts-viewer org.tizen.email rwx--
+org.tizen.contacts-viewer org.tizen.dropbox r-x--
+org.tizen.contacts-viewer pkgmgr::db rw---
+org.tizen.contacts-viewer org.tizen.cluster-home rwx--
+org.tizen.contacts-viewer org.tizen.easy-home -w---
+org.tizen.contacts-viewer mdm-server rwx--
+org.tizen.contacts-viewer nfc-share-service --x--
+org.tizen.contacts-viewer stest-service -w---
+org.tizen.contacts-viewer obexd r-x--
+org.tizen.contacts-viewer sdbd rwx--
+org.tizen.contacts-viewer data-provider-master::shortcut rw---
+org.tizen.contacts-viewer data-provider-master::shortcut.shortcut -w---
+org.tizen.contacts-viewer data-provider-master::shortcut.livebox -w---
+org.tizen.app-tray org.tizen.contacts-viewer rwx--
+e17 org.tizen.contacts-viewer rw---
+system::use_internet org.tizen.contacts-viewer rw---
+isf org.tizen.contacts-viewer r-x--
+org.tizen.quickpanel org.tizen.contacts-viewer r-x--
+org.tizen.cluster-home org.tizen.contacts-viewer r-x--
+org.tizen.easy-hone org.tizen.contacts-viewer r-x--
+org.tizen.gallery-service org.tizen.contacts rw---
+ui-gadget::client org.tizen.contacts-viewer rwxa-
+org.tizen.facebook org.tizen.contacts-viewer rwx--
+org.tizen.lockscreen org.tizen.contacts-viewer r-x--
+org.tizen.dailybriefing-agent org.tizen.contacts-viewer --x--
+org.tizen.volume org.tizen.contacts-viewer --x--
+activesync-ui::eas-appsvc org.tizen.contacts-viewer rwx--
+org.tizen.setting org.tizen.contacts-viewer rwx--
+nfc-share-service org.tizen.contacts-viewer r-x--
+stest-service org.tizen.contacts-viewer r-x--
+crash-viewer org.tizen.contacts-viewer --x--
+obexd org.tizen.contacts-viewer r-x--
+sdbd org.tizen.contacts-viewer r-x--
+org.tizen.data-provider-slave email-service::db rw---
+org.tizen.data-provider-slave org.tizen.contacts-viewer r-x--
+org.tizen.data-provider-slave org.tizen.contacts r-x--
+org.tizen.data-provider-slave contacts-service rwx--
+org.tizen.data-provider-slave contacts-service::svc rw---
+org.tizen.data-provider-slave email-service::db rw---
+org.tizen.data-provider-slave org.tizen.contacts-viewer r-x--
+org.tizen.data-provider-slave org.tizen.contacts r-x--
+org.tizen.data-provider-slave contacts-service rwx--
+org.tizen.data-provider-slave contacts-service::svc rw---
+org.tizen.contacts-viewer xorg::screencapture r----
+org.tizen.contacts-viewer device::app_logging -w---
+org.tizen.contacts-viewer org.tizen.smemo rwx--
+org.tizen.contacts-viewer org.tizen.gallery rwxa-
+org.tizen.contacts-viewer ims-service::db rw---
+org.tizen.contacts-viewer system::vconf_inhouse rwxat
+org.tizen.contacts-viewer system::vconf_setting rwxat
+org.tizen.contacts-viewer system::vconf_system rw---
+media-server org.tizen.contacts-viewer -w---
+org.tizen.contacts-viewer contacts-service::phonelog rw---
+org.tizen.contacts-viewer msg-service::read rw---
+org.tizen.contacts-viewer msg-service::write rw---
+org.tizen.contacts-viewer msg-service::wappush rw---
+org.tizen.contacts-viewer telephony_framework::api_manager r----
+org.tizen.contacts-viewer telephony_framework::api_modem -w---
+org.tizen.contacts-viewer system::home rwxat
+org.tizen.contacts-viewer org.tizen.gallery::web-media.db rwx--
+org.tizen.contacts-viewer org.tizen.gallery::gallery-media.db rwx--
+org.tizen.contacts-viewer download-provider rw---
+org.tizen.contacts-viewer drmfw rw---
+org.tizen.contacts-viewer cbhm rwx--
+org.tizen.contacts-viewer data-provider-master rw---
+org.tizen.contacts-viewer data-provider-master::utility rw---
+org.tizen.contacts-viewer data-provider-master::notification rw---
+org.tizen.contacts-viewer allshare::svc rwx--
+org.tizen.contacts-viewer system-server rwxa-
+org.tizen.contacts-viewer deviced rwxa-
+org.tizen.contacts-viewer org.tizen.myfile rw---
+org.tizen.contacts-viewer dali rwxat
+org.tizen.contacts-viewer crash-worker --x--
+org.tizen.contacts-viewer cloud-content-sync::db rw---
+org.tizen.contacts-viewer cloud-content-sync rwx--
+org.tizen.contacts-viewer device::video rw---
+org.tizen.contacts-viewer device::hwcodec rw---
+org.tizen.contacts-viewer org.tizen.gallery::face-svc.db rwx--
+org.tizen.contacts-viewer ug-email-viewer-efl rwx--
+org.tizen.contacts-viewer email-service rwx--
+org.tizen.contacts-viewer ug-email-docsearch-efl --x--
+org.tizen.contacts-viewer camera-external-engine rw---
+org.tizen.contacts-viewer system::vconf_inouse r----
+org.tizen.contacts-viewer system::vconf_privacy r----
+org.tizen.contacts-viewer system::vconf_multimedia rw---
+org.tizen.contacts-viewer system::vconf_network rw---
+org.tizen.contacts-viewer system::vconf_misc r----
+aul org.tizen.contacts-viewer rwx--
+org.tizen.gallery-service org.tizen.contacts-viewer rwx--
+org.tizen.cluster-home ug-image-viewer-efl r-x--
+org.tizen.lockscreen ug-image-viewer-efl r-x--
+org.tizen.contacts-viewer smemo::db rw---
+org.tizen.contacts-viewer org.tizen.browser rw---
+org.tizen.contacts-viewer org.tizen.image-editor r----
+org.tizen.contacts-viewer org.tizen.calendar rwx--
+org.tizen.contacts-viewer calendar-service rwx--
+org.tizen.contacts-viewer device::sys_logging -w---
+org.tizen.contacts-viewer email-service::db rw---
+org.tizen.contacts-viewer webkit2-efl r-x--
+org.tizen.contacts-viewer data-provider-master::badge rw---
+org.tizen.contacts-viewer resman::db rw---
+org.tizen.contacts-viewer map-efl rwxat
+org.tizen.contacts-viewer ug-email-composer-efl rwxat
+org.tizen.contacts-viewer secure-storage::pkcs12 r----
+org.tizen.contacts-viewer email-service::write rw---
+org.tizen.contacts-viewer calendar-service::svc rw---
+org.tizen.contacts-viewer bt-service::admin -w---
+org.tizen.contacts-viewer bt-service::gap -w---
+org.tizen.contacts-viewer bt-service::manager -w---
+org.tizen.contacts-viewer system::app_logging -w---
+org.tizen.contacts-viewer svi-data rwxat
+org.tizen.contacts-viewer org.tizen.volume rwx--
+org.tizen.contacts-viewer org.tizen.setting::default-resources r-x--
+org.tizen.contacts-viewer device::camera rw---
+org.tizen.contacts-viewer device::mdnie rw---
+org.tizen.contacts-viewer location_fw::client rwx--
+org.tizen.contacts-viewer pkgmer::db r----
+org.tizen.contacts-viewer power_manager rwx--
+org.tizen.contacts-viewer stt-server rwx--
+org.tizen.contacts-viewer tts-server rwx--
+org.tizen.contacts-viewer ug-camera-efl rwxat
+org.tizen.contacts-viewer vcs-server rwx--
+org.tizen.contacts-viewer image-filter-d::db rw---
+org.tizen.contacts-viewer location_fw::db rw---
+org.tizen.contacts-viewer org.tizen.svoice rwx--
+org.tizen.contacts-viewer oma-ds-agent rwx--
+oma-ds-agent org.tizen.contacts-viewer rwx--
+org.tizen.contacts-viewer oma-ds-agent::cfg rwxat
+org.tizen.setting oma-ds-agent::cfg rwx--
+system::use_internet oma-ds-agent rwx--
+oma-ds-agent system::use_internet rwx--
+org.tizen.contacts-viewer syslogd rwx--
+org.tizen.contacts-viewer e17 r----
+org.tizen.contacts-viewer dlogutil r-x--
+org.tizen.contacts-viewer telephony_framework r-x--
+org.tizen.contacts-viewer aul r-x--
+org.tizen.contacts-viewer ode r-x--
+org.tizen.contacts-viewer sensor-framework r-x--
+org.tizen.contacts-viewer secure-storage r-x--
+org.tizen.contacts-viewer starter r-x--
+org.tizen.contacts-viewer osp-app-service r-x--
+org.tizen.contacts-viewer osp-security-service r-x--
+org.tizen.contacts-viewer osp-channel-service r-x--
+org.tizen.contacts-viewer org.tizen.app-tray r-x--
+org.tizen.contacts-viewer org.tizen.quickpanel r-x--
+org.tizen.contacts-viewer connman rwx--
+org.tizen.contacts-viewer mobicore-daemon r-x--
+org.tizen.contacts-viewer alarm-server rwx--
+org.tizen.contacts-viewer brcm_daemon r-x--
+org.tizen.contacts-viewer resman r-x--
+org.tizen.contacts-viewer osp-connectivity-service rwx--
+org.tizen.contacts-viewer push-service rwx--
+org.tizen.contacts-viewer eas-engine rwx--
+org.tizen.contacts-viewer org.tizen.data-provider-slave rwx--
+org.tizen.contacts-viewer org.tizen.data-provider-slave rwx--
+org.tizen.contacts-viewer usb-server rwx--
+org.tizen.contacts-viewer mtp-responder rwx--
+ui-gadget::client oma-ds-agent::svc rw---
+org.tizen.contacts-viewer data-provider-master::notification.client -w---
+org.tizen.contacts-viewer samsung-account-front r-x--
+org.tizen.contacts-viewer worldclock::db rw---
+context-service org.tizen.contacts-viewer r-x--
+org.tizen.contacts-viewer org.tizen.smartsearch --x--
+org.tizen.contacts-viewer ug-map-efl rwxat
+org.tizen.contacts-viewer org.tizen.fileshare-service rwxat
+org.tizen.contacts-viewer wifi_direct_manager rw---
+org.tizen.fileshare-service org.tizen.contacts-viewer r-x--
+org.tizen.contacts-viewer nfc-manager rwx--
+org.tizen.contacts-viewer nfc-manager::p2p rwx--
+org.tizen.contacts-viewer nfc-manager::admin rwx--
+org.tizen.contacts-viewer ug-setting-gallery-efl rwxat
+org.tizen.contacts-viewer org.tizen.music-player --x--
+org.tizen.contacts-viewer msg-service::db rw---
diff --git a/org.tizen.contacts.manifest b/org.tizen.contacts.manifest
new file mode 100644
index 0000000..b8ebc35
--- /dev/null
+++ b/org.tizen.contacts.manifest
@@ -0,0 +1,14 @@
+<manifest>
+ <define>
+ <domain name="org.tizen.contacts"/>
+ </define>
+ <assign>
+ <filesystem path="/usr/share/packages/org.tizen.contacts.xml" label="_" />
+ <filesystem path="/usr/share/applications/org.tizen.contacts.desktop" label="_" />
+ <filesystem path="/usr/share/icons/default/small/org.tizen.contacts.png" label="_" />
+ <filesystem path="/opt/usr/ug/data/ug-phone" label="org.tizen.contacts" type="transmutable" />
+ </assign>
+ <request>
+ <domain name="org.tizen.contacts"/>
+ </request>
+</manifest> \ No newline at end of file
diff --git a/org.tizen.contacts.rule b/org.tizen.contacts.rule
new file mode 100644
index 0000000..5e567eb
--- /dev/null
+++ b/org.tizen.contacts.rule
@@ -0,0 +1,217 @@
+org.tizen.contacts libaccounts-svc rw---
+org.tizen.contacts ail::db rw---
+org.tizen.contacts system::vconf rwxat
+org.tizen.contacts system::vconf_setting rwxat
+org.tizen.contacts system::vconf_inhouse rwxat
+org.tizen.contacts system::homedir rwxat
+org.tizen.contacts net-config r-x--
+org.tizen.contacts xorg rwx--
+org.tizen.contacts contacts-service rwx--
+org.tizen.contacts isf rwx--
+org.tizen.contacts media-data::db rw---
+org.tizen.contacts sound_server rwx--
+org.tizen.contacts pkgmgr r----
+org.tizen.contacts efreet r-x--
+org.tizen.contacts dbus rwxat
+org.tizen.contacts pulseaudio rwxat
+org.tizen.contacts appsvc::db rw---
+org.tizen.contacts msg-service rwx--
+org.tizen.contacts syspopup::db rwx--
+org.tizen.contacts contacts-service::db rwx--
+org.tizen.contacts contacts-service::svc rwx--
+org.tizen.contacts contacts-service::phonelog rw---
+org.tizen.contacts libug-phone::data rwx--
+org.tizen.contacts ug_bluetooth r-x--
+org.tizen.contacts system::use_internet rwxat
+org.tizen.contacts org.tizen.phone r-x--
+org.tizen.contacts libaccounts-svc::db rw---
+org.tizen.contacts phone-misc::db rw---
+org.tizen.contacts app-svc::db rw---
+org.tizen.contacts org.tizen.message rwx--
+org.tizen.contacts org.tizen.indicator rwx--
+org.tizen.contacts org.tizen.facebook rwx--
+org.tizen.contacts org.tizen.setting rwx--
+org.tizen.contacts immvibed rwx--
+org.tizen.contacts org.tizen.contacts-viewer r-x--
+org.tizen.contacts ui-gadget::client rwx--
+org.tizen.contacts org.tizen.contacts-group-viewer --x--
+org.tizen.contacts org.tizen.camera-app rw---
+org.tizen.contacts media-server rwx--
+org.tizen.contacts thumb-server r----
+org.tizen.contacts ug-image-viewer-efl rwxat
+org.tizen.contacts system::media rwxat
+org.tizen.contacts system::share rwxat
+org.tizen.contacts sys-assert::core rwxat
+org.tizen.contacts org.tizen.gallery-service rwx--
+org.tizen.contacts csc-manager rwx--
+org.tizen.contacts org.tizen.email rwx--
+org.tizen.contacts org.tizen.dropbox r-x--
+org.tizen.contacts pkgmgr::db rw---
+org.tizen.contacts org.tizen.cluster-home rwx--
+org.tizen.contacts org.tizen.easy-home -w---
+org.tizen.contacts mdm-server rwx--
+org.tizen.contacts nfc-share-service --x--
+org.tizen.contacts stest-service -w---
+org.tizen.contacts data-provider-master rw---
+org.tizen.contacts sdbd rwx--
+org.tizen.contacts data-provider-master::shortcut rw---
+org.tizen.contacts data-provider-master::shortcut.shortcut -w---
+org.tizen.contacts data-provider-master::shortcut.livebox -w---
+org.tizen.app-tray org.tizen.contacts rwx--
+org.tizen.setting org.tizen.contacts rwx--
+e17 org.tizen.contacts rw---
+system::use_internet org.tizen.contacts rw---
+isf org.tizen.contacts r-x--
+org.tizen.quickpanel org.tizen.contacts r-x--
+org.tizen.cluster-home org.tizen.contacts r-x--
+org.tizen.easy-home org.tizen.contacts r-x--
+org.tizen.gallery-service org.tizen.contacts rwx--
+ui-gadget::client org.tizen.contacts rwxa-
+org.tizen.facebook org.tizen.contacts rwx--
+org.tizen.lockscreen org.tizen.contacts rwx--
+org.tizen.dailybriefing-agent org.tizen.contacts --x--
+org.tizen.volume org.tizen.contacts --x--
+activesync-ui::eas-appsvc org.tizen.contacts rwx--
+nfc-share-service org.tizen.contacts r-x--
+stest-service org.tizen.contacts r-x--
+crash-viewer org.tizen.contacts --x--
+obexd org.tizen.contacts r-x--
+system::use_internet org.tizen.contact rw---
+org.tizen.data-provider-slave org.tizen.contacts r-x--
+org.tizen.data-provider-slave org.tizen.contacts-viewer r-x--
+org.tizen.data-provider-slave contacts-service rwx--
+org.tizen.data-provider-slave contacts-service::svc rw---
+org.tizen.data-provider-slave org.tizen.contacts r-x--
+org.tizen.data-provider-slave org.tizen.contacts-viewer r-x--
+org.tizen.data-provider-slave contacts-service rwx--
+org.tizen.data-provider-slave contacts-service::svc rw---
+aul::launch org.tizen.data-provider-slave r-x--
+aul::launch org.tizen.data-provider-slave r-x--
+org.tizen.contacts system::app_logging -w---
+org.tizen.contacts svi-data rwxat
+aul org.tizen.contacts rwx--
+context-service org.tizen.contacts r-x--
+org.tizen.contacts xorg::screencapture r----
+org.tizen.contacts device::app_logging -w---
+org.tizen.contacts org.tizen.smemo rwx--
+org.tizen.contacts org.tizen.gallery rwxa-
+org.tizen.contacts ims-service::db rw---
+org.tizen.contacts system::vconf_system rw---
+media-server org.tizen.contacts -w---
+org.tizen.contacts msg-service::read rw---
+org.tizen.contacts msg-service::write rw---
+org.tizen.contacts msg-service::wappush rw---
+org.tizen.contacts telephony_framework::api_manager r----
+org.tizen.contacts telephony_framework::api_modem -w---
+org.tizen.contacts system::home rwxat
+org.tizen.contacts org.tizen.gallery::web-media.db rwx--
+org.tizen.contacts org.tizen.gallery::gallery-media.db rwx--
+org.tizen.contacts org.tizen.contacts rwx--
+org.tizen.contacts download-provider rw---
+org.tizen.contacts drmfw rw---
+org.tizen.contacts cbhm rwx--
+org.tizen.contacts data-provider-master::utility rw---
+org.tizen.contacts data-provider-master::notification rw---
+org.tizen.contacts allshare::svc rwx--
+org.tizen.contacts system-server rwxa-
+org.tizen.contacts deviced rwxa-
+org.tizen.contacts org.tizen.myfile rw---
+org.tizen.contacts dali rwxat
+org.tizen.contacts crash-worker --x--
+org.tizen.contacts cloud-content-sync::db rw---
+org.tizen.contacts cloud-content-sync rwx--
+org.tizen.contacts device::video rw---
+org.tizen.contacts device::hwcodec rw---
+org.tizen.contacts org.tizen.gallery::face-svc.db rwx--
+org.tizen.contacts ug-email-viewer-efl rwx--
+org.tizen.contacts email-service rwx--
+org.tizen.contacts ug-email-docsearch-efl --x--
+org.tizen.contacts camera-external-engine rw---
+org.tizen.contacts system::vconf_inouse r----
+org.tizen.contacts system::vconf_privacy r----
+org.tizen.contacts system::vconf_multimedia rw---
+org.tizen.contacts system::vconf_network rw---
+org.tizen.contacts system::vconf_misc r----
+org.tizen.cluster-home ug-image-viewer-efl r-x--
+org.tizen.lockscreen ug-image-viewer-efl r-x--
+org.tizen.contacts smemo::db rw---
+org.tizen.contacts org.tizen.browser rw---
+org.tizen.contacts org.tizen.image-editor r----
+org.tizen.contacts org.tizen.calendar rwx--
+org.tizen.contacts calendar-service rwx--
+org.tizen.contacts device::sys_logging -w---
+org.tizen.contacts email-service::db rw---
+org.tizen.contacts webkit2-efl r-x--
+org.tizen.contacts data-provider-master::badge rw---
+org.tizen.contacts resman::db rw---
+org.tizen.contacts map-efl rwxat
+org.tizen.contacts ug-email-composer-efl rwxat
+org.tizen.contacts secure-storage::pkcs12 r----
+org.tizen.contacts email-service::write rw---
+org.tizen.contacts calendar-service::svc rw---
+org.tizen.contacts bt-service::admin -w---
+org.tizen.contacts bt-service::gap -w---
+org.tizen.contacts bt-service::manager -w---
+org.tizen.contacts org.tizen.volume rwx--
+org.tizen.contacts org.tizen.setting::default-resources r-x--
+org.tizen.contacts device::camera rw---
+org.tizen.contacts device::mdnie rw---
+org.tizen.contacts location_fw::client rwx--
+org.tizen.contacts pkgmer::db r----
+org.tizen.contacts power_manager rwx--
+org.tizen.contacts stt-server rwx--
+org.tizen.contacts tts-server rwx--
+org.tizen.contacts ug-camera-efl rwxat
+org.tizen.contacts vcs-server rwx--
+org.tizen.contacts image-filter-d::db rw---
+org.tizen.contacts location_fw::db rw---
+org.tizen.contacts org.tizen.svoice rwx--
+org.tizen.contacts oma-ds-agent rwx--
+oma-ds-agent org.tizen.contacts rwx--
+org.tizen.contacts oma-ds-agent::cfg rwxat
+org.tizen.setting oma-ds-agent::cfg rwx--
+system::use_internet oma-ds-agent rwx--
+oma-ds-agent system::use_internet rwx--
+org.tizen.contacts syslogd rwx--
+org.tizen.contacts e17 r----
+org.tizen.contacts dlogutil r-x--
+org.tizen.contacts telephony_framework r-x--
+org.tizen.contacts aul r-x--
+org.tizen.contacts ode r-x--
+org.tizen.contacts sensor-framework r-x--
+org.tizen.contacts secure-storage r-x--
+org.tizen.contacts starter r-x--
+org.tizen.contacts osp-app-service r-x--
+org.tizen.contacts osp-security-service r-x--
+org.tizen.contacts osp-channel-service r-x--
+org.tizen.contacts org.tizen.app-tray r-x--
+org.tizen.contacts org.tizen.quickpanel r-x--
+org.tizen.contacts connman rwx--
+org.tizen.contacts mobicore-daemon r-x--
+org.tizen.contacts alarm-server rwx--
+org.tizen.contacts brcm_daemon r-x--
+org.tizen.contacts resman r-x--
+org.tizen.contacts osp-connectivity-service rwx--
+org.tizen.contacts push-service rwx--
+org.tizen.contacts eas-engine rwx--
+org.tizen.contacts org.tizen.data-provider-slave rwx--
+org.tizen.contacts org.tizen.data-provider-slave rwx--
+org.tizen.contacts usb-server rwx--
+org.tizen.contacts mtp-responder rwx--
+ui-gadget::client oma-ds-agent::svc rw---
+org.tizen.contacts data-provider-master::notification.client -w---
+org.tizen.contacts samsung-account-front r-x--
+org.tizen.contacts worldclock::db rw---
+org.tizen.contacts org.tizen.smartsearch --x--
+org.tizen.contacts ug-map-efl rwxat
+org.tizen.contacts obexd r-x--
+org.tizen.contacts org.tizen.fileshare-service rwxat
+org.tizen.contacts wifi_direct_manager rw---
+org.tizen.fileshare-service org.tizen.contacts r-x--
+org.tizen.contacts nfc-manager rwx--
+org.tizen.contacts nfc-manager::p2p rwx--
+org.tizen.contacts nfc-manager::admin rwx--
+org.tizen.contacts ug-setting-gallery-efl rwxat
+org.tizen.contacts org.tizen.music-player --x--
+org.tizen.contacts msg-service::db rw---
+
diff --git a/org.tizen.dialer.manifest b/org.tizen.dialer.manifest
new file mode 100644
index 0000000..59b6f4f
--- /dev/null
+++ b/org.tizen.dialer.manifest
@@ -0,0 +1,12 @@
+<manifest>
+ <define>
+ <domain name = "org.tizen.dialer"/>
+ </define>
+ <assign>
+ <filesystem path="/usr/share/packages/dialer-efl.xml" label="_" />
+ <filesystem path="/usr/share/applications/dialer-efl.desktop" label="_" />
+ </assign>
+ <request>
+ <domain name = "org.tizen.dialer"/>
+ </request>
+</manifest>
diff --git a/org.tizen.phone.manifest b/org.tizen.phone.manifest
new file mode 100644
index 0000000..0e253c5
--- /dev/null
+++ b/org.tizen.phone.manifest
@@ -0,0 +1,13 @@
+<manifest>
+ <define>
+ <domain name="org.tizen.phone"/>
+ </define>
+ <assign>
+ <filesystem path="/usr/share/packages/org.tizen.phone.xml" label="_" />
+ <filesystem path="/usr/share/applications/org.tizen.phone.desktop" label="_" />
+ <filesystem path="/usr/share/icons/default/small/org.tizen.phone.png" label="_" />
+ </assign>
+ <request>
+ <domain name="org.tizen.phone"/>
+ </request>
+</manifest>
diff --git a/org.tizen.phone.rule b/org.tizen.phone.rule
new file mode 100644
index 0000000..d2d9928
--- /dev/null
+++ b/org.tizen.phone.rule
@@ -0,0 +1,222 @@
+org.tizen.phone ail::db rw---
+org.tizen.phone system::vconf rwxat
+org.tizen.phone system::homedir rwxat
+org.tizen.phone net-config r-x--
+org.tizen.phone xorg rwx--
+org.tizen.phone contacts-service rwx--
+org.tizen.phone isf rwx--
+org.tizen.phone pkgmgr r----
+org.tizen.phone efreet r-x--
+org.tizen.phone msg-service rwx--
+org.tizen.phone org.tizen.message rwx--
+org.tizen.phone notification::db rw---
+org.tizen.phone dbus rwxat
+org.tizen.phone app-svc::db rw---
+org.tizen.phone contacts-service::db rwx--
+org.tizen.phone contacts-service::svc rwx--
+org.tizen.phone contacts-service::phonelog rw---
+org.tizen.phone libug-phone::data rwx--
+org.tizen.phone sound_server rwx--
+org.tizen.phone syspopup::db rwx--
+org.tizen.phone system::use_internet rwxat
+org.tizen.phone immvibed rwx--
+org.tizen.phone org.tizen.indicator rwx--
+org.tizen.phone pulseaudio rwxat
+org.tizen.phone phone-misc::db rw---
+org.tizen.phone org.tizen.call r-x--
+org.tizen.phone system-server rwxa-
+org.tizen.phone cbhm rwx--
+org.tizen.phone mdm-server rwx--
+org.tizen.phone org.tizen.contacts rwx--
+org.tizen.phone libaccounts-svc::db rw---
+org.tizen.phone org.tizen.contacts-viewer r-x--
+org.tizen.phone org.tizen.contacts-group-viewer --x--
+org.tizen.phone csc-manager rwx--
+org.tizen.phone svi-data rwxat
+org.tizen.phone ui-gadget::client rwx--
+org.tizen.phone badge::db rw---
+org.tizen.phone system::media rwxat
+org.tizen.phone ug-launcher r-x--
+org.tizen.phone org.tizen.phone rwxat
+org.tizen.phone system::share rwxat
+org.tizen.phone sys-assert::core rwxat
+org.tizen.phone stest-service -w---
+org.tizen.phone testmode r-x--
+org.tizen.phone intl-dial::db rw---
+org.tizen.phone sdbd rwx--
+stest-service org.tizen.phone r-x--
+e17 org.tizen.phone rwx--
+org.tizen.data-provider-slave org.tizen.phone rwx--
+org.tizen.data-provider-slave contacts-service rwx--
+org.tizen.data-provider-slave contacts-service::svc rw---
+org.tizen.data-provider-slave contacts-service::db rw---
+org.tizen.data-provider-slave contacts-service::phonelog rwx--
+org.tizen.data-provider-slave org.tizen.phone rwx--
+org.tizen.data-provider-slave contacts-service rwx--
+org.tizen.data-provider-slave contacts-service::svc rw---
+org.tizen.data-provider-slave contacts-service::db rw---
+org.tizen.data-provider-slave contacts-service::phonelog rwx--
+org.tizen.app-tray org.tizen.phone r-x--
+org.tizen.quickpanel org.tizen.phone r-x--
+org.tizen.indicator org.tizen.phone rwx--
+org.tizen.lockscreen org.tizen.phone r-x--
+org.tizen.setting org.tizen.phone r-x--
+org.tizen.phone system::app_logging -w---
+aul org.tizen.phone rwx--
+org.tizen.gallery org.tizen.phone r-x--
+org.tizen.phone ug-setting-call-efl rwxat
+org.tizen.phone system::camera rw-at
+org.tizen.phone org.tizen.add-viewer r-x--
+org.tizen.phone org.tizen.call-eq-analyzer rwx--
+org.tizen.phone intl-dial --x--
+org.tizen.phone org.tizen.vtmain --x--
+org.tizen.phone telephony_framework::api_manager r----
+org.tizen.phone telephony_framework::api_sim r-x--
+org.tizen.phone telephony_framework::api_phonebook rwx--
+org.tizen.phone telephony_framework::api_ss rwx--
+org.tizen.phone telephony_framework::vconf rwx--
+org.tizen.phone xorg::screencapture r----
+org.tizen.phone device::app_logging -w---
+org.tizen.phone media-data::db rw---
+org.tizen.phone org.tizen.smemo rwx--
+org.tizen.phone org.tizen.gallery rwxa-
+org.tizen.phone media-server rwx--
+org.tizen.phone ims-service::db rw---
+org.tizen.phone system::vconf_inhouse rwxat
+org.tizen.phone system::vconf_setting rwxat
+org.tizen.phone system::vconf_system rw---
+media-server org.tizen.phone -w---
+org.tizen.phone msg-service::read rw---
+org.tizen.phone msg-service::write rw---
+org.tizen.phone msg-service::wappush rw---
+org.tizen.phone telephony_framework::api_modem -w---
+org.tizen.phone system::home rwxat
+org.tizen.phone org.tizen.gallery::web-media.db rwx--
+org.tizen.phone org.tizen.gallery::gallery-media.db rwx--
+org.tizen.phone org.tizen.gallery-service rwx--
+org.tizen.phone org.tizen.cluster-home rwx--
+org.tizen.phone ug-image-viewer-efl rwxat
+org.tizen.phone download-provider rw---
+org.tizen.phone drmfw rw---
+org.tizen.phone data-provider-master rw---
+org.tizen.phone data-provider-master::shortcut rw---
+org.tizen.phone data-provider-master::utility rw---
+org.tizen.phone data-provider-master::notification rw---
+org.tizen.phone allshare::svc rwx--
+org.tizen.phone deviced rwxa-
+org.tizen.phone org.tizen.setting rwx--
+org.tizen.phone org.tizen.myfile rw---
+org.tizen.phone dali rwxat
+org.tizen.phone crash-worker --x--
+org.tizen.phone cloud-content-sync::db rw---
+org.tizen.phone cloud-content-sync rwx--
+org.tizen.phone device::video rw---
+org.tizen.phone device::hwcodec rw---
+org.tizen.phone org.tizen.gallery::face-svc.db rwx--
+org.tizen.phone ug-email-viewer-efl rwx--
+org.tizen.phone email-service rwx--
+org.tizen.phone ug-email-docsearch-efl --x--
+org.tizen.phone camera-external-engine rw---
+org.tizen.phone system::vconf_inouse r----
+org.tizen.phone system::vconf_privacy r----
+org.tizen.phone system::vconf_multimedia rw---
+org.tizen.phone system::vconf_network rw---
+org.tizen.phone system::vconf_misc r----
+isf org.tizen.phone r----
+org.tizen.gallery-service org.tizen.phone rwx--
+org.tizen.cluster-home ug-image-viewer-efl r-x--
+org.tizen.lockscreen ug-image-viewer-efl r-x--
+org.tizen.phone smemo::db rw---
+org.tizen.phone org.tizen.browser rw---
+org.tizen.phone org.tizen.image-editor r----
+org.tizen.phone org.tizen.email rwx--
+org.tizen.phone org.tizen.calendar rwx--
+org.tizen.phone calendar-service rwx--
+org.tizen.phone device::sys_logging -w---
+org.tizen.phone email-service::db rw---
+org.tizen.phone webkit2-efl r-x--
+org.tizen.phone data-provider-master::badge rw---
+org.tizen.phone resman::db rw---
+org.tizen.phone map-efl rwxat
+org.tizen.phone ug-email-composer-efl rwxat
+org.tizen.phone secure-storage::pkcs12 r----
+org.tizen.phone email-service::write rw---
+org.tizen.phone calendar-service::svc rw---
+org.tizen.phone ug_bluetooth r-x--
+org.tizen.phone bt-service::admin -w---
+org.tizen.phone bt-service::gap -w---
+org.tizen.phone bt-service::manager -w---
+org.tizen.phone device::camera rw---
+org.tizen.phone device::mdnie rw---
+org.tizen.phone location_fw::client rwx--
+org.tizen.phone pkgmer::db r----
+org.tizen.phone power_manager rwx--
+org.tizen.phone stt-server rwx--
+org.tizen.phone tts-server rwx--
+org.tizen.phone ug-camera-efl rwxat
+org.tizen.phone vcs-server rwx--
+org.tizen.phone image-filter-d::db rw---
+org.tizen.phone location_fw::db rw---
+org.tizen.phone pkgmgr::db rw---
+org.tizen.phone org.tizen.svoice rwx--
+org.tizen.phone org.tizen.dropbox r-x--
+org.tizen.phone org.tizen.facebook r-x--
+org.tizen.phone oma-ds-agent rwx--
+oma-ds-agent org.tizen.phone rwx--
+org.tizen.phone oma-ds-agent::cfg rwxat
+org.tizen.setting oma-ds-agent::cfg rwx--
+system::use_internet oma-ds-agent rwx--
+oma-ds-agent system::use_internet rwx--
+org.tizen.phone syslogd rwx--
+org.tizen.phone e17 r----
+org.tizen.phone dlogutil r-x--
+org.tizen.phone telephony_framework r-x--
+org.tizen.phone aul r-x--
+org.tizen.phone ode r-x--
+org.tizen.phone sensor-framework r-x--
+org.tizen.phone secure-storage r-x--
+org.tizen.phone starter r-x--
+org.tizen.phone osp-app-service r-x--
+org.tizen.phone osp-security-service r-x--
+org.tizen.phone osp-channel-service r-x--
+org.tizen.phone org.tizen.app-tray r-x--
+org.tizen.phone org.tizen.quickpanel r-x--
+org.tizen.phone connman rwx--
+org.tizen.phone mobicore-daemon r-x--
+org.tizen.phone alarm-server rwx--
+org.tizen.phone brcm_daemon r-x--
+org.tizen.phone resman r-x--
+org.tizen.phone osp-connectivity-service rwx--
+org.tizen.phone push-service rwx--
+org.tizen.phone eas-engine rwx--
+org.tizen.phone org.tizen.data-provider-slave rwx--
+org.tizen.phone org.tizen.data-provider-slave rwx--
+org.tizen.phone usb-server rwx--
+org.tizen.phone mtp-responder rwx--
+org.tizen.phone org.tizen.volume rwx--
+ui-gadget::client oma-ds-agent::svc rw---
+org.tizen.phone data-provider-master::notification.client -w---
+org.tizen.phone samsung-account-front r-x--
+org.tizen.phone worldclock::db rw---
+org.tizen.phone thumb-server r----
+org.tizen.phone data-provider-master::shortcut.shortcut -w---
+context-service org.tizen.phone r-x--
+org.tizen.phone org.tizen.smartsearch --x--
+org.tizen.phone ug-map-efl rwxat
+system::use_internet org.tizen.phone -w---
+org.tizen.phone org.tizen.setting::default-resources r-x--
+org.tizen.phone obexd r-x--
+org.tizen.phone org.tizen.fileshare-service rwxat
+org.tizen.phone wifi_direct_manager rw---
+org.tizen.fileshare-service org.tizen.phone r-x--
+org.tizen.phone nfc-manager rwx--
+org.tizen.phone nfc-manager::p2p rwx--
+org.tizen.phone nfc-manager::admin rwx--
+org.tizen.phone ug-setting-gallery-efl rwxat
+org.tizen.phone org.tizen.music-player --x--
+org.tizen.cluster-home org.tizen.phone r-x--
+org.tizen.phone msg-service::db rw---
+org.tizen.phone ug-setting-call-efl::vconf rw---
+org.tizen.phone org.tizen.emergency-message r-x--
+ui-gadget::client org.tizen.phone r-x--
+
diff --git a/packaging/phone.changes b/packaging/phone.changes
new file mode 100644
index 0000000..1021fa3
--- /dev/null
+++ b/packaging/phone.changes
@@ -0,0 +1,3 @@
+* Tue Apr 23 2013 Ilkka Aulomaa <ilkkax.aulomaa@intel.com> submit/tizen_2.1/20130423.053952@ccb290b
+- Fix for TDIS-5481. This fixes bug that grouped log items are attempted to be deleted two times, which causes failure of the delete procedure.
+
diff --git a/packaging/phone.spec b/packaging/phone.spec
new file mode 100755
index 0000000..56bcdc3
--- /dev/null
+++ b/packaging/phone.spec
@@ -0,0 +1,212 @@
+Name: phone
+Summary: Phone Application and gadgets
+Version: 0.6.63.29
+Release: 1
+Group: devel
+License: Flora Software License
+URL: N/A
+Source0: %{name}-%{version}.tar.gz
+BuildRequires: pkgconfig(appcore-efl)
+BuildRequires: pkgconfig(contacts-service2)
+BuildRequires: pkgconfig(dlog)
+BuildRequires: pkgconfig(badge)
+BuildRequires: pkgconfig(heynoti)
+BuildRequires: pkgconfig(ui-gadget-1)
+BuildRequires: pkgconfig(tapi)
+BuildRequires: pkgconfig(icu-i18n)
+BuildRequires: pkgconfig(notification)
+BuildRequires: pkgconfig(ecore-x)
+BuildRequires: pkgconfig(ecore-input)
+BuildRequires: pkgconfig(ecore)
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(eina)
+BuildRequires: pkgconfig(libprivilege-control)
+BuildRequires: pkgconfig(accounts-svc)
+BuildRequires: pkgconfig(msg-service)
+BuildRequires: pkgconfig(syspopup-caller)
+BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(capi-system-runtime-info)
+#BuildRequires: pkgconfig(capi-uix-feedback)
+BuildRequires: pkgconfig(feedback)
+BuildRequires: pkgconfig(cert-svc)
+BuildRequires: pkgconfig(cert-svc-vcore)
+BuildRequires: pkgconfig(capi-appfw-app-manager)
+BuildRequires: pkgconfig(capi-system-info)
+BuildRequires: pkgconfig(capi-content-media-content)
+BuildRequires: pkgconfig(utilX)
+BuildRequires: pkgconfig(efl-assist)
+#BuildRequires: gtest-devel
+BuildRequires: cmake
+BuildRequires: edje-bin
+BuildRequires: embryo-bin
+BuildRequires: gettext-devel
+
+%description
+Phone application.
+
+%package -n org.tizen.phone
+Summary: Phone application
+Group: Development/Libraries
+
+%description -n org.tizen.phone
+Phone application.
+
+%package -n org.tizen.contacts
+Summary: Contacts launcher
+Group: Development/Libraries
+Requires: libmm-sound
+Requires: ug-bluetooth-efl
+
+%description -n org.tizen.contacts
+Contacts launcher
+
+%package -n org.tizen.contacts-appservice
+Summary: Contacts appservice
+Group: Development/Libraries
+
+%description -n org.tizen.contacts-appservice
+Contacts appservice
+
+%package -n org.tizen.contacts-viewer
+Summary: Contacts viewer application
+Group: Development/Libraries
+
+%description -n org.tizen.contacts-viewer
+Contacts viewer application
+
+%package -n libug-phone-efl
+Summary: Phone UI gadget library
+Group: devel
+
+%description -n libug-phone-efl
+Phone UI gadget library.
+
+%package -n libug-contacts-devel
+Summary: Phone UI gadget Header
+Group: devel
+Requires: libug-phone-efl = %{version}-%{release}
+
+%description -n libug-contacts-devel
+Phone UI gadget Header.
+
+%package -n libug-phone-devel
+Summary: Phone UI gadget Header
+Group: devel
+Requires: libug-phone-efl = %{version}-%{release}
+
+%description -n libug-phone-devel
+Phone UI gadget Header.
+
+
+%prep
+%setup -q
+
+%build
+%define PREFIX "/usr/apps/org.tizen.phone"
+cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX} %{?TEST: -DTEST=ON }
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+%make_install
+mkdir -p %{buildroot}/usr/share/license
+cp LICENSE.flora %{buildroot}/usr/share/license/%{name}
+
+%files
+/usr/share/license/%{name}
+
+
+%post -n libug-phone-efl
+mkdir -p /opt/usr/ug/data
+mkdir -p /opt/usr/ug/data/ug-phone
+chgrp 6005 -R /opt/usr/ug/data/ug-phone
+chmod 770 -R /opt/usr/ug/data/ug-phone
+mkdir -p /usr/ug/bin/
+ln -sf /usr/bin/ug-client /usr/ug/bin/contacts-details-efl
+ln -sf /usr/bin/ug-client /usr/ug/bin/contacts-list-efl
+ln -sf /usr/bin/ug-client /usr/ug/bin/contacts-settings-efl
+ln -sf /usr/bin/ug-client /usr/ug/bin/contacts-tabui-efl
+ln -sf /usr/bin/ug-client /usr/ug/bin/dialer-efl
+ln -sf /usr/bin/ug-client /usr/ug/bin/phone-tabui-efl
+ln -sf /usr/bin/ug-client /usr/ug/bin/speeddial-efl
+
+%post -n org.tizen.phone
+mkdir /opt/usr/apps/org.tizen.phone
+cp -fr /usr/apps/org.tizen.phone/data /opt/usr/apps/org.tizen.phone
+chown -R 5000:5000 /opt/usr/apps/org.tizen.phone/data
+
+%post -n org.tizen.contacts
+mkdir -p /opt/usr/apps/org.tizen.contacts
+cp -fr /usr/apps/org.tizen.contacts/data /opt/usr/apps/org.tizen.contacts
+chown -R 5000:5000 /opt/usr/apps/org.tizen.contacts/data
+
+%post -n org.tizen.contacts-viewer
+mkdir -p /opt/usr/apps/org.tizen.contacts-viewer
+cp -fr /usr/apps/org.tizen.contacts-viewer/data /opt/usr/apps/org.tizen.contacts-viewer
+chown -R 5000:5000 /opt/usr/apps/org.tizen.contacts-viewer/data
+
+
+
+%postun
+
+%files -n org.tizen.phone
+%manifest org.tizen.phone.manifest
+%defattr(-,root,root,-)
+/usr/apps/org.tizen.phone/*
+#/usr/share/packages/org.tizen.phone.xml
+/usr/share/icons/default/small/org.tizen.phone.png
+/usr/ug/lib/libug-speeddial-efl.*
+/usr/ug/lib/libug-dialer-efl.*
+/usr/ug/lib/libug-phone-tabui-efl.*
+#/opt/share/applications/*.desktop
+/usr/share/packages/*.xml
+/opt/etc/smack/accesses.d/org.tizen.phone.rule
+
+
+%files -n org.tizen.contacts
+%manifest org.tizen.contacts.manifest
+%defattr(-,root,root,-)
+/usr/apps/org.tizen.contacts/*
+#/usr/share/packages/org.tizen.contacts.xml
+/usr/share/icons/default/small/org.tizen.contacts.png
+/usr/ug/lib/libug-contacts-tabui-efl.*
+/usr/ug/lib/libug-contacts-settings-efl.*
+#/opt/share/applications/*.desktop
+/usr/share/packages/*.xml
+#/usr/share/locale/*
+/opt/etc/smack/accesses.d/org.tizen.contacts.rule
+
+%files -n org.tizen.contacts-appservice
+%manifest org.tizen.contacts-appservice.manifest
+%defattr(-,root,root,-)
+/usr/apps/org.tizen.contacts-appservice/*
+/usr/share/packages/org.tizen.contacts-appservice.xml
+/usr/share/icons/default/small/org.tizen.contacts-appservice.png
+/opt/etc/smack/accesses.d/org.tizen.contacts-appservice.rule
+
+%files -n org.tizen.contacts-viewer
+%manifest org.tizen.contacts-viewer.manifest
+%defattr(-,root,root,-)
+/usr/apps/org.tizen.contacts-viewer/*
+/usr/share/packages/org.tizen.contacts-viewer.xml
+/usr/share/icons/default/small/org.tizen.contacts-viewer.png
+#/usr/share/locale/*
+/opt/etc/smack/accesses.d/org.tizen.contacts-viewer.rule
+
+%files -n libug-phone-efl
+%manifest libug-phone-efl.manifest
+%defattr(-,root,root,-)
+/usr/ug/res/images/*
+/usr/ug/res/edje/*
+/usr/ug/res/locale/*
+/usr/ug/lib/libug-contacts-list-efl.*
+/usr/ug/lib/libug-contacts-details-efl.*
+/usr/ug/lib/libug-phonelog-efl.*
+
+%files -n libug-contacts-devel
+%defattr(-,root,root,-)
+/usr/include/contacts-ug.h
+
+%files -n libug-phone-devel
+%defattr(-,root,root,-)
+/usr/include/phone-ug.h
diff --git a/phone/CMakeLists.txt b/phone/CMakeLists.txt
new file mode 100644
index 0000000..a6657ad
--- /dev/null
+++ b/phone/CMakeLists.txt
@@ -0,0 +1,13 @@
+SET(SRCS phone.cpp)
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS} -fpie")
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/ph-front/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/common/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/common/Utils/include)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} common ug-phone-tabui-efl "-pie")
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/phone/org.tizen.phone.xml DESTINATION "/usr/share/packages")
+INSTALL(FILES icon_${PROJECT_NAME}.png DESTINATION "/usr/share/icons/default/small" RENAME "${PKGNAME}.png")
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
+
diff --git a/phone/icon_phone.png b/phone/icon_phone.png
new file mode 100644
index 0000000..6370d07
--- /dev/null
+++ b/phone/icon_phone.png
Binary files differ
diff --git a/phone/org.tizen.phone.xml b/phone/org.tizen.phone.xml
new file mode 100755
index 0000000..dfd9ed8
--- /dev/null
+++ b/phone/org.tizen.phone.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.phone" version="0.1.1" install-location="internal-only">
+ <label>Phone</label>
+ <author email="ps.jeong@samsung.com" href="www.samsung.com">bongsu Jeong</author>
+ <description>Phone Application</description>
+ <ui-application appid="org.tizen.phone" exec="/usr/apps/org.tizen.phone/bin/phone tab dialer" nodisplay="false" multiple="false" type="capp" taskmanage="true">
+ <icon>org.tizen.phone.png</icon>
+ <label>Phone</label>
+ <label xml:lang="ko-kr">전화</label>
+ <label xml:lang="de-de">Telefon</label>
+ <label xml:lang="en-gb">Phone</label>
+ <label xml:lang="en-us">Phone</label>
+ <label xml:lang="es-es">Phone</label>
+ <label xml:lang="fr-fr">Phone</label>
+ <label xml:lang="it-it">Telef.</label>
+ <label xml:lang="ja-jp">電話</label>
+ <label xml:lang="nl-nl">Telefoon</label>
+ <label xml:lang="pt-pt">Telef.</label>
+ <label xml:lang="ru-ru">Телефон</label>
+ <label xml:lang="tr-tr">Telefon</label>
+ <label xml:lang="zh-cn">手机</label>
+ <label xml:lang="zh-hk">電話</label>
+ <label xml:lang="zh-tw">電話</label>
+ <label xml:lang="ar-ae">الهاتف</label>
+ <label xml:lang="hy-am">Հեռախոս</label>
+ <label xml:lang="az-az">Telefon</label>
+ <label xml:lang="eu-es">Telefonoa</label>
+ <label xml:lang="bg-bg">Телефон</label>
+ <label xml:lang="ca-es">Telèfon</label>
+ <label xml:lang="hr-hr">Telefon</label>
+ <label xml:lang="cs-cz">Telefon</label>
+ <label xml:lang="da-dk">Telefon</label>
+ <label xml:lang="nl-nl">Telefoon</label>
+ <label xml:lang="et-ee">Telefon</label>
+ <label xml:lang="fi-fi">Puhelin</label>
+ <label xml:lang="gl-es">Teléfono</label>
+ <label xml:lang="ka-ge">ტელეფონი</label>
+ <label xml:lang="el-gr">Τηλέφωνο</label>
+ <label xml:lang="hu-hu">Telefon</label>
+ <label xml:lang="is-is">Sími</label>
+ <label xml:lang="ga-ie">Teileafón</label>
+ <label xml:lang="it-it">Telefono</label>
+ <label xml:lang="kk-kz">Телефон</label>
+ <label xml:lang="lv-lv">Tālrunis</label>
+ <label xml:lang="lt-lt">Telefonas</label>
+ <label xml:lang="mk-mk">Телефон</label>
+ <label xml:lang="nb-no">Telefon</label>
+ <label xml:lang="pl-pl">Telefon</label>
+ <label xml:lang="pt-br">Telefone</label>
+ <label xml:lang="ro-ro">Telefon</label>
+ <label xml:lang="sr-rs">Telefon</label>
+ <label xml:lang="sk-sk">Telefón</label>
+ <label xml:lang="sl-si">Telefon</label>
+ <label xml:lang="es-us">Teléfono</label>
+ <label xml:lang="sv-se">Telefon</label>
+ <label xml:lang="uk-ua">Телефон</label>
+ <label xml:lang="uz-uz">Telefon</label>
+ <label xml:lang="zh-sg">电话</label>
+ <label xml:lang="hi-in">टेलीफोन</label>
+ <label xml:lang="en-ph">Telephone</label>
+ <label xml:lang="fr-ca">Téléphone</label>
+
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/dial" />
+ <uri name="tel" />
+ </application-service>
+
+ </ui-application>
+</manifest>
diff --git a/phone/phone.cpp b/phone/phone.cpp
new file mode 100755
index 0000000..7c9c54f
--- /dev/null
+++ b/phone/phone.cpp
@@ -0,0 +1,354 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <Ecore_X.h>
+#include "phone.h"
+#include "phone-common.h"
+#include "ph-front.h"
+
+#include <system_info.h>
+
+struct phone_data
+{
+ Evas_Object *win;
+ ph_phoneui_data *phoneui_d;
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+ Evas_Object *prev_btn;
+#endif
+ /* add more variables here */
+};
+
+static void phapp_win_del(void *data, Evas_Object *obj, void *event)
+{
+ PH_TRACE;
+ elm_exit();
+}
+
+static Evas_Object* phapp_create_win(const char *name)
+{
+ PH_TRACE;
+ Evas_Object *eo;
+ int w, h;
+
+ eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+ if (eo)
+ {
+ elm_win_title_set(eo, name);
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+#else
+ elm_win_borderless_set(eo, EINA_TRUE);
+#endif
+ evas_object_smart_callback_add(eo, "delete,request", phapp_win_del,
+ NULL);
+ ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+ evas_object_resize(eo, w, h);
+ elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
+ }
+ elm_win_conformant_set(eo, EINA_TRUE);
+ return eo;
+}
+
+static void phapp_region_changed(void *data)
+{
+ PH_TRACE;
+ ph_phoneui_data *phoneui_d = (ph_phoneui_data *) data;
+ phone_front_view_region_changed(phoneui_d);
+ ug_send_event (UG_EVENT_REGION_CHANGE);
+ return;
+}
+
+static void phapp_language_changed(void *data)
+{
+ PH_TRACE;
+ struct phone_data *ad = (phone_data *) data;
+ ph_phoneui_data *phoneui_d = ad->phoneui_d;
+ phone_front_view_language_changed(phoneui_d);
+ ug_send_event (UG_EVENT_LANG_CHANGE);
+}
+
+static int phapp_open(void *data)
+{
+ PH_TRACE;
+ struct phone_data *ad = (phone_data *) data;
+ ph_phoneui_data *phoneui_d = ad->phoneui_d;
+ bool shouldRemoveBadge(hasBadge());
+
+ if (shouldRemoveBadge && (PH_VIEW_LOG != phoneui_d->select_tab)) // no need to return on log-tab if we are already on it
+ {
+ phone_front_view_reset(phoneui_d, PH_VIEW_LOG, PH_FRONT_LOG_MISSED, NULL);
+ }
+
+ if (TRUE == phone_front_view_show_call_app(phoneui_d))
+ return -1;
+ return 0;
+}
+
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+static Evas_Object* _set_win_icon(struct phone_data *ad)
+{
+ PH_TRACE;
+ Evas_Object *image = evas_object_image_add(evas_object_evas_get(ad->win));
+ evas_object_image_file_set(image, "/usr/share/icons/default/small/org.tizen.phone.png", NULL);
+ elm_win_icon_object_set(ad->win, image);
+
+ return image;
+}
+
+static void __win_profile_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ PH_TRACE;
+ struct phone_data *ad = (phone_data *) data;
+ p_retm_if(NULL == ad || NULL == ad->phoneui_d, "data is null");
+
+ const char *profile = elm_config_profile_get();
+
+ if(!strcmp(profile, "desktop"))
+ {
+ Elm_Object_Item *navi_item = elm_naviframe_bottom_item_get(ad->phoneui_d->navi);
+ ad->prev_btn = elm_object_item_part_content_unset(navi_item, "prev_btn");
+ ad->phoneui_d->is_desktop_mode = true;
+ elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE);
+ if(!ad->phoneui_d->icon)
+ ad->phoneui_d->icon = _set_win_icon(ad);
+ }
+ else
+ {
+ Elm_Object_Item *selected_it = elm_toolbar_selected_item_get(ad->phoneui_d->tabbar);
+ ad->phoneui_d->is_desktop_mode = false;
+
+ if (selected_it != ad->phoneui_d->item[PH_VIEW_DIALER])
+ {
+ Elm_Object_Item *navi_item = elm_naviframe_bottom_item_get(ad->phoneui_d->navi);
+ if (ad->prev_btn)
+ {
+ elm_object_item_part_content_set(navi_item, "prev_btn", ad->prev_btn);
+ ad->prev_btn = NULL;
+ }
+ }
+
+ elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW);
+ }
+}
+#endif
+
+static bool phapp_create(void *data)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ Evas_Object *win;
+ struct phone_data *ad = (phone_data *) data;
+
+ /* create window */
+ win = phapp_create_win(PACKAGE);
+ p_retvm_if(NULL == win, -1, "phapp_create_win() Failed");
+ ad->win = win;
+
+ elm_win_wm_rotation_available_rotations_set(ad->win, NULL, 0);
+ elm_win_wm_rotation_preferred_rotation_set(ad->win, 0);
+
+ evas_object_show(win);
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+ evas_object_smart_callback_add(ad->win, "profile,changed", __win_profile_changed_cb, ad);
+#endif
+ bindtextdomain(PACKAGE, LOCALEDIR);
+
+ err = contacts_connect2();
+ if (CONTACTS_ERROR_NONE != err)
+ {
+ Evas_Object *popup;
+ ERR("contacts_connect2() Failed(%d)", err);
+ popup = elm_popup_add(win);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(popup);
+ elm_object_text_set(popup, T_(PH_GET_TEXT_BASIC, PHTEXT_INITIALIZING));
+ elm_popup_timeout_set(popup, 1.5);
+ evas_object_smart_callback_add(popup, "timeout", phapp_win_del, NULL);
+ return true;
+ }
+ if(!has_emergency_contacts())
+ {
+ create_emergency_contacts_group();
+ }
+ UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE);
+ ad->phoneui_d = phone_front_view_create(ad->win);
+
+ appcore_set_open_cb(phapp_open, data);
+
+ return true;
+}
+
+void phapp_terminate(void *data)
+{
+ PH_TRACE;
+ int err = CONTACTS_ERROR_NONE;
+ struct phone_data *ad = (phone_data *) data;
+
+ //ug_destroy_all();
+ if (NULL != ad->win)
+ evas_object_del(ad->win);
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_disconnect2() Failed(%d)",
+ err);
+ return;
+}
+
+static void phapp_pause(void *data)
+{
+ PH_TRACE;
+ struct phone_data *ad = (phone_data *) data;
+ phone_front_view_pause(ad->phoneui_d);
+ ug_pause();
+ return;
+}
+
+static void phapp_resume(void *data)
+{
+ PH_TRACE;
+ // update missed log info
+ struct phone_data *ad = (phone_data *) data;
+ phone_front_view_resume(ad->phoneui_d);
+ ug_resume();
+}
+
+static void phapp_service(service_h service, void *data)
+{
+ PH_TRACE;
+ struct phone_data *ad = (phone_data *) data;
+ ph_phoneui_data *phoneui_d;
+ char* val = NULL;
+ int ret;
+
+ p_retm_if(NULL == ad || NULL == ad->phoneui_d, "data is null");
+ phoneui_d = ad->phoneui_d;
+
+ ret = service_get_operation(service, &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_get_operation is failed(%d)",
+ ret);
+
+ if (val)
+ {
+ PH_DBG("operation : %s", val);
+ if (0 == strcmp(val, SERVICE_OPERATION_DIAL))
+ {
+ free(val);
+ val = NULL;
+ ret = service_get_uri(service, &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret,
+ "service_get_uri is failed(%d)", ret);
+ if (val && 0 == strncmp(val, "tel:", 4))
+ {
+ phone_front_view_reset(phoneui_d, PH_VIEW_DIALER,
+ PH_FRONT_DIALER_WITH_NUM, service);
+ free(val);
+ }
+ return;
+ }
+ else
+ {
+ free(val);
+ val = NULL;
+ }
+ }
+ else
+ {
+ PH_DBG("no operation.");
+ }
+
+ ret = service_get_extra_data(service, "MMICHECK_SEND", &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_get_extra_data is failed(%d)", ret);
+ if (val && 0 == strcmp(val, "1"))
+ {
+ PH_DBG("MMICHECK_SEND detected");
+ phone_front_view_reset(phoneui_d, PH_VIEW_DIALER,
+ PH_FRONT_DIALER_WITH_SEND_KEY, NULL);
+ free(val);
+ return;
+ }
+
+ // missed_call : show log main view, from idle_lock, quickpanel
+ if (hasBadge())
+ {
+ phone_front_view_reset(phoneui_d, PH_VIEW_LOG, PH_FRONT_LOG_MISSED, NULL);
+ removeBadge();
+ free(val);
+ return;
+ }
+
+ ret = service_get_extra_data(service, "launch_type", &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_get_extra_data is failed(%d)",
+ ret);
+ PH_DBG("launch_type : %s", SAFE_STR(val));
+ if (val && *val)
+ {
+ if (0 == strcmp(val, "log"))
+ phone_front_view_reset(phoneui_d, PH_VIEW_LOG, -1, NULL);
+ else if (0 == strcmp(val, "favorite"))
+ phone_front_view_reset(phoneui_d, PH_VIEW_FAVORITE, -1, NULL);
+ else if (0 == strcmp(val, "dialer"))
+ {
+ if (phone_front_view_show_call_app(phoneui_d))
+ {
+ if (phoneui_d->select_tab < PH_VIEW_DIALER)
+ elm_exit();
+ }
+ else
+ phone_front_view_reset(phoneui_d, PH_VIEW_DIALER, -1, NULL);
+ }
+ else
+ phone_front_view_reset(phoneui_d, PH_VIEW_DIALER, -1, NULL);
+ free(val);
+ return;
+ }
+
+ ret = service_get_extra_data(service, "tab", &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_get_extra_data is failed(%d)",
+ ret);
+ PH_DBG("tab : %s", SAFE_STR(val));
+ if (val && *val)
+ {
+ if (!strcmp(val, "dialer"))
+ {
+ phone_front_view_reset(phoneui_d, PH_VIEW_DIALER, -1, NULL);
+ free(val);
+ return;
+ }
+ }
+
+ elm_win_lower(phoneui_d->win);
+ return;
+}
+
+API int main(int argc, char *argv[])
+{
+ PH_TRACE;
+ struct phone_data ad = { 0 };
+ app_event_callback_s event_callback = { 0, };
+
+ event_callback.create = phapp_create;
+ event_callback.terminate = phapp_terminate;
+ event_callback.pause = phapp_pause;
+ event_callback.resume = phapp_resume;
+ event_callback.service = phapp_service;
+ event_callback.low_memory = NULL;
+ event_callback.low_battery = NULL;
+ event_callback.region_format_changed = phapp_region_changed;
+ event_callback.language_changed = phapp_language_changed;
+ event_callback.device_orientation = NULL;
+
+ return app_efl_main(&argc, &argv, &event_callback, &ad);
+}
+
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
new file mode 100755
index 0000000..db67854
--- /dev/null
+++ b/po/CMakeLists.txt
@@ -0,0 +1,23 @@
+# for i18n
+
+SET(POFILES ar.po az.po bg.po ca.po cs.po da.po de_DE.po el_GR.po en.po en_PH.po en_US.po es_ES.po es_US.po et.po eu.po fi.po fr_CA.po fr_FR.po ga.po gl.po hi.po hr.po hu.po hy.po is.po it_IT.po ja_JP.po ka.po kk.po ko_KR.po lt.po lv.po mk.po nb.po nl_NL.po pl.po pt_BR.po pt_PT.po ro.po ru_RU.po sk.po sl.po sr.po sv.po tr_TR.po uk.po uz.po zh_CN.po zh_HK.po zh_SG.po zh_TW.po)
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+ SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+ MESSAGE("PO: ${pofile}")
+ GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+ GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+ SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${moFile}
+ COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+ DEPENDS ${absPofile}
+ )
+ INSTALL(FILES ${moFile}
+ DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+ SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100755
index 0000000..c6dd628
--- /dev/null
+++ b/po/POTFILES.in
@@ -0,0 +1,2 @@
+# List of source files containing translatable strings.
+lib/common/ph-text.cpp
diff --git a/po/ar.po b/po/ar.po
new file mode 100644
index 0000000..85b497c
--- /dev/null
+++ b/po/ar.po
@@ -0,0 +1,1769 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "لوحة المفاتيح"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "المفضلة"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "الاتصال السريع"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "البريد الصوتي"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "السجلات"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "لا يوجد اتصال سريع. هل تريد تخصيص واحد؟"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "فشل الطلب"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "نجح الطلب"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "مكالمة طوارئ"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "لا يوجد سجلات"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "لا توجد مفضلة"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "تم مسح الرسالة"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "تم تجاوز الحد الأقصى لطول رقم الهاتف"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "جار حذف السجلات..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "جار حذف المفضلة..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "جار التهيئة. حاول لاحقا..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "إيقاف الصوت"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "تشغيل الصوت"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "الشاشة السابقة"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "الرجوع إلى المكالمة"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "مكالمة واردة"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "اتصال صادر"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "مكالمة فائتة"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "رسالة مرسلة"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "الرسالة المستلمة"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "مكالمة مرفوضة"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "مكالمة محظورة"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "تعديل الرقم قبل الاتصال"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "إرسال بريد إلكتروني"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "تحديد السجلات"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "تحديد جهات اتصال الاتصال السريع"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "إلغاء حظر"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "تغيير جهة الاتصال"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "إضافة توقف مؤقت لمدة %d ثانية"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "إضافة مهلة انتظار"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "الفائتة"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "خروج"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "ضبط مخصص"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "الجوال"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "منزل"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "العمل"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "الفاكس (المنزل)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "فاكس (العمل)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "رقم المساعد"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "جهاز المناداة"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "آخر"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "الهاتف"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "الفاكس"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "هاتف السيارة"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "المنزل 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "الرئيسي الخاص بالشركة"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "كل الأسماء"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "غير محددة"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "رقم الخدمة"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "الهاتف"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "مجموعات"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "إفتراضي"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "نغمة الرنين"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "موقع الويب"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "بريد إلكتروني"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "الرقم"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "ملاحظة"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "العنوان البريدي"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "التفاصيل"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "الشركة"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "ترتيب عرض الاسم"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "أرقامي"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "الاسم الأول"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "اسم العائلة"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "الاسم الأوسط"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "اللاحقة"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "اللقب"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "تصدير جهات الاتصال"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "تحديد جهات الاتصال"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "الرمز البريدي"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "الدولة"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "إقليم"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "المدينة"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "الشارع"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "تم الحفظ في %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "يكثر الاتصال بها"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "تم النسخ"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "تم التصدير"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "جار حذف جهات الاتصال..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "جاري النقل..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "جاري النسخ..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "استيراد أسماء SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "جاري استيراد جهات الاتصال من vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "جاري تصدير جهات الاتصال إلى %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "بطاقة vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "جار قراءة vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "تم الاستيراد"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "غير متاح"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "كل جهات الاتصال المرتبطة"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "الأسماء المرتبطة"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "الوظيفة"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "القسم"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "اسم المجموعة"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "إضافة حساب"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "جار إضافة أعضاء للمجموعة..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "عرض"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d جهات اتصال"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "تغيير الاسم"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "العلاقة"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "لا توجد محفوظات"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "لا توجد أنشطة"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "جاري الإضافة..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "معلومات إضافية"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "صندوق PO"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "ولاية"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "الأصدقاء"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "العائلة"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "زملاء العمل"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "العمل"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "نموذج الاهتزاز"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "تعيين الافتراضية"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "حدث"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "مشاركة معلومات جهة الاتصال"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "جهة اتصال واحدة"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "التصدير إلى بطاقة SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "معلومات"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "المحفوظات"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "الأنشطة"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "رسالة مجموعة"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "بريد إلكتروني لمجموعة"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "لا يوجد اسم"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "عنوان البريد الإلكتروني غير صالح"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "أكمل الاسم وكذلك حقلا واحدا على الأقل"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "فشل في الوصول إلى قاعدة البيانات"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "تمت إضافته بالفعل"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "اسم المجموعة مستخدم مسبقا"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "لا توجد مجموعة"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "لا يوجد رقم"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "لا يوجد عنوان بريد إلكتروني"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "لايوجد أسماء"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "ذاكرة البطاقة خالية"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "العدد الأعظمي للمدخلات المتوقعة"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "رقم غير صالح"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "ذاكرة البطاقة ممتلئة"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"يمكنك استيراد جهات اتصال من بطاقة SIM إلى الهاتف في الإعدادات > استيراد جهات "
+"اتصال أو المزامنة مع جهات اتصال حساب الويب باستخدام الحسابات في الإعدادات"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"لا توجد سجلات. بعد إجراء/استلام مكالمة أو إرسال/استلام رسالة، سيتم عرض "
+"السجلات"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "يتعذر إرسال بطاقات الأسماء"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "تحديد كرقم افتراضي"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "تحديد كبريد إلكتروني افتراضي"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "صورة"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "التقاط صورة"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "إزالة صورة"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "إضافة إلى الشاشة الرئيسية"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "حفظ الاسم في"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "حفظ في"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "استيراد جهات اتصال SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "الاسم الأول أولا"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "اسم العائلة أولا"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "عرض"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "إخفاء"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "إرسال بطاقة اسم"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "إنشاء مجموعة"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "تحديد مجموعة"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "استيراد ج اتصال"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "ربط الاسم"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "إلغاء الرابط"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "سيتم حذف جميع الأسماء المرتبطه"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "إضافة إلى المفضلة"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "تعديل مجموعة"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "إضافة عضو"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "إضافة إلى مجموعة"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "تمت الإضافة إلى المفضلة"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "غير معروف"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "عيد ميلاد"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "ذكرى سنوية"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "أحد"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "إثنين"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "ثلاثاء"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "أربعاء"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "خميس"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "جمعة"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "سبت"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "مساعد"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "أخ"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "طفل"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "عشير"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "أب"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "الأصدقاء"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "المدير"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "أم"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "والد"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "الزملاء"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "مشار إليه من قبل"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "قريب"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "أخت"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "الزوج/الزوجة"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "الجوال (المنزل)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "هاتف محمول (العمل)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "الموقع"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "معلومات أخرى"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "تم الحفظ في"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "إستيراد من بطاقة SD"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "المجموعة وأعضاء المجموعة"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "تم حفظ %s في %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "سيتم حذف جهة الاتصال هذه"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "صورة شخصية"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "المتصل"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "نسخة احتياطية"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "المجموعة فقط"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "مجموعة جديدة"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "تحديد مجموعة"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "جوال2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "تمت الإضافة"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "تم النقل"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "تم التحديد"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "إلغاء"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "الذاكرة لا تكفي"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "تم الحذف"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "بحث"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "إغلاق"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "تم المسح"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "خطأ"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "اتصال"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "لا توجد SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "اختيار الكل"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "فشل"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "نجاح"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "حفظ"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "إضافة اسم"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "اسم المساعد"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "مسح المجموعة"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "اسم المجموعة"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "ن رنين مجموعة"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "تسجيل فيديو"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "استبدال"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "الاتصال السريع"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "رسالة"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "ضبط نغمة الرنين"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "كل الأسماء"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "الشركة"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "تحرير جهات الاتصال"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "الحصول على بريد إلكتروني"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "الحصول على رقم"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "لا توجد مجموعة"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "المشارك"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "تعيين صورة"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "الاتصال السريع‬ غير مستخدم"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "حذف جهات اتصال"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "تحرير مجموعات"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "بريد إلكتروني"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "إضافة إلى المفضلة"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "تعديل مجموعة"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "خالي"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "حفظ الاسم"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "تحديد جهة اتصال"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "إضافة مجموعة"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "الذاكرة ممتلئة"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "جاري الحذف..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "غير قادر على إضافة جهة اتصال إلى المجموعة"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "تحديث"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "إلغاء"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "البلوتوث"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "الأسماء"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "نسخ"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "إنشاء"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "بريد إلكتروني"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "رسالة"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "نقل"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "الهاتف"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "غير معروف"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "مكالمة فيديو"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "مسح"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "تمت"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "تعديل"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "موافق"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "إرسال تفاصيل اسم"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "بحث في خادم Exchange"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "هونج كونج"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "أيسلندا"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "الأرجنتين"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "الأقاليم الأسترالية الخارجية"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "أذربيجان"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "بونير‬ و‏‫سانت أوستاتيوس‬ وسابا"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "جمهورية كوريا الديمقراطية الشعبية"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "خدمة الهاتف المجاني الدولية"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "خدمة السعر المتميز الدولية (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "خدمة التكلفة المشتركة الدولية (ISCS)"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "قرغيزستان"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "سانت هيلانه"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "سلوفاكيا"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "تايوان"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "اتصالات الإغاثة عند الكوارث (TDR)"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "جمهورية مقدونيا اليوغسلافية سابقا"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "المملكة المتحدة بين بريطانيا العظمى وأيرلندا الشمالية"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "الولايات المتحدة الأمريكية"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "جزر فيرجين التابعة للولايات المتحدة"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "خدمة الاتصالات الشخصية العامة (UPT)"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "كوت ديفوار"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "كوراساو"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "المقاطعات الجنوبية الفرنسية"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "الجابون"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "ماكاو"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "الصومال"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "تيمور الشرقية"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "توجو"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "أفغانستان"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "ألبانيا"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "الجزائر"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "ساموا الأمريكية"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "أندورا"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "أنجولا"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "أنجويلا"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "أنتيجوا وباربودا"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "أرمينيا"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "أروبا"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "أستراليا"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "النمسا"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "جزر الباهاما"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "البحرين"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "ينجلاديش"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "باربادوسا"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "بلاروسيا"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "بلجيكا"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "بيليز"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "بنين"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "برمودا"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "بوتان"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "بوليفيا"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "البوسنة والهرسك"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "بوتسوانا"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "البرازيل"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "جزر فيرجين الانجليزية"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "بروناي دار السلام"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "بلغاريا"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "بوركينافاسو"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "بوروندي"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "كمبوديا"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "الكاميرون"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "كندا"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "كاب فردي"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "جزر كيمان"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "جمهورية أفريقيا الوسطى"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "تشاد"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "تشيلي"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "الصين"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "كولومبيا"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "جزر القمر"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "الكونغو"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "جزر كوك"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "كوستاريكا"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "كرواتيا"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "كوبا"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "قبرص"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "جمهورية التشيك"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "جمهورية الكونغو الديموقراطية"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "الدنمارك"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "دياجو جاراسيا"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "جيبوتي"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "دومينيكا"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "جمهورية الدومينيكان"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "الإيكوادور"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "مصر"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "السلفادور"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "غينيا الاستوائية"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "إريتريا"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "إستونيا"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "إثيوبيا"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "جزر فوكلاند"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "جزر فايرو"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "فيجي"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "فنلندا"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "فرنسا"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "غويانا الفرنسية"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "بولينيزيا الفرنسية"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "جامبيا"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "جورجيا"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "ألمانيا"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "غانا"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "جبل طارق"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "اليونان"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "جرينلاند"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "جرينادا"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "جواديلوب"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "غوام"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "جواتيمالا"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "غينيا"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "غينيا بيساو"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "جويانا"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "هاييتي"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "هندوراس"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "المجر"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "الهند"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "إندونيسيا"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "إيران"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "العراق"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "أيرلندا"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "إسرائيل"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "إيطاليا"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "جامايكا"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "اليابان"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "الأردن"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "كازاخستان"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "كينيا"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "كريباتي"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "كوريا"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "الكويت"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "جمهورية لاو الديمقراطية الشعبية"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "لاتفيا"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "لبنان"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "ليسوتو"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "ليبيريا"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "ليبيا"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "ليختنشتين"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "ليتوانيا"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "لكسمبورج"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "مدغشقر"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "مالاوي"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "ماليزيا"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "المالديف"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "مالي"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "مالطا"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "جزر مارشال"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "المارتينيك"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "موريتانيا"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "موريشيوس"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "المكسيك"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "ميكرونيزيا"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "مولدوفا"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "موناكو"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "منغوليا"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "الجبل الأسود"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "مونتسيرات"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "المغرب"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "موزامبيق"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "ميانمار"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "ناميبيا"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "ناورو"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "نيبال"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "هولندا"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "نيوكاليدونيا"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "نيوزيلندا"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "نيكاراجوا"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "النيجر"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "نيجيريا"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "نيوي"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "جزر نورث ماريانا"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "النرويج"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "عمان"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "باكستان"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "بالاو"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "بنما"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "بابوا غينيا الجديدة"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "باراجواي"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "بيرو"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "الفلبين"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "بولندا"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "البرتغال"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "بورتوريكو"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "قطر"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "رومانيا"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "روسيا الاتحادية"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "رواندا"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "سانت كيتس ونيفيس"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "سانت لوتشيا"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "سان بيير وميكويلون"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "سانت فنسنت وجرينادا"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "جزر ساموا"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "سان مارينو"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "ساوتومي وبرنسيب"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "السعودية"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "السنغال"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "صربيا"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "سيشيل"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "سيراليون"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "سنغافورة"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "سانت مارتن"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "سلوفينيا"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "جزر سولومون"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "جنوب أفريقيا"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "أسبانيا"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "سريلانكا"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "السودان"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "سورينام"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "سويسرا"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "السويد"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "سويسرا"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "الجمهورية العربية السورية"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "طاجيكستان"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "تنزانيا"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "تايلاند"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "توكيلاو"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "تونغا"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "ترينداد وتوباجو"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "تونس"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "تركيا"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "تركمانستان"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "جزر توركس وكايكوس"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "توفالو"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "أوغندا"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "أوكرانيا"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "الإمارات العربية المتحدة"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "أورجواي"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "أوزبكستان"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "فانواتو"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "دولة الفاتيكان"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "فنزويلا"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "فيتنام"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "والس وفوتونا"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "اليمن"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "زامبيا"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "زيمبابوي"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "الاسم الأول واسم العائلة"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "اسم العائلة والاسم الأول"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "لمزيد من الحقول، انقر فوق الزر على اليمين"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/az.po b/po/az.po
new file mode 100644
index 0000000..77c290c
--- /dev/null
+++ b/po/az.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Klaviatura"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Sevimlilər"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Sürətli yığma"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Səsli poçt"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Tarixçələr"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Sürətli yığma nömrəsi yoxdur. İndi biri təyin edilsin?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Tələb alınmadı"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Sorğu uğurlu oldu"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Təcili zəng"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Jurnal yoxdur"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Sevimli yoxdur"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Mesaj silindi"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Telefon nömrəsi maksimum uzunluğu keçib"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Tarixçələr silinir..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Sevimlilər silinir..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Başladılır. Daha sonra cəhd edin."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Səs sönülüdür"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Səs yanılıdır"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Əvvəlki ekran"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Zəng etmək üçün geri qayıdın"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Gələn zəng"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Gedən zəng"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Buraxılmış zəng"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Göndərilmiş mesaj"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Qəbul edilmiş mesaj"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Rədd edilmiş zəng"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Bloklanmış zəng"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Zəngdən əvvəl nömrəni redaktə edin"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Elektron məktubu göndər"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Tarixçələri seç"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Sürətli yığım kontaktlarını seç"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Blokdan çixart"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Kontaktı dəyiş"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "%d saniyə fasilə əlavə et"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Gözləmə əlavə et"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Buraxılmış"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Çıx"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Adi"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobil"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Ev"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "İş"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Faks (Ev)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Faks (İş)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Köməkçinin nömrəsi"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Peycer"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Başqa"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Faks"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Avtomobil telefonu"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Ev 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Şirkətin əsas"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Bütün adlar"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Təyin olunmamışdır"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Servis nömrəsi"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Qruplar"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "İlkin təyin olunan"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Zəng tonu"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Vebsayt"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Elektron poçtlar"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Nömrə"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Qeyd"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Poçt ünvanı"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Təfsilatlar"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Şirkət"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Displey adı sırası"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Şəxsi nömrə"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Ad"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Yekun ad"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "İkinci ad"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Suffiks"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Təxəllüs"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Kontaktları ixrac et"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Kontaktları seç"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Poçt kodu"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Ölkə"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Rayon"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Şəhər"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Küçə"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "%s daxilində saxlanmışdır"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Tez-tez əlaqə saxlanılanlar"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Surəti saxlanıldı"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "İdxal edilmişdir"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Kontaktlar silinir..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Göndərilmə..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Köçürülmə..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "SIM kontaktlar idxal edilir..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Kontaktlar vCard-dan idxal olunur..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Kontaktlar %s-a idxal edilir..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "V-Kart"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "vCard oxunur..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "İdxal edildi"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "M/D"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Bütün əlaqəli kontaktlar"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Əlaqəli kontaktlar"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Məşğuliyyət adı"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Departament"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Qrup adı"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Hesab əlavə edin"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Qrupa üzvlər əlavə edilir..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Bax"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d kontakt"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Adını dəyişdir"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Münasibət"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Tarixçə yoxdur"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Fəaliyyət yoxdur"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Əlavə olunur..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Əlavə məlumat"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Poçt qutusu"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Dövlət"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Dostlar"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Ailə"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Həmkarlar"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "İş"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Vibrasiya nümunəsi"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Susmaya görə təyin et"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Olay"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Kontakt məlumatını paylaş"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 kontakt"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "SIM karta ixrac et"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Məlumat"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Tarix"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Fəaliyyət növləri"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Qrup mesajı"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Qrup epoçtu"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Ad yoxdur"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Yanlış E-poçt ünvanı"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Ən azı bir sahəni, həmçinin adı tamamlayın"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Məlumat bazasına daxil olmaq alınmadı"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Artıq əlavə olunmuşdur"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Qrup adı hazırda istifadə edilir"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Qrup yoxdur"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Nömrə yoxdur"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Epoçt ünvanı yoxdur"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Kontakt yoxdur"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM yaddaşı boşdur"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Qeyd sayı maksimum həddi aşmışdır"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Nömrə səhvdir"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM yaddaşı doludur"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Siz Parametrlər > Kontaktları idxal et vasitəsilə kontaktları SIM kartdan "
+"idxal edə və parametrlərdə hesablardan istifadə edərək veb-hesabın "
+"kontaktları ilə sinxronlaşdıra bilərsiniz"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Jurnal yoxdur. Zəng etdikdən/qəbul etdikdən və ya mesaj aldıqdan/"
+"göndərdikdən sonra jurnal göstəriləcək"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Vizit kartını göndərmək mümkün deyil"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "İlkin təyin edilmiş nömrə kimi işarələ"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Susmaya görə e-poçt kimi qeyd et"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Şəkil"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Foto şəkil çək"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Şəkli sil"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Ana ekrana əlavə et"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Kontaktı ...da saxla"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Yaddaşa yazma yer"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "SIM kontaktları gətirin"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Əvvəlcə ad"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Əvvəlcə soyad"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Show"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Gizlə"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Vizit kartı göndər"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Qrup yarat"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Qrup seç"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Kontaktlrı gətr"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Kontaktı əlaqələndir"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Əlaqəni ləğv et"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Bütün əlaqəli kontaktlar silinəcək"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Sevimlilərə əlavə et"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Qrupu redaktə et"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Üzv əlavə et"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Qrupa əlavə et"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Sevimlilərə əlavə edildi"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Naməlum"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Doğum günü"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "İldönümü"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Bazar günü"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Bazar ertəsi"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Çərşənbə axşamı"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Çərşənbə"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Cümə axşamı"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Cümə"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Şənbə"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Köməkçi"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Qardaş"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Uşaq"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Yerli tərəfdaş"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Ata"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Dost"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Menecer"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Ana"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Valideyn"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Tərəfdaş"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "İstinad edilib"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Qohum"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Bacı"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Həyat yoldaşı"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Daha çox məlumat"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Əfqanıstan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albaniya"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Əlcəzair"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Şərqi Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Anqola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anqvilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antiqua və Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Ermənistan"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Avtraliya"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Avstraliyanın Xarici Əraziləri"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Avstriya"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azərbaycan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Baham"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bəhreyn"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Banqladeş"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Belarusiya"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belçika"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Beliz"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "BENIN"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermud"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Butan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Boliviya"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonear, Sent Yustatius və Seyba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosniya və Herseqovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botsvana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Braziliya"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Britaniyanın Virciniya Adaları"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Bruney Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bolqariya"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kamboca"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Kabo-Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Kaymen Adaları"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Mərkəzi Afrika Respublikası"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "ÇAD"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Çili"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Çin"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Kolumbiya"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Komor Adaları"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Konqo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Kuk Adaları"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Kosta Rika"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Kot d'İvuar"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Xorvatiya"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Kurakao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Kipr"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Çex Respublikası"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Koreya Xalq Demokratik Respublikası"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Konqo Demokratik Respublikası"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Şərqi Timor"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danimarka"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diyeqo Qarsiya"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Cibuti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominika"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominikan Respublikası"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ekvador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Misir"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Ekvatorial Qvineya"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritreya"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estoniya"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Efiopiya"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Folklend Adaları"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Farer adaları"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finlandiya"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Fransa"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Fransanın Cənub Əraziləri"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Fransız Qvianası"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Fransız Polineziya"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Qabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Qambiya"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Gürcüstan"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Almaniya"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Qana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Hibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Yunanıstan"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Qrenlandiya"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Qrenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Qvadelupa"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Quam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Qvatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Qvineya"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Qvineya-Bisau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Qayana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Honkonq"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Macarıstan"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "İslandiya"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Hindistan"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesiya"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Iraq"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "İrlandiya"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "İsrail"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italiya"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Yamayka"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Yaponiya"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "İordaniya"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Qazaxıstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Koreya"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Küveyt"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Qırğızıstan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Laos Xalq Demokratik Respublikası"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Latviya"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Livan"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesoto"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberiya"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Liviya"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Lixtenşteyn"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Litva"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luksemburq"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Makao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "MADAQASKAR"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malavi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malayziya"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldiv adaları"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marşal Adaları"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinika"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAVRİTANİYA"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAVRİKİ"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Meksika"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikroneziya"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldoviya"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monako"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolustan"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Monteneqro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Mərakeş"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambik"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "NAMIBIYA"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Niderland"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Yeni Kaledoniya"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Yeni Zelandiya"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nikaraqua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "NIGER"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeriya"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Şimali Mariana adaları"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norveç"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua- Yeni Qvineya"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraqvay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filippin Adaları"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polşa"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portuqaliya"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Riko"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qətər"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Rumıniya"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Rusiya Federasiyası"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rvanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Müqəddəs Yelena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Sent Kitts və Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Müqəddəs Lusia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Sen Piyer və Mikelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Sent Vinsent və Qrenadin adaları"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "San Tome və Prinsipi"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Səudiyyə Ərəbistanı"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Seneqal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbiya"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seyşel adası"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Sinqapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sent Martin"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovakiya"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Sloveniya"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Solomon Adaları"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somali"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Cənubi Afrika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "İspaniya"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Şri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Svazilend"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "İsveç"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "İsveçrə"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Suriya Ərəb Respublikası"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Tayvan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tacigistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzaniya"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tayland"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Keçmiş Yuqoslaviya Respublikası Makedoniya"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Toqo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonqa"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad və Tobaqo"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunis"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Türkiyə"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Türkmənistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Türk və Kaykos Adaları"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uqanda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukrayna"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Birləşmiş Ərəb Əmirliyi"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Böyük Britaniya və Şimali İrlandiya Birləşmiş Krallığı"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Amerika Birləşmiş Ştatları"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Birləşmiş Ştatların Virciniya adaları"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruqvay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Özbəkistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatikan şəhər dövləti"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venesuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vyetnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Vallis və Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yəmən"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambiya"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbave"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobil (Ev)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobil (İş)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "...da saxlanıldı"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "SD kartdan idxal et"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Qrup və qrup üzvləri"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s %s-də saxlanmışdır"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Bu kontakt silinəcək"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Foto"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Nömrəyğn"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Nüsxə"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Yalnız qrup"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Yeni qrup"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Qrup seç"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobil 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Əlavə edildi"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Göndərildi"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Seçildi"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Ləğv et"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Yaddaş kifayət etmir"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Silindi"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Axtarış"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Bağla"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Silindi"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Xəta"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Zəng"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "SIM yoxdur"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Hamısını seç"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Mümkün olmadı"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Uğur"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Yaddaşa yaz"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Kontaktları əlavə et"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Köməkçinin adı"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Qrupu sil"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Qrup adı"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Qrup zəng melodiyası"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Video yazı"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Əvəz et"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Sürətli yığma"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Mesaj"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Zəng melodiyası qur"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Bütün adlar"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Şirkət"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Kontaktları redaktə et"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Epoçt əldə edin"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Nömrəni əldə edin"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Qrup yoxdur"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "İştirakçı"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Şəkili qurun"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Sürətli yığma istifadədə deyil"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Kontaktları sil"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Qrupları redaktə et"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Elektron poçtlar"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Sevimlilərə əlavə edin"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Qrupu redaktə et"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Boşdur"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Kontaktı yaddaşa yaz"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Kontakt seç"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Qrup əlavə et"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Yaddaş dolmuşdur"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Silinir..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Qrupa kontakt əlavə etmək mümkün deyil"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Yenilə"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Ləğv et"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Adlar"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Köçür"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Yarat"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Elektron poçtlar"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Mesaj"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Göndər"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Naməlum"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Video zəng"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Sil"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Bitdi"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Redaktə et"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Kontakt detallarını göndər"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Exchange serverini axtar"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Ad Soyad"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Soyad Ad"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Əlavə sahələr üçün sağdakı düyməyə vurun"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/bg.po b/po/bg.po
new file mode 100644
index 0000000..44d6ec7
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,1772 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Клавиат."
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Предпочитани"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Бързо набиране"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Гласова поща"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Регистри"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Няма номер за бързо набиране. Задаване на такъв сега?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Неуспешна заявка"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Заявката е успешна"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Спешно повикване"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Няма регистри"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Няма предпочитани"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Съобщението е изтрито"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Надвишена е максималната дължина на телефонния номер"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Изтриване на регистрите..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Изтриване на предпочитаните..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Инициализиране. Опитайте по-късно..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Звук изкл."
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Звук вкл."
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Предишен екран"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Назад към повикването"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Входящо повикване"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Изходящо повикване"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Пропуснат разговор"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Изпратено съобщение"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Получено съобщение"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Отхвърлено повикв."
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Блокирано повикв."
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Редактиране на номера преди повикване"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Изпращане на еmail"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Избери регистри"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Изберете контакти за бързо набиране"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Деблок."
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Промяна на записа"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Добави %d сек. пауза"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Добавяне на изчакване"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Пропуснато"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Изход"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "По избор"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Мобилен"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Дом"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Служебен"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Факс (домашен)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Факс (служебен)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Номер на помощника"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Пейджър"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Друго"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Телефон"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Факс"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Телефон в автомобила"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Домашен 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Основен фирмен"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Радио"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Всички записи"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Незададен"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Номер на услуга"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Телефон"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Групи"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "По подразбиране"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Тон позвъняване"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Уеб сайт"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Email"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Номер"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Бележка"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Пощенски адрес"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Детайли"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Фирма"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Ред за показване на имената"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Собствен номер"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Малко име"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Фамилно име"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Бащино име"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Обръщение"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Псевдоним"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Експортиране на записи"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Избор на записи"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Пощенски код"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Страна"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Област"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Град"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Улица"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Запаметено в %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Често контактувани"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Копирано"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Експортирано"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Изтриване на записи..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Преместване"
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Копиране..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Импортиране на записи от SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Импортиране на записи от vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Експортират се записи в %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "V карта"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Четене на vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Импортирано"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "н.д."
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Всички свързани записи"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Свързани записи"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Длъжност"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Отдел"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Име на група"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Добавяне на акаунт"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Добавяне на членове в група..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Преглед"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d записа"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Преименуване"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Връзка"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Няма хронологии"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Няма дейности"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Добавяне..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Доп. информация"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Пощенска кутия"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Област"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Приятели"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Семейство"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Колеги"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Служебен"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Тип вибриране"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Настройка по подразбиране"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Мероприятие"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Сподели информация за контакт"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 запис"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Експортиране в SIM картата"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Информ."
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Хронология"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Действия"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Съобщение до групата"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Email до групата"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Без име"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Невалиден имейл адрес"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Попълнете поне едно поле, като и име"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Неуспешен достъп до базата данни"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Вече е добавено"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Името на групата вече се използва"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Няма група"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Няма номер"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Няма email адреси"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Няма записи"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Паметта на SIM е празна"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Надхвърлен е максималният брой записи"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Невалиден номер"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM памет пълна"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Можете да импортирате записи от SIM картата в телефона от Настройки > "
+"Импортиране на записи или да синхронизирате със записи за уеб акаунти, като "
+"ползвате акаунтите в настройките"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Няма регистри. След като направите/получите повикване или изпратите/получите "
+"съобщение, ще се появят регистрите"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Визитните картички не могат да се изпратят"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Маркиране като номер по подразбиране"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Маркирай като email по подразбиране"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Изображение"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Направи снимка"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Махни снимката"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Добавяне към началния екран"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Запиши данните в"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Запази в"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Импортирай записи от SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Първо собственото име"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Първо фамилното име"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Показване"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Скриване"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Изпращане на визитка"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Създаване на група"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Изберете група"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Импорт записи"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Свързване на запис"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Премахни връзката"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Всички свързани записи ще бъдат изтрити"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Добави към Предпочитани"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Редакт. група"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Доб. член"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Добавяне към група"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Добавено към Предпочитани"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Няма информация"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Рожден ден"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Годишнина"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Неделя"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Понеделник"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Вторник"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Сряда"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Четвъртък"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Петък"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Събота"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Помощник"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Брат"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Дете"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Домашен партньор"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Баща"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Приятел"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Мениджър"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Майка"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Родител"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Партньор"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Препоръчан от"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Роднина"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Сестра"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Съпруг(а)"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Още информация"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Афганистан"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Албания"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Алжир"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Американски Самоа"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Андора"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Ангола"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Ангила"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Антигуа и Барбуда"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Аржентина"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Армения"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Аруба"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Австралия"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Австралийски външни територии"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Австрия"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Азербайджан"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Бахами"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Бахрейн"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Бангладеш"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Барбадос"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Беларус"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Белгия"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Белиз"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Бенин"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Бермуда"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Бутан"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Боливия"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Бонер, Свети Евстатий и Саба"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Босна и Херцеговина"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Ботсуана"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Бразилия"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Британски Вирджински о-ви"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Бруней Дарусалам"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "България"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Буркина Фасо"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Бурунди"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Камбоджа"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Камерун"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Канада"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Кабо Верде"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Кайманови острови"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Централноафриканска република"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Чад"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Чили"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Китай"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Колумбия"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Комори"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Конго"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "о-ви Кук"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Коста Рика"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Кот д'Ивоар"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Хърватска"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Куба"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Кюрасао"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Кипър"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Чешка република"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Корейска народна демократична република"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Демократична република Конго"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Тимор-Лесте"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Дания"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Диего Гарсия"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Джибути"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Доминика"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Доминиканска република"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Еквадор"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Египет"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "Салвадор"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Екваториална Гвинея"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Еритрея"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Естония"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Етиопия"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Фолклендски о-ви"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Фарьорски о-ви"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Фиджи"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Финландия"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Френски Южни територии"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Френска Гвиана"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Френска Полинезия"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Габон"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Гамбия"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Грузия"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Германия"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Гана"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Гибралтар"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Гърция"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Гренландия"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Гренада"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Гваделупа"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Гуам"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Гватемала"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Гвинея"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Гвинея-Бисау"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Гайана"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Хаити"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Хондурас"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Хонконг"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Унгария"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Исландия"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Индия"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Индонезия"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Международна услуга за безплатна телефония"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Международна услуга с преференциални тарифи (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Международна услуга със споделени разходи (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Иран"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Ирак"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Ирландия"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Израел"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Ямайка"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Япония"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Йордания"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Казахстан"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Кения"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Кирибати"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Ю. Корея"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Кувейт"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Киргизстан"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Лаоска народна демократична република"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Латвия"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Ливан"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Лесото"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Либерия"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Либия"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Лихтенщайн"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Литва"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Люксембург"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Макао"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Мадагаскар"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Малави"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Малайзия"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Малдиви"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Мали"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Малта"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Маршалови острови"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Мартиника"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Мавритания"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Мавриций"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Мексико"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Микронезия"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Молдова"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Монако"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Монголия"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Черна гора"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Монсерат"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Мароко"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Мозамбик"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Мианмар"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Намибия"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Науру"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Непал"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Нидерландия"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Нова Каледония"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Нова Зеландия"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Никарагуа"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Нигер"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Нигерия"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Ниу"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Северни Мариански о-ви"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Норвегия"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Оман"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Пакистан"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Палау"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Панама"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Папуа Нова Гвинея"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Парагвай"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Перу"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Филипини"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Полша"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Португалия"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Порто Рико"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Катар"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Румъния"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Руска федерация"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Руанда"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Света Елена"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Сейнт Китс и Невис"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Сейнт Лучия"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Сен Пиер и Микелон"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Сейнт Винсент и Гренадин"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Самоа"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "Сан Марино"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Сао Томе и Принципе"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Саудитска Арабия"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Сенегал"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Сърбия"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Сейшелски о-ви"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Сиера Леоне"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Сингапур"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Синт Маартен"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Словакия"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Словения"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Соломонови о-ви"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Сомалия"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Южна Африка"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Испания"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Шри Ланка"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Судан"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Суринам"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Свазиленд"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Швеция"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Швейцария"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Сирийска арабска република"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Тайван"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Таджикистан"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Танзания"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Телекомуникации за помощ при бедствия (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Тайланд"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Бивша югославска република Македония"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Того"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Токелау"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Тонга"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Тринидад и Тобаго"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Тунис"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Турция"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Туркменистан"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Острови Търкс и Кайкос"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Тувалу"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Уганда"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Украйна"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Обединени арабски емирства"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Обединено кралство Великобритания и Северна Ирландия"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Съединени американски щати"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Вирджински о-ви - САЩ"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Универсална персонална телекомуникационна услуга (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Уругвай"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Узбекистан"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Вануату"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Ватикана"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Венецуела"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Виетнам"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Уолис и Футуна"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Йемен"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Замбия"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Зимбабве"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Мобилен (домашен)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Мобилен (служебен)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Записано в"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Импортиране от SD картата"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Група и членове на групата"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s е запаметен в %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Този номер ще бъде изтрит"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Снимки"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Набиране"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Резервно копие"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Обмяна"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Само групата"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Нова група"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Изберете група"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Мобилен 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Добавен"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Преместено"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Избран"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Отмени"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Няма достатъчно памет"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Премахнат"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Търси"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Затваряне"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Изтрито"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Грешка"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Повикване"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Няма SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Избери всички"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Неуспешно"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Успешно"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Запази"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Добави от указ."
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Име на помощника"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Изтрий група"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Име на група"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Тон звън. група"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Запис на видео"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Замяна"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Бързо набиране"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Съобщ."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Задаване като тон на звънене"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Всички записи"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Фирма"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Редактиране на записи"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Получаване на email"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Изтегляне на номер"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Няма група"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Участник"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Задаване на изображение"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Бързото набиране не се използва"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Изтриване на записи"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr ""
+#~ "Редактиране\n"
+#~ "на групи"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Добавяне в Предпочитани"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Редакт. група"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Празен"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Запази в тел. указ."
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Избор на запис"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Добави група"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Паметта е заета"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Премахване..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Не може да се добави запис в групата"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Актуализация"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Отказ"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Телефонен указател"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Копиране"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Създай"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Съобщение"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Премести"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Телефон"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Няма информация"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Видео разговор"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Изтрий"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Готово"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Редактиране"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Изпрати данни от тел. указател"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Търсене в сървър на Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Собствено име Фамилия"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Фамилия Собствено име"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "За повече полета чукнете бутона отдясно"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/ca.po b/po/ca.po
new file mode 100644
index 0000000..7fba627
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,1772 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Teclat"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Preferit"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Marcatge ràpid"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Bústia de veu"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Registre"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Sense números de marcatge abreujat. Assignar-ne un ara?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Error a la petició"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Sol·licitud correcta"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Trucada d'emergència"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "No hi ha registres"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Sense preferits"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Missatge esborrat"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "S'ha excedit la longitud màxim de número de telèfon"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Esborrant registres..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Esborrant preferits..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Inicialitzant. Intenti-ho més tard..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "So desactivat"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "So activat"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Pant anterior"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Torna a la trucada"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Trucada d'entrada"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Trucada de sortida"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Trucada perduda"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Missatge enviat"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Missatge rebut"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Trucada rebutjada"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Trucada bloquejada"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Editar el número abans de trucar"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Enviar correu electrònic"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Seleccionar registres"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Seleccionar contactes de marcatge abreujat"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Desbloq"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Canviar contacte"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Afegir una pausa de %d s"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Afegir espera"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Perdudes"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Sortir"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Personalitzat"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mòbil"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Pers."
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Feina"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (Casa)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (Feina)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Número de l'assistent"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Cercapersones"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Altres"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telèfon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Telèfon del cotxe"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Casa 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Telèfon principal de l'empresa"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Ràdio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Tots els contactes"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "No assignat"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Número de servei"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telèfon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grups"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Predeterminat"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Melodia"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Lloc web"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Correu electrònic"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Número"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Nota"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Adreça postal"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Detalls"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Empresa"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Ordre de nom que apareixerà a la pantalla"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Número propi"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Nom"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Cognoms"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Segon nom"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Sufix"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Sobrenom"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Exportar contactes"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Seleccionar contactes"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Codi postal"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "País"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Província"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Ciutat"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Carrer"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Desat a %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Contactats amb freqüència"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Copiat"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exportat"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "S'estan esborrant els contactes..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Movent..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Copiant..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "S'estan important els contactes SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "S'estan important els contactes de la vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Exportant contactes a %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "S'està llegint vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importat"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/D"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Tots cont. enllaçats"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Contactes enllaçats"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Càrrec"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Departament"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Nom grup"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Afegir compte"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "S'estan afegint membres al grup..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Veure"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d contactes"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Canviar nom"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relació"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Sense historials"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Sense activitats"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Afegint..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Informació addicional"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Bústia postal"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Estat"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Amics"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Família"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Companys de feina"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Feina"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Patró de la vibració"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Definir predeterminat"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Esdeveniment"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Compartir informació de contacte"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 contacte"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Exportar a targeta SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Historial"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Activitats"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Missatge de grup"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Correu electrònic de grup"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Sense nom"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Adreça correu electrònic no vàlida"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Ompli, al menys, un camp i també el nom"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Error en accedir a la base de dades"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Ja s'ha afegit"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Ja s'està utilitzant aquest nom de grup"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Sense Grup"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Sense número"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "No hi ha cap adreça de correu electrònic"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "No hi ha contactes"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Memòria SIM buida"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "S'ha excedit el nombre màxim d'entrades"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Número no vàlid"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Memòria SIM plena"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Pot importar contactes de la targeta SIM al telèfon a Ajustaments > Importar "
+"contactes o sincronitzar-los amb contactes de comptes web utilitzant els "
+"comptes a ajustaments"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"No hi ha registres. Després de fer/rebre una trucada o enviar/rebre un "
+"missatge, es mostraran els registres"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "No es poden enviar targetes de visita"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Marcar com a número predeterminat"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Marcar com a correu electrònic predeterminat"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Imatge"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Fer una foto"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Eliminar foto"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Afegir a la pantalla d'inici"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Desar contacte a"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Desar a"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importar els contactes SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Primer el nom"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Abans el cognom"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Mostrar"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Ocultar"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Enviar targeta de visita"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Crear grup"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Seleccionar grup"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Import contact"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Enllaçar contacte"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Desenllaçar"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "S'esborraran tots els contactes enllaçats"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Afegir a Preferits"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Editar grup"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Af membre"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Afegir a grup"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Afegit a preferits"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Desconegut"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Natalici"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Aniversari"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Diumenge"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Dilluns"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Dimarts"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Dimecres"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Dijous"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Divendres"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Dissabte"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistent"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Germà"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Nen"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Soci local"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Pare"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Amic"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Director"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Mare"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Pares"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Parella"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Referit per"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Familiar"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Germana"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Cònjuge"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "MI"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Més informació"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albània"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algèria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Samoa Nord-americana"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua i Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armènia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Austràlia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territoris externs d'Austràlia"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Àustria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaidjan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangla Desh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Bielorússia"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Bèlgica"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benín"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolívia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius i Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bòsnia i Herzegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brasil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Illes Verges Britàniques"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgària"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Cambodja"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Camerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canadà"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cap Verd"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Illes Caiman"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "República Centreafricana"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Txad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Xile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Xina"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colòmbia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comores"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Illes Cook"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Costa d’Ivori"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Croàcia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curaçao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Xipre"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "República Txeca"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "República Democràtica Popular de Corea"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "República Democràtica de Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor Oriental"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Dinamarca"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "República Dominicana"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Equador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egipte"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Guinea Equatorial"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estònia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiòpia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Illes Malvines"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Illes Fèroe"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finlàndia"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "França"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territoris francesos del sud"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Guaiana Francesa"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Polinèsia Francesa"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gàmbia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Geòrgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Alemanya"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grècia"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Groenlàndia"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadalupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haití"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Hondures"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Hongria"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islàndia"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Índia"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonèsia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Servei telefònic gratuït internacional"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Servei de tarifa prèmium internacional (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Servei de cost compartit internacional (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Iraq"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irlanda"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Itàlia"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japó"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordània"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazakhstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Corea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirguizistan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "República Democràtica Popular de Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Letònia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Líban"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Libèria"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Líbia"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lituània"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxemburg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macau"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagascar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malàisia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldives"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Illes Marshall"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinica"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritània"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Maurici"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mèxic"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronèsia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldàvia"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Mònaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongòlia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marroc"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Moçambic"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namíbia"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Països Baixos"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nova Caledònia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nova Zelanda"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Níger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigèria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Illes Mariannes Septentrionals"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Noruega"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panamà"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Nova Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguai"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Perú"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipines"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polònia"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Romania"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Federació russa"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Saint Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Christopher i Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre and Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent i les Grenadines"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "São Tomé i Príncipe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Aràbia Saudita"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Sèrbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelles"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Eslovàquia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Eslovènia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Illes Salomó"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somàlia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Sud-àfrica"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Espanya"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swazilàndia"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Suècia"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Suïssa"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "República Àrab de Síria"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadjikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzània"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr ""
+#~ "Telecomunicacions per a les operacions de socors en cas de catàstrofe "
+#~ "(TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tailàndia"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "L'antiga República Iugoslava de Macedònia"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad i Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunísia"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turquia"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Illes Turks i Caicos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ucraïna"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Unió dels Emirats Àrabs"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Regne Unit de la Gran Bretanya i Irlanda del Nord"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Estats Units d'Amèrica"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Illes Verges Americanes"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Servei de telecomunicacions personals universal (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguai"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Ciutat del Vaticà"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Veneçuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis i Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Iemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zàmbia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mòbil (Casa)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Telèfon (Feina)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Desat a"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importar de la targeta SD"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grup i membres del grup"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s s'ha desat a %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "S'esborrarà aquest contacte"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Foto"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Pers truc"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Còpia de seguretat"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Només grup"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Nou grup"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Seleccionar grup"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mòbil 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Afegit"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Mogut"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Seleccionat"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Cancel·lar"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "No hi ha prou memòria"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Eliminat"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Cercar"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Tancar"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Esborrat"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Error"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Trucar"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Sense SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Seleccioni-ho tot"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Error"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Correcte"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Desar"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Afegir contactes"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Nom de l'assistent"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Esborrar grup"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Nom grup"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Melodia de grup"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Gravar vídeo"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Substituir"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Marcatge ràpid"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Missat"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Definir melodia"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Tots els contactes"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Empresa"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Editar contactes"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Obtenir correu electrònic"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Obtenir número"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Sense Grup"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Participant"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Definir imatge"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Marcatge abreujat sense utilitzar"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Esborrar contactes"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Editar grups"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Correu electrònic"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Afegir als preferits"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Editar grup"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Buit"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Desar contacte"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Seleccioni contacte"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Afegir grup"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memòria plena"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Eliminant..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "No es pot afegir el contacte al grup"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Actualitzar"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Canc"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Contactes"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Copiar"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Crear"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Correu electrònic"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Missatge"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Moure"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telèfon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Desconegut"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videotrucada"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Esborrar"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Finalit."
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Editar"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "Acceptar"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Enviar dades de contacte"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Cercar Servidor Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Nom Cognoms"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Cognoms Nom"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Per veure més camps, toqui el botó de la dreta"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/cs.po b/po/cs.po
new file mode 100644
index 0000000..bbb8847
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Klávesn."
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Oblíbené"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Rychlá volba"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Hlasová schránka"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Protok."
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Číslo rychlé volby není přiřazeno. Chcete ho přiřadit?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Požadavek se nezdařil"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Požadavek byl úspěšně dokončen"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Tísňové volání"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Žádné protokoly"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Žádné oblíbené"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Zpráva odstraněna"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Byla překročena maximální délka telefonního čísla"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Odstraňování protokolů..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Odstraňování oblíbených položek..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Probíhá inicializace. Opakujte akci později..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Vypnout zvuk"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Zapnout zvuk"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Předch. obraz."
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Zpět k hovoru"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Příchozí hovor"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Odchozí hovor"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Zmeškaný hovor"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Odeslaná zpráva"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Přijatá zpráva"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Odmítnutý hovor"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Blokovaný hovor"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Upravit číslo před vytočením"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Odeslat e-mail"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Vybrat protokoly"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Vyberte kontakty rychlé volby"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Odblok."
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Změnit kontakt"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Přidat %dsekundovou pauzu"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Přidat čekání"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Zmeškané"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Konec"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Vlastní"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobil"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Domů"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Práce"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (domů)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (práce)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Číslo asistenta"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pager"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Další"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Telefon do vozidla"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Domů 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Práce, hlavní"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Rádio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Všechny kontakty"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Nepřiřazeno"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Číslo služby"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Skupiny"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Výchozí"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Zvonění"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Webové stránky"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-mail"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Číslo"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Poznámka"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Poštovní adresa"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Podrobnosti"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Společnost"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Pořadí zobrazení jména"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Vlastní číslo"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Jméno"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Příjmení"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Druhé jméno"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Titul za jménem"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Přezdívka"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Exportovat kontakty"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Vybrat kontakty"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "PSČ"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Země"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Kraj"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Město"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Ulice"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Uloženo do %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Často používané kontakty"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Zkopírováno"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exportováno"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Odstraňování kontaktů..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Probíhá přesouvání"
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopírování..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Probíhá import kontaktů ze SIM karty..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Probíhá import kontaktů z vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Probíhá export kontaktů do %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Čtení vizitky vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importováno"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Nepoužito"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Všechny přip. kontakty"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Připojené kontakty"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Pracovní zařazení"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Oddělení"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Název skupiny"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Přidat účet"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Přidávání členů do skupiny..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Zobrazit"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d kontaktů"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Přejmenovat"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Vztah"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Žádná historie"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Žádné aktivity"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Přidávání..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Další informace"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Poštovní přihrádka"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Stát"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Přátelé"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Rodina"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Spolupracovníci"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Práce"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Typ vibrací"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Nastavit výchozí"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Událost"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Sdílet informace o kontaktu"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 kontakt"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Export na SIM kartu"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Historie"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Aktivity"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Skupinová zpráva"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Skupinový e-mail"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Žádný název"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Neplatná e-mailová adresa"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Vyplňte alespoň jedno pole a jméno"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Nepodařilo se otevřít databázi"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Již přidáno"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Název skupiny již existuje"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Žádná skupina"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Žádné číslo"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Žádné e-mailové adresy"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Žádné kontakty"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Paměť karty SIM je prázdná"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Byl překročen maximální počet položek"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Neplatné číslo"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Paměť karty SIM je plná"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Můžete importovat kontakty ze SIM karty do telefonu pomocí položek Nastavení "
+"> Import kontaktů nebo je synchronizovat s kontakty na webových účtech "
+"pomocí účtů v nastavení"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Žádné protokoly. Pokud zavoláte nebo přijmete hovor, nebo odešlete či "
+"přijmete zprávu, protokoly se objeví"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Vizitky se nepodařilo odeslat"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Označit jako výchozí číslo"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Označit jako výchozí e-mail"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Obrázek"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Fotografovat"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Odstranit fotografii"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Přidat na domovskou obrazovku"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Uložit kontakt do"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Uložit do"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importovat kontakty ze SIM karty"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Napřed křestní jméno"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Napřed příjmení"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Zobrazit"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Skrýt"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Odeslat vizitku"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Vytvořit skupinu"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Vyberte skupinu"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Import kontaktů"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Připojit kontakt"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Zrušit propojení"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Všechny připojené kontakty budou odstraněny"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Přidat k oblíbeným položkám"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Upravit skupinu"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Př. člena"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Přidat do skupiny"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Přidáno k oblíbeným položkám"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Neznámé"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Narozeniny"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Výročí"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Neděle"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Pondělí"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Úterý"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Středa"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Čtvrtek"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Pátek"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Sobota"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Asistent"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Bratr"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Dítě"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Domácí partner"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Otec"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Přítel"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Vedoucí"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Matka"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Rodič"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Odkazuje"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Příbuzný"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Sestra"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Manžel(ka)"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Další informace"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afghánistán"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albánie"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Alžírsko"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Americká Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua a Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Arménie"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Austrálie"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Australská externí teritoria"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Rakousko"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Ázerbájdžán"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamy"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrajn"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladéš"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Bělorusko"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgie"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "BENIN"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhútán"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolívie"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius a Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosna a Hercegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazílie"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Britské Panenské ostrovy"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulharsko"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kambodža"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Kapverdy"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Kajmanské ostrovy"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Středoafrická republika"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "CHAD"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Čína"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Kolumbie"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "COMOROS"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cookovy ostrovy"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Kostarika"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Pobřeží slonoviny"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Chorvatsko"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curacao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Kypr"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Česká republika"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Demokratická lidová republika Kongo"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Demokratická republika Kongo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor-Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Dánsko"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Džibuti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominikánská republika"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ekvádor"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egypt"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Rovníková Guinea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonsko"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopie"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falklandské ostrovy"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Faerské ostrovy"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fidži"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finsko"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Francouzská jižní území"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Francouzská Guayana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Francouzská Polynésie"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabun"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambie"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Gruzie"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Německo"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Řecko"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grónsko"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guayana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hongkong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Maďarsko"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Island"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Indie"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonésie"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Prémiová sazba při mezinárodních hovorech (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Služba sdílených nákladů při mezinárodních hovorech (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Irán"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irák"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irsko"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Izrael"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamajka"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japonsko"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordánsko"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazachstán"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Keňa"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuvajt"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kyrgyzstán"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Demokratická lidová republika Lao"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Lotyšsko"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Libanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Libérie"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libye"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Lichtenštejnsko"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Litva"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Lucemburk"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "MADAGASKAR"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malajsie"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maledivy"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshallovy ostrovy"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinik"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAURETÁNIE"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAURITIUS"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexiko"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronésie"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldávie"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monako"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolsko"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Černá hora"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Maroko"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambik"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "NAMIBIE"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepál"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Nizozemsko"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nová Kaledonie"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nový Zéland"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nikaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "NIGER"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigérie"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Severní Mariany"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norsko"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Omán"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pákistán"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Nová Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipíny"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polsko"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugalsko"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Portoriko"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Katar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Rumunsko"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Ruská federace"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Svatá Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Svatý Kitts a Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Svatá Lucie"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre a Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Svatý Vincent a Grenadiny"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Svatý Tomáš a Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saúdská Arábie"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Srbsko"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelly"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Svatý Martin"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovensko"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovinsko"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Šalomounovy ostrovy"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somálsko"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Jihoafrická republika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Španělsko"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Srí Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Súdán"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swazijsko"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Švédsko"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Švýcarsko"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Syrská arabská republika"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Tchaj-wan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tádžikistán"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzánie"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telekomunikace pro pomoc při katastrofách (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thajsko"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Bývalá jugoslávská republika Makedonie"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad a Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunisko"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turecko"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistán"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Ostrovy Turks a Caicos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukrajina"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Spojené arabské emiráty"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Spojené království Velké Británie a Severního Irska"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Spojené státy americké"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Spojené státy - Panenské ostrovy"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Univerzální osobní telekomunikační služba (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistán"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Městský stát Vatikán"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis a Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Jemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambie"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobil (domů)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobil (práce)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Uloženo do"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Import z SD karty"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Skupina a členové skupiny"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s byl uložen do %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Kontakt bude odstraněn"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Fotografie"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Číselník"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Zálohování"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Pouze skupiny"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Nová skupina"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Vyberte skupinu"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobil 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Přidáno"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Přesunuto"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Vybráno"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Zrušit"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Nedostatek paměti"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Odstraněno"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Hledat"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Zavřít"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Odstraněno"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Chyba"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Volat"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Žádná SIM karta"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Vybrat vše"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Nezdařilo se"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Dokončeno"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Uložit"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Přidat kontakty"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Jméno asistenta"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Odstranit skupinu"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Název skupiny"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Skup. vyzv. tón"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Nahrát video"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Nahradit"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Rychlá volba"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Zpráva"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Nastavit vyzváněcí tón"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Všechny kontakty"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Společnost"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Upravit kontakty"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Získat e-mail"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Získat číslo"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Žádná skupina"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Účastník"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Nastavit obrázek"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Rychlá volba není používána"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Odstranit kontakty"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Upravit skupiny"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Přidat do oblíbených položek"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Upravit skupinu"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Prázdné"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Uložit kontakt"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Vybrat kontakt"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Přidat skupinu"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Paměť je plná"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Odebírání..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Nelze přidat kontakt do skupiny"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Aktualizovat"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Zruš."
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Kontakty"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopírovat"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Vytvořit"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Zpráva"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Přesunout"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Neznámé"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videohovor"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Odstranit"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Hotovo"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Upravit"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Odeslat kontaktní údaje"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Hledat server Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Křestní jméno Příjmení"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Příjmení Křestní jméno"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Chcete-li zobrazit další pole, klepněte na tlačítko napravo"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/da.po b/po/da.po
new file mode 100644
index 0000000..f5013c6
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Tastatur"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favoritter"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Hurtigopkald"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Telefonsvarer"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Logger"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Intet hurtigopkaldsnummer. Tildel et nu?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Anmodning mislykkedes"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Anmodning gennemført"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Nødopkald"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Ingen logger"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Ingen favoritter"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Meddelelsen er slettet"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Maksimale længde på telefonnummer overskredet"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Sletter opkaldslogger ..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Sletter favoritter ..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Initialiserer. Prøv senere ..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Lyd fra"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Lyd til"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Forrige skærm"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Tilbage til opkald"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Indgående opkald"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Udgående opkald"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Ubesvaret opkald"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Sendt meddelelse"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Modtaget meddelelse"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Afvist opkald"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Blokeret opkald"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Redigér nummer før opkald"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Send e-mail"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Vælg opkaldslogger"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Vælg kontakter med hurtigkald"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Ophæv blokering"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Skift kontakt"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Tilføj pause på %d sek."
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Tilføj vent"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Missede"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Afslut"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Brugerdefineret"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobil"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Hjem"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Arbejde"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (privat)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (arbejde)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Assistentens nummer"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Personsøger"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Anden"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Biltelefon"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Hjem 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Hovedfirma"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Alle kontakter"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Ikke tildelt"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Tjenestenummer"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grupper"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Standard"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Ringetone"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Websted"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-mail"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Nummer"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Bemærkning"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Postadresse"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Detaljer"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Firma"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Rækkefølge for visningsnavn"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Eget nummer"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Fornavn"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Efternavn"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Mellemnavn"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Titel"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Kaldenavn"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Eksportér kontakter"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Vælg kontakter"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Postnummer"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Land"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Region"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "By"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Vej"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Gemt i %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Hyppigt kontaktede"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Kopieret"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Eksporteret"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Sletter kontakter..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Flytter ..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopierer ..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importerer SIM-kontakter..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importerer kontakter fra vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Eksporterer kontakter til %s ..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vKort"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Læser vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importeret"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Ikke tilgængelig"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Alle kædede kontakter"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Kædede kontakter"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Jobtitel"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Afdeling"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Gruppenavn"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Tilføj konto"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Føjer medlemmer til gruppe..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Vis"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d kontakter"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Omdøb"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Forhold"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Ingen artikler"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Ingen aktiviteter"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Tilføjer..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Yderligere oplysninger"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Postboks"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Stat"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Venner"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Familie"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Kolleger"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Arbejde"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Vibrationsmønster"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Indstil standard"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Begivenhed"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Del kontaktoplysninger"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 kontakt"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Eksportér til SIM-kort"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Oversigt"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Aktiviteter"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Gruppemeddelelse"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Gruppe-e-mail"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Intet navn"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Ugyldig e-mail-adresse"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Udfyld mindst et felt samt navn"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Fik ikke adgang til database"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Allerede tilføjet"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Gruppenavnet bruges allerede"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Ingen gruppe"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Intet nummer"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Ingen e-mail-adresser"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Ingen kontakter"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM-hukommelse tom"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Det maksimale antal poster er overskredet"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Ugyldigt nummer"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM-hukommelsen er fuld"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Du kan importere kontakter fra SIM-kort i din telefon i Indstillinger > "
+"Importér kontakter eller synkronisere med webkontokontakter vha. Konti i "
+"Indstillinger"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Ingen logs. Når du foretager/modtager et opkald eller sender/modtager en "
+"meddelelse, vises logs"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Kan ikke sende visitkort"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Markér som standardnummer"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Markér som standard-e-mail"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Billede"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Tag et billede"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Fjern billede"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Føj til startskærm"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Gem kontakt på"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Gem på"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importér SIM-kontakter"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Først fornavn"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Først efternavn"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Vis"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Skjul"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Send visitkort"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Opret gruppe"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Vælg gruppe"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Importér kont."
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Kæd kontakt"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Fjern kæde"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Alle kædede kontakter bliver slettet"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Føj til favoritter"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Rediger gruppe"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Tilf medl"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Føj til gruppe"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Føjet til Foretrukne"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Ukendt"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Fødselsdag"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Mærkedag"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Søndag"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Mandag"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Tirsdag"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Onsdag"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Torsdag"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Fredag"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Lørdag"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistent"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Bror"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Barn"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Samlever"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Far"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Ven"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Administration"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Mor"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Forælder"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Henvist af"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Slægtning"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Søster"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Ægtefælle"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "Chat"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Flere oplysninger"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afghanistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albanien"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algeriet"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Amerikansk Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua og Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenien"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australien"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Australian External Territories"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Østrig"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Aserbajdsjan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamaøerne"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Hviderusland"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgien"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "BENIN"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius og Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnien-Hercegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brasilien"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "De Britiske Jomfruøer"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgarien"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Cambodja"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Cameroun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cape Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Caymanøerne"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Den Centralafrikanske Republik"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "TCHAD"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Kina"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "COMORERNE"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cookøerne"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Elfenbenskysten"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Kroatien"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curacao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Cypern"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Den Tjekkiske Republik"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Nordkorea"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Den Demokratiske Republik Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor-Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danmark"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Den Dominikanske Republik"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Ægypten"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Ækvatorial Guinea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estland"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopien"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falklandsøerne"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Færøerne"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finland"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Frankrig"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "De franske besiddelser i det sydlige Indiske Ocean og Antarktis"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Fransk Gyana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Fransk Polynesien"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Tyskland"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grækenland"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grønland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Ungarn"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Island"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Indien"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesien"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irland"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italien"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japan"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordan"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazakhstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgisistan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Den Demokratiske Folkerepublik Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Letland"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Libanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libyen"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Litauen"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxembourg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "MADAGASCAR"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaysia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldiverne"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshalløerne"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAURETANIEN"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAURITIUS"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexico"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronesien"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldova"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongoliet"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marokko"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambique"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "NAMIBIA"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Nederlandene"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Ny Kaledonien"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "New Zealand"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Nordmarianerne"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norge"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Ny Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filippinerne"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polen"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Rumænien"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Den Russiske Føderation"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Sankt Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts og Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre og Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent og Grenadinerne"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome og Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudi-Arabien"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbien"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychellerne"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapore"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovakiet"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenien"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Salomonøerne"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Sydafrika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Spanien"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Sverige"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Schweiz"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Den Syriske Arabiske Republik"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadsjikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thailand"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Makedonien (tidligere Jugoslavien)"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad og Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunesien"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Tyrkiet"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks- og Caicosøerne"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraine"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "De Forenede Arabiske Emirater"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Storbritannien og Nordirland"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "USA"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "De amerikanske Jomfruøer"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatikanstaten"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis og Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobil (privat)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobil (arbejde)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Gemt i"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importér fra SD-kort"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Gruppe og gruppemedlemmer"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s gemt i %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Denne kontakt vil blive slettet"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Billede"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Opkalder"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Sikkerhedskopi"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Kun gruppe"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Ny gruppe"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Vælg gruppe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobil 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Tilføjet"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Flyttet"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Valgte"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Annuller"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Ikke nok hukommelse"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Fjernet"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Søg"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Luk"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Slettet"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Fejl"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Opkald"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Intet SIM-kort"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Vælg alle"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Mislykkedes"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Fuldført"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Gem"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Tilføj kontakter"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Assistentens navn"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Slet gruppe"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Gruppenavn"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Grup. rin.tone"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Optag videoklip"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Erstat"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Hurtigopkald"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Medd."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Angiv ringetone"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Alle kontakter"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Firma"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Rediger kontakter"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Hent e-mail"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Hent nummer"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Ingen gruppe"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Deltager"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Indstil billede"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Hurtigopkald er ikke i brug"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Slet kontakter"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Rediger grupper"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Føj til favoritter"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Rediger gruppe"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Tom"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Gem kontakt"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Vælg kontakt"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Tilføj gruppe"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Hukommelsen er fuld"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Fjerner..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Kunne ikke føje kontakten til gruppen"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Opdatér"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Annuller"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Kontakter"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopiér"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Opret"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Meddelelse"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Flyt"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Ukendt"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videoopkald"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Slet"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Udført"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Rediger"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Send kontaktoplysninger"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Søg Exchange-server"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Fornavn Efternavn"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Efternavn Fornavn"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Tap på knappen til højre for flere felter"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/de_DE.po b/po/de_DE.po
new file mode 100644
index 0000000..82c773e
--- /dev/null
+++ b/po/de_DE.po
@@ -0,0 +1,1772 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Tastenfeld"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favoriten"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Kurzwahl"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Mailbox"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Protok."
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Keine Kurzwahlnummer. Jetzt zuweisen?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Anforderung fehlgeschlagen"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Erfolg anfordern"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Notruf"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Keine Protokolle"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Keine Favoriten"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Nachrichten gelöscht"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Maximale Länge für Telefonnummer überschritten"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Protokolle werden gelöscht..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Favoriten werden gelöscht..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Initialisierung. Später versuchen..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Ton aus"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Ton ein"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Zurück"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Zurück zu Anruf"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Eingehender Anruf"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Ausgehender Anruf"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Anr. in Abwesenheit"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Gesendete Nachricht"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Empfangene Nachricht"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Abgelehnter Anruf"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Anruf gesperrt"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Nummer vor Anruf bearbeiten"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "E-Mail senden"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Protokolle auswählen"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Kontakte für die Kurzwahl auswählen"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Aufheben"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Kontakt ändern"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "%d Sek. Pause hinzufügen"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Pause hinzufügen"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Unbeantwortet"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Beenden"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Benutzerdefiniert"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobil"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Privat"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Arbeit"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (Privat)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (Arbeit)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Nummer des Assistenten"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pager"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Andere"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Autotelefon"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Zuhause 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Hauptnummer Unternehmen"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Alle Kontakte"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Nicht zugewiesen"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Dienstnummer"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Gruppen"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Standard"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Klingelton"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Webseite"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-Mail"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Nummer"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Memo"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Postanschrift"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Details"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Firma"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Reihenfolge des Anzeigenamens"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Eigene Rufnummer"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Vorname"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Nachname"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Zweiter Vorname"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Namenszusatz"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Spitzname"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Kontakte exportieren"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Kontakte auswählen"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Postleitzahl"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Land"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Region"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Stadt"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Straße"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Gespeichert in %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Häufig kontaktiert"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Kopiert"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exportiert"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Kontakte werden gelöscht..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Verschiebevorgang aktiv..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Wird kopiert..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "SIM-Kontakte werden importiert..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Kontakte werden von der Visitenkarte importiert..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Kontakte werden nach %s exportiert..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "Visitenkarte"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Visitenkarte wird gelesen..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importiert"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Entfällt"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Alle verknü. Kontakte"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Verknüpfte Kontakte"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Beruf"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Abteilung"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Gruppenname"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Konto hinzufügen"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Mitglieder werden zur Gruppe hinzugefügt..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Anzeigen"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d Kontakte"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Umbenennen"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Beziehung"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Keine Verläufe"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Keine Aktivitäten"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Wird hinzugefügt..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Zusätzliche Informationen"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Postfach"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Bundesland"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Freunde"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Familie"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Arbeitskollege"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Büro"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Vibrationsmuster"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Als Standard festlegen"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Ereignis"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Kontaktinformationen senden"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 Kontakt"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Auf SIM-Karte exportieren"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Verlauf"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Aktivitäten"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Gruppennachricht"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Gruppen-E-Mail"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Kein Name"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Ungültige E-Mail-Adresse"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Füllen Sie mindestens ein Feld und einen Namen aus."
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Auf Datenbank konnte nicht zugegriffen werden"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Bereits hinzugefügt"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Gruppenname wird bereits verwendet"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Keine Gruppe"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Keine Nummer"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Keine E-Mail-Adressen"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Keine Kontakte"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM-Speicher leer"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Maximale Anzahl an Einträgen überschritten"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Ungültige Nummer"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM-Speicher voll"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Sie können Kontakte über “Einstellungen” > “Kontakte importieren” von einer "
+"SIM-Karte auf das Telefon importieren oder die Kontakte in den Einstellungen "
+"mit Webkontokontakten synchronisieren."
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Keine Protokolle. Nach dem Tätigen/Empfangen eines Anrufs oder dem Senden/"
+"Empfangen von Nachrichten werden Protokolle angezeigt"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Visitenkarten konnte nicht gesendet werden"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Als Standardnummer markieren"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Als Standard-E-Mail markieren"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Bild"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Foto aufnehmen"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Foto entfernen"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Elemente hinzufügen"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Kontakt speichern in"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Speichern in"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "SIM-Kontakte importieren"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Vorname zuerst"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Nachname zuerst"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Anzeigen"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Ausblenden"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Visitenkarte senden"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Gruppe erstellen"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Gruppe auswählen"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Kontaktimport"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Kontakt verknüpfen"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Verknüpfung entfernen"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Alle verknüpften Kontakte werden gelöscht."
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Zu Favoriten hinzufügen"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Gruppe bearbeiten"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Mitglied hzfg."
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Zur Gruppe hinzufügen"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Zu Favoriten hinzugefügt"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Unbekannt"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Geburtstag"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Jahrestag"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Sonntag"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Montag"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Dienstag"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Mittwoch"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Donnerstag"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Freitag"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Samstag"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistent"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Bruder"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Kind"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Lebensgefährte"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Vater"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Freund"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Manager"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Mutter"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Elternteil"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Bezugnahme von"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Verwandter"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Schwester"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Ehepartner"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "Chat"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Weitere Informationen"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afghanistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albanien"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algerien"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Amerikanisch-Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua und Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentinien"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenien"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australien"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Externe Territorien von Australien"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Österreich"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Aserbaidschan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesch"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Weißrussland"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgien"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivien"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius und Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnien und Herzigowina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brasilien"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Britische Jungferninseln"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgarien"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kambodscha"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Kapverden"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Kaimaninseln"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Zentralafrikanische Republik"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Chad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "China"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Kolumbien"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comoros"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cookinseln"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Elfenbeinküste"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Kroatien"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curaçao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Zypern"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Tschechische Republik"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Demokratische Volksrepublik Korea"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Demokratische Republik Kongo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Osttimor"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Dänemark"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominikanische Republik"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Ägypten"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Äquatorialguinea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estland"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Äthiopien"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falklandinseln"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Färöer-Inseln"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fidschi"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finnland"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Frankreich"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Französische Südgebiete"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Französisch-Guayana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Französisch-Polynesien"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabun"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Deutschland"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Griechenland"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grönland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hongkong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Ungarn"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Island"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Indien"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesien"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irland"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italien"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaika"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japan"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordanien"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kasachstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenia"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgisistan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Demokratische Volksrepublik Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Lettland"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Libanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libyen"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Litauen"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxemburg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagaskar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaysia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Malediven"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshall-Inseln"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAURETANIEN"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAURITIUS"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexiko"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronesien"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldavien"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolei"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marokko"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mosambik"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibia"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Niederlande"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Neukaledonien"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Neuseeland"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Nördliche Marianen"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norwegen"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Neuguinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Philippinen"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polen"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Katar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Rumänien"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Russische Föderation"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "St. Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "St. Kitts und Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "St. Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre und Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent und die Grenadinen"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome und Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudi-Arabien"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbien"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychellen"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovakei"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slowenien"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Salomonen"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Südafrika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Spanien"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Schweden"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Schweiz"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Arabische Republik Syrien"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadschikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tansania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thailand"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Die ehemalige jugoslawische Republik Mazedonien"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad und Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunesien"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Türkei"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks- und Caicosinseln"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraine"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Vae"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Vereinigtes Königreich Großbritannien und Nordirland"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "USA"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Amerikanische Jungferninseln"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Usbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Staat Vatikanstadt"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis und Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Jemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Sambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobil (Privat)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobil (Arbeit)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Gespeichert unter"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Von SD-Karte importieren"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Gruppen und Gruppenmitglieder"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s gespeichert in %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Dieser Kontakt wird gelöscht."
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Foto"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Datensicherung"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Nur Gruppe"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Neue Gruppe"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Gruppe auswählen"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobile 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Hinzugefügt"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Verschoben"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Ausgewählt"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Abbrechen"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Speicher voll"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Entfernt"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Suche"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Schließen"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Gelöscht"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Fehler"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Anruf"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Keine SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Alle auswählen"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Fehlgeschlagen"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Abgeschlossen"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Speichern"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Kontakte hinzufügen"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Name des Assistenten"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Gruppe löschen"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Gruppenname"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Gru.-Klingelton"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Video aufzeichnen"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Ersetzen"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Kurzwahl"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Nachr."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Klingelton festlegen"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Alle Kontakte"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Firma"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Kontakte bearbeiten"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "E-Mail abrufen"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Nummer abrufen"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Keine Gruppe"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Teilnehmer"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Bild festlegen"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Kurzwahl wird nicht verwendet."
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Kontakte löschen"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr ""
+#~ "Gruppen\n"
+#~ "bearbeiten"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-Mail"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Zu Favoriten hinzufügen"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Gruppe bearbeiten"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Leer"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Kontakt speichern"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Kontakt auswählen"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Gruppe hinzufügen"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Speicher voll"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Entferne..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Kontakt konnte der Gruppe nicht hinzugefügt werden"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Aktualisieren"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Abbrech."
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Kontakte"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopieren"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Erstellen"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-Mail"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Nachricht"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Verschieben"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Unbekannt"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videoanruf"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Löschen"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "OK"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Bearbeiten"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Kontaktdetails senden"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Exchange-Server suchen"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Vorname Nachname"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Nachname Vorname"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Tippen Sie auf die rechte Taste, um weitere Felder anzuzeigen"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/el_GR.po b/po/el_GR.po
new file mode 100644
index 0000000..4af26dc
--- /dev/null
+++ b/po/el_GR.po
@@ -0,0 +1,1773 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Πληκτρ."
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Αγαπημένα"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Ταχεία κλήση"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Τηλεφωνητής"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Αρχεία καταγρ."
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Δεν υπάρχει αριθμός ταχείας κλήσης. Θέλετε να ορίσετε έναν τώρα;"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Αποτυχία αιτήματος"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Επιτυχές αίτημα"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Κλήση έκτακτης ανάγκης"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Δεν υπάρχουν αρχεία καταγραφής"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Δεν υπάρχουν αγαπημένα"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Το μήνυμα διαγράφηκε"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Έγινε υπέρβαση του μέγιστου μήκους αριθμού τηλεφώνου"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Διαγραφή αρχείων κλήσεων..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Διαγραφή αγαπημένων..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Προετοιμασία. Προσπαθήστε αργότερα..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Απενεργοποίηση ήχου"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Ενεργοποίηση ήχου"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Προηγούμ. οθόνη"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Επιστροφή στην κλήση"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Εισερχόμενη κλήση"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Εξερχόμενη κλήση"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Αναπάντητη κλήση"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Απεσταλμένο μήνυμα"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Μήνυμα που έχει ληφθεί"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Απορριμμένη κλήση"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Αποκλεισμένη κλήση"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Επεξεργασία αριθμού πριν από την κλήση"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Αποστολή email"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Επιλογή αρχείων καταγραφής"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Επιλογή επαφών ταχείας κλήσης"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Κατάργ. αποκλ."
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Αλλαγή επαφής"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Προσθήκη παύσης %d δευτ."
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Προσθήκη αναμονής"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Αναπάντητες"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Έξοδος"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Προσαρμοσμένη"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Κινητό"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Σπίτι"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Εργασία"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Φαξ (Οικίας)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Φαξ (Εργασία)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Αριθμός βοηθού"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Συσκευή τηλεειδοποίησης"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Άλλο"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Τηλέφωνο"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Φαξ"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Τηλέφωνο αυτοκινήτου"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Σπίτι 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Εταιρικό βασικό"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Ραδιόφωνο"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Όλες οι επαφές"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Δεν έχει αντιστοιχηθεί"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Αριθμός υπηρεσίας"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Τηλέφωνο"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Ομάδες"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Προεπιλογή"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Ήχος κλήσης"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Ιστοσελίδα"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Email"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Αριθμός"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Σημείωση"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Ταχυδρομική διεύθυνση"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Λεπτομέρειες"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Εταιρεία"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Σειρά εμφανιζόμενου ονόματος"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Ο αριθμός μου"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Όνομα"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Επώνυμο"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Πατρώνυμο"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Επίθημα"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Υποκοριστικό"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Εξαγωγή επαφών"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Επιλογή επαφών"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Ταχυδρομικός κώδικας"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Χώρα"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Επαρχία"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Πόλη"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Οδός"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Αποθηκεύτηκε στο %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Πιο συχνή επικοινωνία"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Αντιγράφηκε"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Έγινε εξαγωγή"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Διαγραφή επαφών..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Μετακίνηση..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Αντιγραφή..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Εισαγωγή επαφών SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Εισαγωγή επαφών από την vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Εξαγωγή επαφών σε %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Ανάγνωση vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Έγινε εισαγωγή"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Μη διαθέσιμο"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Όλες οι συνδεδ. επαφές"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Συνδεδεμένες επαφές"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Τίτλος εργασίας"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Τμήμα"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Όνομα ομάδας"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Προσθήκη λογαριασμού"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Προσθήκη μελών σε ομάδα..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Προβολή"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d επαφές"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Μετονομασία"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Σχέση"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Κανένα ιστορικό"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Δεν υπάρχουν δραστηριότητες"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Προσθήκη..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Πρόσθετες πληροφορίες"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Ταχυδρομική θυρίδα"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Πολιτεία"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Φίλοι"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Οικογένεια"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Συνεργάτες"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Εργασία"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Μοτίβο δονήσεων"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Ορισμός προεπιλεγμένου"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Συμβάν"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Κοινή χρήση πληροφοριών επαφής"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 επαφή"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Εξαγωγή στην κάρτα SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Πληροφορία"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Ιστορικό"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Δραστηριότητες"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Ομαδικό μήνυμα"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Ομαδικό email"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Κανένα όνομα"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Μη έγκυρη διεύθυνση email"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Συμπληρώστε τουλάχιστον ένα πεδίο καθώς και το όνομα"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Αποτυχία πρόσβασης βάσης δεδομένων"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Προστέθηκε ήδη"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Το όνομα ομάδας υπάρχει ήδη"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Καμία ομάδα"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Κανένας αριθμός"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Δεν υπάρχουν διευθύνσεις email"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Καμία επαφή"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Μνήμη SIM κενή"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Ξεπεράστηκε ο μέγιστος αριθμός καταχωρίσεων"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Μη έγκυρος αριθμός"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Μνήμη SIM πλήρης"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Μπορείτε να εισαγάγετε επαφές από την κάρτα SIM στο τηλέφωνό σας από το "
+"μενού “Ρυθμίσεις > Εισαγωγή επαφών” ή να κάνετε συγχρονισμό με τις επαφές "
+"από το λογαριασμό σας web χρησιμοποιώντας την επιλογή “λογαριασμοί” από τις "
+"ρυθμίσεις"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Δεν υπάρχουν αρχεία καταγραφής. Μόλις πραγματοποιήσετε/λάβετε μια κλήση ή "
+"αποστείλετε/λάβετε ένα μήνυμα, τα αρχεία καταγραφής θα εμφανιστούν"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Δεν είναι δυνατή η αποστολή καρτών ονόματος"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Ορισμός ως προεπιλεγμένου αριθμού"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Σήμανση ως προεπιλεγμένης διεύθυνσης ηλεκτρονικού ταχυδρομείου"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Εικόνα"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Λήψη φωτογραφίας"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Κατάργηση φωτογραφίας"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Προσθήκη στην Αρχική οθόνη"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Αποθήκευση επαφής σε"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Αποθήκευση σε"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Εισαγωγή επαφών SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Πρώτα το όνομα"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Πρώτα το επίθετο"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Εμφάνιση"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Απόκρυψη"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Αποστολή επαγγελματικής κάρτας"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Δημιουργία ομάδας"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Επιλογή ομάδας"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Εισαγωγή επαφών"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Σύνδεση επαφής"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Αποσύνδεση"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Όλες οι συνδεδεμένες επαφές θα διαγραφούν"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Προσθήκη στα αγαπημένα"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Επεξεργασία ομάδας"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Πρ.μέλους"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Προσθήκη στην ομάδα"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Προστέθηκε στα αγαπημένα"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Άγνωστο"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Γενέθλια"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Επέτειος"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Κυριακή"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Δευτέρα"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Τρίτη"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Τετάρτη"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Πέμπτη"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Παρασκευή"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Σάββατο"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Βοηθός"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Αδερφός"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Παιδί"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Τοπικός συνεργ."
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Πατέρας"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Φίλος"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Διευθυντής"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Μητέρα"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Γονέας"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Συνεργάτης"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Αναφορά από"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Συγγενής"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Αδερφή"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Σύζυγος"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Περισσότερες πληροφορίες"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Αφγανιστάν"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Αλβανία"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Αλγερία"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Αμερικανική Σαμόα"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Ανδόρα"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Αγκόλα"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Ανγκουίλα"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Αντίγκουα και Μπαρμπούντα"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Αργεντινή"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Αρμενία"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Αρούμπα"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Αυστραλία"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Εξωτερικές επικράτειες της Αυστραλίας"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Αυστρία"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Αζερμπαϊτζάν"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Μπαχάμες"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Μπαχρέιν"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Μπανγκλαντές"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Μπαρμπέιντος"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Λευκορωσία"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Βέλγιο"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Μπελίζ"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "ΜΠΕΝΙΝ"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Βερμούδες"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Μπουτάν"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Βολιβία"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Μπονέρ, Άγιος Ευστάθιος και Σάμπα"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Βοσνία-Ερζεγοβίνη"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Μποτσουάνα"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Βραζιλία"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Βρετανικές Παρθένοι νήσοι"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Μπρουνέι Νταρ-ες-σαλάμ"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Βουλγαρία"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Μπουργκίνα Φάσο"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Μπουρούντι"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Καμπότζη"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Καμερούν"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Καναδάς"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Πράσινο Ακρωτήρι"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Νησιά Κέιμαν"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Κεντροαφρικανική Δημοκρατία"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "ΤΣΑΝΤ"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Χιλή"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Κίνα"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Κολομβία"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "ΚΟΜΟΡΕΣ"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Κονγκό"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Νήσοι Κουκ"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Κόστα Ρίκα"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Ακτή Ελεφαντοστού"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Κροατία"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Κούβα"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Κουρασάο"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Κύπρος"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Δημοκρατία της Τσεχίας"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Λαϊκή Δημοκρατία της Κορέας"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Λαϊκή Δημοκρατία του Κονγκό"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Τιμόρ-Λέστε"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Δανία"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Ντιέγκο Γκαρσία"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Τζιμπουτί"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Ντομίνικα"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Δομινικανή Δημοκρατία"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Εκουαδόρ"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Αίγυπτος"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "Ελ Σαλβαδόρ"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Ισημερινή Γουινέα"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Ερυθραία"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Εσθονία"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Αιθιοπία"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Νήσοι Φώλκλαντ"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Νήσοι Φερόε"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Φίτζι"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Φινλανδία"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Γαλλία"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Νότια Γαλλικά Εδάφη"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Γαλλική Γουιάνα"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Γαλλική Πολυνησία"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Γκαμπόν"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Γκάμπια"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Γεωργία"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Γερμανία"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Γκάνα"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Γιβραλτάρ"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Ελλάδα"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Γροιλανδία"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Γρενάδα"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Γουαδελούπη"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Γκουάμ"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Γουατεμάλα"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Γουϊνέα"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Γουινέα Μπισσάου"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Γουιάνα"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Αϊτή"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Ονδούρα"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Χονγκ Κονγκ"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Ουγγαρία"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Ισλανδία"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Ινδία"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Ινδονησία"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Υπηρεσία δωρεάν διεθνούς τηλεφωνικού αριθμού"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Υπηρεσία διεθνούς τηλεφωνικού αριθμού υψηλών χρεώσεων (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Υπηρεσία διεθνούς τηλεφωνικού αριθμού κοινής χρέωσης (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Ιράν"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Ιράκ"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Ιρλανδία"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Ισραήλ"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Ιταλία"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Τζαμάικα"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Ιαπωνία"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Ιορδανία"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Καζακστάν"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Κένυα"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Κιριμπάτι"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Κορέα"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Κουβέιτ"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Κιργκιστάν"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Λαϊκή Δημοκρατία του Λάος"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Λετονία"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Λίβανος"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Λεσόθο"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Λιβερία"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Λιβύη"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Λιχτενστάιν"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Λιθουανία"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Λουξεμβούργο"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Μακάο"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "ΜΑΔΑΓΑΣΚΑΡΗ"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Μαλάουι"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Μαλαισία"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Μαλβίδες"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Μάλι"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Μάλτα"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Νήσοι Μάρσαλ"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Μαρτινίκα"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "ΜΑΥΡΙΤΑΝΙΑ"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "ΜΑΥΡΙΚΙΟΣ"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Μεξικό"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Μικρονησία"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Μολδαβία"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Μονακό"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Μογγολία"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Μαυροβούνιο"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Μονσεράτ"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Μαρόκο"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Μοζαμβίκη"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Μιανμάρ"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "ΝΑΜΙΜΠΙΑ"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Ναούρου"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Νεπάλ"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Ολλανδία"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Νέα Καληδονία"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Νέα Ζηλανδία"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Νικαράγουα"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Νίγηρας"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Νιγηρία"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Νιούε"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Νησιά Βόρειες Μαριάνες"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Νορβηγία"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Ομάν"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Πακιστάν"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Παλάου"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Παναμάς"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Παπούα Νέα Γουινέα"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Παραγουάη"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Περού"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Φιλιππίνες"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Πολωνία"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Πορτογαλία"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Πουέρτο Ρίκο"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Κατάρ"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Ρουμανία"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Ρωσική Ομοσπονδία"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ρουάντα"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Αγία Ελένη"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Σαιντ Κιτς και Νέβις"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Αγία Λουκία"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Σεν Πιερ και Μικελόν"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Άγιος Βικέντιος και Γρεναδίνες"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Σαμόα"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "Άγιος Μαρίνος"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Σάο Τομέ και Πρίνσιπε"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Σαουδική Αραβία"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Σενεγάλη"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Σερβία"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Σεϋχέλλες"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Σιέρρα Λεόνε"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Σιγκαπούρη"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Άγιος Μαρτίνος"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Σλοβακία"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Σλοβενία"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Νήσοι Σολομώντα"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Σομαλία"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Νότια Αφρική"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Ισπανία"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Σρι Λάνκα"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Σουδάν"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Σουρινάμ"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Σουαζιλάνδη"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Σουηδία"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Ελβετία"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Αραβική Δημοκρατία της Συρίας"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Ταϊβάν"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Τατζικιστάν"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Τανζανία"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Γραμμή επικοινωνίας για φυσικές καταστροφές (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Ταϊλάνδη"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Πρώην Γιουγκοσλαβική Δημοκρατία της Μακεδονίας"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Τόγκο"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Τοκελάου"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Τόνγκα"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Τρινιντάντ και Τομπάγκο"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Τυνησία"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Τουρκία"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Τουρκμενιστάν"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Νήσοι Τερκ και Κάικος"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Τουβαλού"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Ουγκάντα"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ουκρανία"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Ηνωμένα Αραβικά Εμιράτα"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Ηνωμένο Βασίλειο, Μεγάλη Βρετανία και Βόρειος Ιρλανδία"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Ηνωμένες Πολιτείες Αμερικής"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Ηνωμένες Πολιτείες Παρθένοι νήσοι"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Υπηρεσία διεθνών προσωπικών αριθμών (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Ουρουγουάη"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Ουζμπεκιστάν"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Βανουάτου"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Κράτος της Πόλης του Βατικανού"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Βενεζουέλα"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Βιετνάμ"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Ουώλλις και Φουτούνα"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Υεμένη"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Ζάμπια"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Ζιμπάμπουε"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Προσωπικό κινητό"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Κινητό (Εργασία)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Αποθηκεύτηκε σε"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Εισαγωγή από κάρτα SD"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Ομάδα και μέλη ομάδας"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "Το %s αποθηκεύτηκε στο %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Αυτή η επαφή θα διαγραφεί"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Φωτογραφία"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Κλήση"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Αντίγραφο ασφαλείας"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Μόνο ομάδα"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Νέα ομάδα"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Επιλογή ομάδας"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Κινητό 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Προστέθηκε"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Μετακινήθηκε"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Επιλεγμένο"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Άκυρο"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Ανεπαρκής μνήμη"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Αφαιρέθηκε"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Αναζήτηση"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Κλείσιμο"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Διαγράφηκε"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Σφάλμα"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Κλήση"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Δεν βρέθηκε SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Επιλογή όλων"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Αποτυχία"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Ολοκληρώθηκε"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Αποθ/ση"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Προσθήκη επαφών"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Όνομα βοηθού"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Διαγραφή ομάδας"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Όνομα ομάδας"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Ήχος ομάδας"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Εγγραφή βίντεο"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Αντικατάσταση"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Ταχεία κλήση"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Μήνυμα"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Ρύθμιση ήχου κλήσης"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Όλες οι επαφές"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Εταιρεία"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Επεξεργασία επαφών"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Λήψη email"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Λήψη αριθμού"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Καμία ομάδα"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Συμμετέχων"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Ορισμός εικόνας"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Η ταχεία κλήση δεν χρησιμοποιείται"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Διαγραφή επαφών"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr ""
+#~ "Επεξεργασία\n"
+#~ " ομάδων"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Προσθήκη στα αγαπημένα"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Επεξεργασία ομάδας"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Κενό"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Αποθήκευση επαφής"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Επιλογή επαφής"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Προσθήκη ομάδα"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Μνήμη ημερολογίου πλήρης"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Αφαίρεση..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Δεν είναι δυνατή η προσθήκη της επαφής στην ομάδα"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Ενημέρωση"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Ακύρωση"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Επαφές"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Αντιγραφή"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Δημ/ργία"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Μήνυμα"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Μετακίνηση"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Τηλέφωνο"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Άγνωστο"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Κλήση βίντεο"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Διαγραφή"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Ok"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Επεξεργ."
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Αποστολή λεπτομερειών επαφής"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Αναζήτ. στο διακομ. Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Όνομα Επώνυμο"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Επώνυμο Όνομα"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Για περισσότερα πεδία, πατήστε το κουμπί στα δεξιά"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/en.po b/po/en.po
new file mode 100644
index 0000000..7b9f0ae
--- /dev/null
+++ b/po/en.po
@@ -0,0 +1,1766 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Keypad"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favourites"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Speed dial"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Voicemail"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Logs"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "No speed dial number. Assign one now?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Request failed"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Request success"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Emergency call"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "No logs"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "No favourites"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Message deleted"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Maximum phone number length exceeded"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Deleting logs..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Deleting favourites..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Initialising. Try later..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Sound off"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Sound on"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Previous screen"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Back to call"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Incoming call"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Outgoing call"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Missed call"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Sent message"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Received message"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Rejected call"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Blocked call"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Edit number before call"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Send email"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Select logs"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Select speed dial contacts"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Unblock"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Change contact"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Add %d sec pause"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Add wait"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Missed"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Exit"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Custom"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobile"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Home"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Work"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (home)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (work)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Assistant’s number"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pager"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Other"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telephone"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Car telephone"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Home 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Company main"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "All contacts"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Not assigned"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Service number"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Phone"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Groups"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Ringtone"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Website"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Email"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Number"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Note"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Postal address"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Details"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Company"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Order of display name"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Own number"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "First name"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Last name"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Middle name"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Suffix"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Nickname"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Export contacts"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Select contacts"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Postal code"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Country"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Province"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "City"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Street"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Saved in %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Frequently contacted"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Copied"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exported"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Deleting contacts..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Moving..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Copying..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importing SIM contacts..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importing contacts from vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Exporting contacts to %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Reading vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Imported"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/A"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "All linked contacts"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Linked contacts"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Job title"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Department"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Group name"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Add account"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Adding members to group..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "View"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d contacts"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Rename"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relationship"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "No histories"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "No activities"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Adding..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Additional information"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "PO box"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "State"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Friends"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Family"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Co-workers"
+
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Work"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Vibration pattern"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Set default"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Event"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Share contact information"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 contact"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Export to SIM card"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "History"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Activities"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Group message"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Group email"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "No name"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Invalid email address"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Complete at least one field as well as name"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Failed to access database"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Already added"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Group name already in use"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "No group"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "No number"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "No email addresses"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "No contacts"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM memory empty"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Maximum number of entries exceeded"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Invalid number"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM memory full"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"You can import contacts from SIM card to your phone in Settings > Import "
+"contacts or sync with web account contacts using accounts in settings"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"No logs. After you make/receive a call or send/receive a message, logs will "
+"be shown"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Unable to send namecards"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Mark as default number"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Mark as default email"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Image"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Take a photo"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Remove photo"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Add to home screen"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Save contact to"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Save to"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Import SIM contacts"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "First name first"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Last name first"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Show"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Hide"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Send namecard"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Create group"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Select group"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Import contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Link contact"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Unlink"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "All linked contacts will be deleted"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Add to Favourites"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Edit group"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Add member"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Add to group"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Added to Favourites"
+
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Unknown"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Birthday"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Anniversary"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Sunday"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Monday"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Tuesday"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Wednesday"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Thursday"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Friday"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Saturday"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistant"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Brother"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Child"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Domestic partner"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Father"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Friend"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Manager"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Mother"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Parent"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Referred by"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Relative"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Sister"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Spouse"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "More information"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afghanistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albania"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algeria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "American Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua and Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Australian External Territories"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaijan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Belarus"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgium"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius and Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnia and Herzegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "British Virgin Islands"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Cambodia"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Cameroon"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cape Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Cayman Islands"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Central African Republic"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Chad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "China"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comoros"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cook Islands"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Cote d’Ivoire"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Croatia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curacao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Cyprus"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Czech Republic"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Democratic People's Republic of Korea"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Democratic Republic of the Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor-Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Denmark"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominican Republic"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egypt"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Equatorial Guinea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Ethiopia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falkland Islands"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Faroe Islands"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finland"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "French Southern Territories"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "French Guiana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "French Polynesia"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Germany"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Greece"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Greenland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Hungary"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Iceland"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Iraq"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Ireland"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japan"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordan"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazakhstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kyrgyzstan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Lao People's Democratic Republic"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Latvia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Lebanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libya"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lithuania"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxembourg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagascar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaysia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldives"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshall Islands"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritania"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Mauritius"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexico"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronesia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldova"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Morocco"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambique"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibia"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Netherlands"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "New Caledonia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "New Zealand"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Northern Mariana Islands"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norway"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua New Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Philippines"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Poland"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Romania"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Russian Federation"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Saint Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts and Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre and Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent and the Grenadines"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome and Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudi Arabia"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelles"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapore"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovakia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Solomon Islands"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "South Africa"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Spain"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Sweden"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Switzerland"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Syrian Arab Republic"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tajikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thailand"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "The former Yugoslav Republic of Macedonia"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad and Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunisia"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turkey"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks and Caicos Islands"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraine"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "United Arab Emirates"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "United Kingdom of Great Britain and Northern Ireland"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "United States of America"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "United States Virgin Islands"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatican City State"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis and Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobile (home)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobile (work)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Saved in"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Import from SD card"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Group and group members"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s saved in %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "This contact will be deleted"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Photo"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Dialler"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Backup"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Group only"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "New group"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Select group"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobile 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Added"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Moved"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Selected"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Cancel"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Not enough memory"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Removed"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Search"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Close"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Deleted"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Error"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Call"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "No SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Select all"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Failed"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Success"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Save"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Add contacts"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Assistant’s name"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Delete group"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Group name"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Group ringtone"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Record video"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Replace"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Speed dial"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Msg."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Set ringtone"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "All contacts"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Company"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Edit contacts"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Get email"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Get number"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "No group"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Participant"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Set image"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Speed dial not in use"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Delete contacts"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Edit groups"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Add to favorites"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Edit group"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Empty"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Save contact"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Select contact"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Add group"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memory full"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Removing..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Unable to add contact to group"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Update"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Cancel"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Contacts"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Copy"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Create"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Message"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Move"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Phone"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Unknown"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Video call"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Delete"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Done"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Edit"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Send contact details"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Search Exchange server"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "First name Last name"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Last name First name"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "For more fields, tap the button on the right"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/en_PH.po b/po/en_PH.po
new file mode 100644
index 0000000..1094bf4
--- /dev/null
+++ b/po/en_PH.po
@@ -0,0 +1,1769 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Keypad"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favorites"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Speed dial"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Voice mail"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Logs"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "No speed dial number. Assign one now?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Request failed"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Request success"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Emergency call"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "No log"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "No favorites"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Message deleted"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Maximum phone number length exceeded"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Deleting logs..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Deleting favorites..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Initializing. Try later..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Sound off"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Sound on"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Previous screen"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Back to call"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Incoming call"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Outgoing call"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Missed call"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Sent message"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Received message"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Rejected call"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Blocked call"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Edit number before call"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Send Email"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Select logs"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Select speed dial contacts"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Unblock"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Change contact"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Add %d sec pause"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Add wait"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Missed"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Exit"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Custom"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobile"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Home"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Work"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (Home)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (Work)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Assistant’s number"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pager"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Other"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telephone"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Car telephone"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Home 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Company main"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "All contacts"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Not assigned"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Service number"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Phone"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Groups"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Ringtone"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Website"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Email"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Number"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Note"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Postal address"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Details"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Company"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Order of display name"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Own number"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "First name"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Last name"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Middle name"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Suffix"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Nickname"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Export contacts"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Select contacts"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Postal code"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Country"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Province"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "City"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Street"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Saved in %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Frequently contacted"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Copied"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exported"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Deleting contacts..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Moving..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Copying..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importing SIM contacts..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importing contacts from vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Exporting contacts to %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Reading vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Imported"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/A"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "All linked contacts"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Linked contacts"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Job title"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Department"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Group name"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Add account"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Adding members to group..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "View"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d contacts"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Rename"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relationship"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "No histories"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "No activities"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Adding..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Additional information"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "PO box"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "State"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Friends"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Family"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Co-workers"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Work"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Vibration pattern"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Set default"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Event"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Share contact information"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 contact"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Export to SIM card"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "History"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Activities"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Group message"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Group Email"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "No name"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Invalid Email address"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Complete at least one field as well as name"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Failed to access database"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Already added"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Group name already in use"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "No Group"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "No number"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "No email addresses"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "No contacts"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM memory empty"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Maximum number of entries exceeded"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Invalid number"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM memory full"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"You can import contacts from SIM card to your phone in Settings > Import "
+"contacts or sync with web account contacts using accounts in settings"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"No logs. After you make/receive a call or send/receive a message, logs will "
+"be shown"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Unable to send name cards"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Mark as default number"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Mark as default email"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Image"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Take a photo"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Remove photo"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Add to Home screen"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Save contact to"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Save to"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Import SIM contacts"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "First name first"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Last name first"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Show"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Hide"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Send namecard"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Create group"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Select group"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Import contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Link contact"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Unlink"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "All linked contacts will be deleted"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Add to Favorites"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Edit group"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Add member"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Add to group"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Added to Favorites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Unknown"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Birthday"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Anniversary"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Sunday"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Monday"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Tuesday"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Wednesday"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Thursday"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Friday"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Saturday"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistant"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Brother"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Child"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Domestic partner"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Father"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Friend"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Manager"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Mother"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Parent"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Referred by"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Relative"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Sister"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Spouse"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "More information"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afghanistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albania"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algeria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "American Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua and Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Australian External Territories"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaijan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Belarus"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgium"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius and Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnia and Herzegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "British Virgin Islands"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Cambodia"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Cameroon"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cape Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Cayman Islands"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Central African Republic"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Chad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "China"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comoros"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cook Islands"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Cote d’Ivoire"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Croatia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curacao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Cyprus"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Czech Republic"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Democratic People's Republic of Korea"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Democratic Republic of Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor-Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Denmark"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominican Republic"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egypt"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Equatorial Guinea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Ethiopia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falkland Islands"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Faroe Islands"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finland"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "French Southern Territories"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "French Guiana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "French Polynesia"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Germany"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Greece"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Greenland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadalupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Hungary"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Iceland"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Iraq"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Ireland"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japan"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordan"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazakhstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kyrgyzstan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Lao People's Democratic Republic"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Latvia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Lebanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libya"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lithuania"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxembourg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagascar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaysia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldives"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshall Islands"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritania"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Mauritius"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexico"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronesia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldova"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Morocco"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambique"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibia"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Netherlands"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "New Caledonia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "New Zealand"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Northern Mariana Islands"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norway"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua New Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Philippines"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Poland"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Romania"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Russian Federation"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Saint Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts and Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre and Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent and the Grenadines"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome and Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudi Arabia"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelles"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapore"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovakia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Solomon Islands"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "South Africa"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Spain"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Sweden"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Switzerland"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Syrian Arab Republic"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tajikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thailand"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "The former Yugoslav Republic of Macedonia"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad and Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunisia"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turkey"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks and Caicos Islands"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraine"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "United Arab Emirates"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "United Kingdom of Great Britain and Northern Ireland"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "United States of America"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "United States Virgin Islands"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatican City"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis and Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobile (Home)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobile (Work)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Saved in"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Import from SD card"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Group and group members"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s saved in %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "This contact will be deleted"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Photo"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Dialer"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Back-up"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Group only"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "New group"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Select group"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobile 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Added"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Moved"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Selected"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Cancel"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Not enough memory"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Removed"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Search"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Close"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Deleted"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Error"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Call"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "No SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Select all"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Failed"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Success"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Save"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Add contacts"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Assistant’s name"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Delete group"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Group name"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Group ringtone"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Record video"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Replace"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Speed dial"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Msg."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Set ringtone"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "All contacts"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Company"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Edit contacts"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Get email"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Get number"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "No Group"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Participant"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Set image"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Speed dial not in use"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Delete contacts"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Edit groups"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Add to favorites"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Edit group"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Empty"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Save contact"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Select contact"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Add group"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memory full"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Removing..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Unable to add contact into group"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Update"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Cancel"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Contacts"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Copy"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Create"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Message"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Move"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Phone"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Unknown"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Video call"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Delete"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Done"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Edit"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Send contact details"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Search Exchange server"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "First name Last name"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Last name First name"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "For more fields, tap the button on the right"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/en_US.po b/po/en_US.po
new file mode 100644
index 0000000..ec9c3e1
--- /dev/null
+++ b/po/en_US.po
@@ -0,0 +1,1767 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Keypad"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favorites"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Speed dial"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Voicemail"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Logs"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "No speed dial number. Assign one now?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Request failed"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Request success"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Emergency call"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "No logs"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "No favorites"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Message deleted"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Maximum phone number length exceeded"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Deleting logs..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Deleting favorites..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Initializing. Try later..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Sound off"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Sound on"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Previous screen"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Back to call"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Incoming call"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Outgoing call"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Missed call"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Sent message"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Received message"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Rejected call"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Blocked call"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Edit number before call"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Send email"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Select logs"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Select speed dial contacts"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Unblock"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Change contact"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Add %d sec pause"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Add wait"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Missed"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Exit"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Custom"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobile"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Home"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Work"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (Home)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (Work)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Assistant’s number"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pager"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Other"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telephone"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Car telephone"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Home 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Company main"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "All contacts"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Not assigned"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Service number"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Phone"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Groups"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Ringtone"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Website"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Email"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Number"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Note"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Postal address"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Details"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Company"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Order of display name"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Own number"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "First name"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Last name"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Middle name"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Suffix"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Nickname"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Export contacts"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Select contacts"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Postal code"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Country"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Province"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "City"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Street"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Saved in %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Frequently contacted"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Copied"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exported"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Deleting contacts..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Moving..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Copying..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importing SIM contacts..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importing contacts from vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Exporting contacts to %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Reading vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Imported"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/A"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "All linked contacts"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Linked contacts"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Job title"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Department"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Group name"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Add account"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Adding members to group..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "View"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d contacts"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Rename"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relationship"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "No histories"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "No activities"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Adding..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Additional information"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "PO box"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "State"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Friends"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Family"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Co-workers"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Work"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Vibration pattern"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Set default"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Event"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Share contact information"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 contact"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Export to SIM card"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "History"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Activities"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Group message"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Group email"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "No name"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Invalid email address"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Complete at least one field as well as name"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Failed to access database"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Already added"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Group name already in use"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "No Group"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "No number"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "No email addresses"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "No contacts"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM memory empty"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Maximum number of entries exceeded"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Invalid number"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM memory full"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"You can import contacts from SIM card to your phone in Settings > Import "
+"contacts or sync with web account contacts using accounts in settings"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"No logs. After you make/receive a call or send/receive a message, logs will "
+"be shown"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Unable to send name cards"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Mark as default number"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Mark as default email"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Image"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Take a photo"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Remove photo"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Add to Home screen"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Save contact to"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Save to"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Import SIM contacts"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "First name first"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Last name first"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Show"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Hide"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Send namecard"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Create group"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Select group"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Import contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Link contact"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Unlink"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "All linked contacts will be deleted"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Add to Favorites"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Edit group"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Add member"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Add to group"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Added to Favorites"
+
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Unknown"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Birthday"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Anniversary"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Sunday"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Monday"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Tuesday"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Wednesday"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Thursday"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Friday"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Saturday"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistant"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Brother"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Child"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Domestic partner"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Father"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Friend"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Manager"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Mother"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Parent"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Referred by"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Relative"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Sister"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Spouse"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "More information"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afghanistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albania"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algeria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "American Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua and Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Australian External Territories"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaijan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Belarus"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgium"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius and Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnia and Herzegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "British Virgin Islands"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Cambodia"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Cameroon"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cape Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Cayman Islands"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Central African Republic"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Chad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "China"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comoros"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cook Islands"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Cote d’Ivoire"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Croatia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curacao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Cyprus"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Czech Republic"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Democratic People's Republic of Korea"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Democratic Republic of the Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor-Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Denmark"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominican Republic"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egypt"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Equatorial Guinea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Ethiopia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falkland Islands"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Faroe Islands"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finland"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "French Southern Territories"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "French Guiana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "French Polynesia"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Germany"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Greece"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Greenland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Hungary"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Iceland"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Iraq"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Ireland"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japan"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordan"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazakhstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kyrgyzstan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Lao People's Democratic Republic"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Latvia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Lebanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libya"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lithuania"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxembourg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagascar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaysia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldives"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshall Islands"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritania"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Mauritius"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexico"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronesia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldova"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Morocco"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambique"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibia"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Netherlands"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "New Caledonia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "New Zealand"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Northern Mariana Islands"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norway"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua New Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Philippines"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Poland"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Romania"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Russian Federation"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Saint Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts and Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre and Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent and the Grenadines"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome and Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudi Arabia"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelles"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapore"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovakia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Solomon Islands"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "South Africa"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Spain"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Sweden"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Switzerland"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Syrian Arab Republic"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tajikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thailand"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "The former Yugoslav Republic of Macedonia"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad and Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunisia"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turkey"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks and Caicos Islands"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraine"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "United Arab Emirates"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "United Kingdom of Great Britain and Northern Ireland"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "United States of America"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "United States Virgin Islands"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatican City State"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis and Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobile (Home)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobile (Work)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Saved in"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Import from SD card"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Group and group members"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s saved in %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "This contact will be deleted"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Photo"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Dialer"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Backup"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Group only"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "New group"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Select group"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobile 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Added"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Moved"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Selected"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Cancel"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Not enough memory"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Removed"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Search"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Close"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Deleted"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Error"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Call"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "No SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Select all"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Failed"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Success"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Save"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Add contacts"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Assistant’s name"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Delete group"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Group name"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Group ringtone"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Record video"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Replace"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Speed dial"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Msg."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Set ringtone"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "All contacts"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Company"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Edit contacts"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Get email"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Get number"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "No Group"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Participant"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Set image"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Speed dial not in use"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Delete contacts"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Edit groups"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Add to favorites"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Edit group"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Empty"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Save contact"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Select contact"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Add group"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memory full"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Removing..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Unable to add contact to group"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Update"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Cancel"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Contacts"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Copy"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Create"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Message"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Move"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Phone"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Unknown"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Video call"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Delete"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Done"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Edit"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Send contact details"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Search Exchange server"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "First name Last name"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Last name First name"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "For more fields, tap the button on the right"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/es_ES.po b/po/es_ES.po
new file mode 100644
index 0000000..dc266a6
--- /dev/null
+++ b/po/es_ES.po
@@ -0,0 +1,1771 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Teclado"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favoritos"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Marcación rápida"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Buzón de voz"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Registro"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "No hay ningún número de marcación rápida. ¿Asignar uno ahora?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Petición fallida"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Solicitud correcta"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Llamada de emergencia"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Ningún registro"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Ningún favorito"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Mensaje eliminado"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Longitud máxima de número de teléfono superada"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Eliminando registros..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Eliminando favoritos..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Inicializando. Inténtelo más tarde..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Sonido desactivado"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Sonido activado"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Pant anterior"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Volver a la llamada"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Llamada entrante"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Llamada saliente"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Llamada perdida"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Mensaje enviado"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Mensaje recibido"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Llamada rechazada"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Llamada bloqueada"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Editar número antes de llamar"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Enviar correo electrónico"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Seleccionar registros"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Seleccionar contactos de marcación rápida"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Desbloq"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Cambiar contacto"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Añadir pausa de %d s"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Añadir espera"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Perdidas"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Salir"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Personalizar"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Móvil"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Casa"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Profesional"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (casa)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (trabajo)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Número de auxiliar"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Buscapersonas"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Otro"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Teléfono"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Teléfono del coche"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Casa 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Principal de la empresa"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Todos los contactos"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "No asignado"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Número de servicio"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Teléfono"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grupos"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Predeterminado"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Melodía"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Sitio web"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Correo electrónico"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Número"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Nota"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Dirección postal"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Detalles"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Empresa"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Ordenar por:"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Número propio"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Nombre"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Apellidos"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Segundo nombre"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Sufijo"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Alias"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Exportar contactos"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Seleccionar contactos"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Código postal"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "País"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Provincia"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Ciudad"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Calle"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Guardado en %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Contactado con frecuencia"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Copiado"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exportado"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Eliminando contactos..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Moviendo..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Copiando..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importando contactos de SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importando contactos de vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Exportando contactos a %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Leyendo vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importado"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/A"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Todos cont vinculados"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Contactos vinculados"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Cargo"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Departamento"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Nombre de grupo"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Añadir cuenta"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Añadiendo miembros a grupo..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Ver"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d contactos"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Renombrar"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relación"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "No hay historiales"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "No hay actividades"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Añadiendo..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Información adicional"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Cuadro de PO"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Estado"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Amigos"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Familia"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Compañeros de trabajo"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Trabajo"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Modo de vibración"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Definir predeterminado"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Evento"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Compartir información de contacto"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 contacto"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Exportar a tarjeta SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Historial"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Actividades"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Mensaje de grupo"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Email de grupo"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Sin nombre"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Dirección de correo electrónico no válida"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Completar al menos un campo además del nombre"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Error al acceder a la base de datos"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Ya se ha añadido"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "El nombre del grupo ya existe"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Ningún grupo"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Sin número"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "No hay direcciones de correo electrónico"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Ningún contacto"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Memoria SIM vacía"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Número máximo de entradas alcanzado"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Número no válido"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Memoria SIM llena"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Puede importar contactos de la tarjeta SIM a su teléfono en Ajustes > "
+"Importar contactos o sincronizarlos con los de una cuenta web mediante "
+"cuentas en ajustes"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Ningún registro. Después de hacer/recibir una llamada o enviar/recibir un "
+"mensaje, se mostrarán registros"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "No se puede enviar tarjetas de visita"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Marcar como número predeterminado"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Marcar como correo electrónico predeterminado"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Imagen"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Hacer foto"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Eliminar foto"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Añadir a pantalla de inicio"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Guardar contacto en"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Guardar en"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importar contactos de SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Nombre en primer lugar"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Apellido en primer lugar"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Mostrar"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Ocultar"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Enviar tarjeta de presentación"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Crear grupo"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Seleccionar grupo"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Importar contactos"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Vincular contacto"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Desvincular"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Se eliminarán todos los contactos vinculados"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Añadir a Favoritos"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Editar grupo"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Añ miembr"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Añadir a grupo"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Añadido a favoritos"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Desconocido"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Cumpleaños"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Aniversario"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Domingo"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Lunes"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Martes"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Miércoles"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Jueves"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Viernes"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Sábado"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Asistente"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Hermano"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Niño"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Socio nacional"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Padre"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Amigo"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Administrador"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Madre"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Progenitor"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Socio"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Referido por"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Familiar"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Hermana"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Cónyuge"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "MI"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Más información"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistán"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albania"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algeria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Samoa Americana"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguila"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua y Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territorios externos de Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaiyán"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahréin"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Bielorrusia"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Bélgica"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belice"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benín"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermudas"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bután"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius y Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnia-Herzegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brasil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Islas Vírgenes Británicas"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunéi"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Camboya"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Camerún"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canadá"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cabo Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Islas Caimán"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "República Centroafricana"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Chad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "China"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comores"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Islas Cook"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Costa de Marfil"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Croacia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curazao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Chipre"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "República Checa"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "República Popular Democrática de Corea"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "República Democrática del Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor-Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Dinamarca"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Yibuti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "República Dominicana"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egipto"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Guinea Ecuatorial"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopía"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Islas Malvinas"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Islas Feroe"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiyi"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finlandia"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Francia"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territorios Australes Franceses"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Guayana Francesa"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Polinesia Francesa"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabón"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Alemania"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grecia"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Groenlandia"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Granada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadalupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haití"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Hungría"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islandia"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Servicio de teléfono gratuito internacional"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Servicio Internacional Tarifa Premium (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Servicio internacional de pago compartido (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Irán"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irlanda"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italia"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japón"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordania"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazajistán"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenia"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Corea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirguistán"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "República Democrática Popular de Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Letonia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Líbano"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesoto"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libia"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lituania"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxemburgo"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagascar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malasia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldivas"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Islas Marshall"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinica"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritania"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Mauricio"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "México"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronesia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldavia"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Mónaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marruecos"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambique"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibia"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Países Bajos"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nueva Caledonia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nueva Zelanda"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Níger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Islas Marianas del Norte"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Noruega"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Omán"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Paquistán"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palaos"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panamá"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papúa-Nueva Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Perú"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipinas"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polonia"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Rumanía"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Federación Rusa"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Santa Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "San Cristóbal y Nieves"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Santa Lucía"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "San Pedro y Miquelón"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "San Vicente y las Granadinas"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Santo Tomé y Príncipe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Arabia Saudí"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelles"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leona"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "San Martín"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Eslovaquia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Eslovenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Islas Salomón"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Sudáfrica"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "España"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudán"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swazilandia"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Suecia"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Suiza"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "República Árabe Siria"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwán"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tayikistán"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr ""
+#~ "Telecomunicaciones para operaciones de socorro en caso de catástrofe (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tailandia"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Antigua república yugoslava de Macedonia"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad y Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Túnez"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turquía"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistán"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Islas Turcas y Caicos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ucrania"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Emiratos Árabes Unidos"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Reino Unido de Gran Bretaña e Irlanda del Norte"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Estados Unidos de América"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Islas Vírgenes de los Estados Unidos"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Servicio de telecomunicación personal universal (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistán"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Ciudad Estado del Vaticano"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis y Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabue"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Móvil (casa)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Móvil (trabajo)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Guardado en"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importar desde tarjeta SD"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grupo y miembros del grupo"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s se ha guardado en %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Este contacto se eliminará"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Foto"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Marcador"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Copia de seguridad"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Sólo grupo"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Grupo nuevo"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Seleccionar grupo"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Móvil 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Añadido"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Movido"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Seleccionado"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Cancelar"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "No hay suficiente memoria"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Elimininado"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Buscar"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Cerrar"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Eliminado"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Error"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Llamar"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "No hay SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Seleccionar todo"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Error"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Finalizado"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Guardar"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Añadir contactos"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Nombre de auxiliar"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Eliminar grupo"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Nombre de grupo"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Melodía grupo"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Grabar vídeo"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Reemplazar"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Marcación rápida"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Mens."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Definir melodía"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Todos los contactos"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Empresa"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Editar contactos"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Obtener correo electrónico"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Obtener número"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Ningún grupo"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Participante"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Definir imagen"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "La marcación rápida no está en uso"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Eliminar contactos"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Editar grupos"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Correo electrónico"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Añadir a favoritos"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Editar grupo"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Vacío"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Guardar contacto"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Seleccionar contacto"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Añadir grupo"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memoria llena"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Eliminando..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "No se puede añadir contacto al grupo"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Actualizar"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Cancelar"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Contactos"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Copiar"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Crear"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Correo electrónico"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Mensajes"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Mover"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Teléfono"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Desconocido"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videollamada"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Eliminar"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Hecho"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Editar"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "Aceptar"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Enviar detalles de contacto"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Buscar Exchange server"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Nombre Apellidos"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Apellidos Nombre"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Para ver más campos, pulse el botón de la derecha"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/es_US.po b/po/es_US.po
new file mode 100644
index 0000000..4d8c6a2
--- /dev/null
+++ b/po/es_US.po
@@ -0,0 +1,1759 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Teclado"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favoritos"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Marcación rápida"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Buzón de voz"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Registros"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "No hay ningún número de marcación rápida. ¿Asignar uno ahora?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Error de solicitud"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Solicitud exitosa"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Llamada de emergencia"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Ningún registro"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Ningún favorito"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Mensaje eliminado"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Se excedió la longitud máxima para los números telefónicos"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Eliminando registros..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Eliminando favoritos..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Inicializando. Inténtelo más tarde..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Sonido desactivado"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Sonido activado"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Pantalla anter."
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Volver a la llamada"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Llamada entrante"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Llamada saliente"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Llamada perdida"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Enviar mensaje"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Mensaje recibido"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Llamada rechazada"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Llamada bloqueada"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Editar número antes de llamar"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+#, fuzzy
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Túnez"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Enviar correo"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Seleccionar registros"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Seleccionar contactos de marcación rápida"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Desbloquear"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Cambiar contacto"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Añadir pausa de %d seg."
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Añadir espera"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Perdidas"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Salir"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Personalizar"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Móvil"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Privado"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Trabajo"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax - Privado"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax - Trabajo"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Número del asistente"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Localizador"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Otro"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Teléfono"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Teléfono del automóvil"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Casa 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Principal de la empresa"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Todos los contactos"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "No asignado"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Números de servicio"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Teléfono"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grupos"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Predeterminado"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Tono de llamada"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Sitio Web"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Correo"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Número"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Nota"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Dirección postal"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Detalles"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Empresa"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Mostrar por"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Números propios"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Nombre"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Apellido"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Segundo nombre"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Sufijo"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Alias"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Exportar contactos"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Seleccionar contactos"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Código postal"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "País"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Provincia"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Ciudad"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Calle"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Guardado en %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Contactados con frecuencia"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Copiado"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exportado"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Eliminando contactos..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Moviendo…"
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Copiando..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importando contactos de tarjeta SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importando contactos de vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Exportando contactos a %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "Tarjeta de presentación"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Leyendo tarjeta de presentación..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importado"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/A"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Todos cont vinculados"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Contactos vinculados"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Puesto"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Departamento"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Nombre de grupo"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Añadir cuenta"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Añadiendo miembros a grupo..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Ver"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d contactos"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Renombrar"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relación"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "No hay historiales"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "No hay actividades"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Añadiendo…"
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Información adicional"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Cuadro de PO"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Estado"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Amigos"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Familia"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Compañeros de trabajo"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Trabajo"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Patrón de vibración"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Definir predeterminado"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Evento"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Compartir información de contacto"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 contacto"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+#, fuzzy
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Importar desde tarjeta de memoria"
+
+#, fuzzy
+msgid "IDS_PB_SK3_INFO"
+msgstr "Actualizar"
+
+#, fuzzy
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Marcador"
+
+#, fuzzy
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "No hay actividades"
+
+#, fuzzy
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Ningún grupo"
+
+#, fuzzy
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Obtener correo"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Sin nombre"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Dirección de correo no válida"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Completar al menos un campo además del nombre"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Error al acceder a la base de datos"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Ya añadido"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Ya existe ese nombre de grupo"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Ningún grupo"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Sin número"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "No hay direcciones de correo"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Ningún contacto"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Memoria SIM vacía"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Número máximo de entradas alcanzado"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Número no válido"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Memoria SIM llena"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Puede importar contactos de la tarjeta SIM a su teléfono en Configuración> "
+"Importar contactos o sincronizarlos con los de una cuenta Web mediante "
+"cuentas en Configuración"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"No hay registros. Después de hacer/recibir una llamada o enviar/recibir un "
+"mensaje, aparecerán los registros"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "No se pueden enviar tarjetas de presentación."
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Marcar como número predeterminado"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Marcar como correo predeterminado"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Imagen"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Tomar foto"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Eliminar foto"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Añadir a pantalla de inicio"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Guardar contacto en"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Guardar en"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importar contactos de tarjeta SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Primero nombre"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Primero el apellido"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Mostrar"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Ocultar"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Enviar tarjeta de presentación"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Crear grupo"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Seleccionar grupo"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Importar contactos"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Vincular contacto"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Desvincular"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Se eliminarán todos los contactos vinculados"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Añadir a favoritos"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Editar grupo"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Añ miembr"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Añadir a Grupo"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Añadido a favoritos"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Desconocido"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Cumpleaños"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Aniversario"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Domingo"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Lunes"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Martes"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Miércoles"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Jueves"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Viernes"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Sábado"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Asistente"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Hermano"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Hijo"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Compañero(a)"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Padre"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Amigo"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Administrador"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Madre"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Pariente"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Socio"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Referido por"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Familiar"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Hermana"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Cónyuge"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Más información"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistán"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albania"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algeria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Samoa Americana"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguila"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua y Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territorios externos australianos"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaiyán"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahréin"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Bielorrusia"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Bélgica"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belice"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benín"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermudas"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bután"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, San Eustaquio y Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnia-Herzegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brasil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Islas Vírgenes Británicas"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunéi"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Camboya"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Camerún"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canadá"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cabo Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Islas Caimán"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "República Centroafricana"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Chad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "China"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comores"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Islas Cook"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Costa de Marfil"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Croacia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curasao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Chipre"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "República Checa"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "República democrática de Corea"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "República Democrática del Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor Oriental"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Dinamarca"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego García"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Yibuti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "República Dominicana"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egipto"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Guinea Ecuatorial"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopía"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Islas Malvinas"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Islas Feroe"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiyi"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finlandia"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Francés"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territorios Australes Franceses"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Guayana Francesa"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Polinesia Francesa"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabón"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Alemania"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grecia"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Groenlandia"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Granada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadalupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haití"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Hungría"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islandia"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Irán"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irlanda"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italia"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japón"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordania"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazajistán"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenia"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Corea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirguistán"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "República Democrática Popular de Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Letonia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Líbano"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesoto"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libia"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lituania"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxemburgo"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagascar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malasia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldivas"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Islas Marshall"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinica"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAURITANIA"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Mauricio"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "México"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronesia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldavia"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Mónaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marruecos"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambique"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibia"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Países Bajos"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nueva Caledonia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nueva Zelanda"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Níger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Islas Marianas del Norte"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Noruega"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Omán"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistán"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palaos"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panamá"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papúa-Nueva Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Perú"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipinas"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polonia"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Rumanía"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Federación Rusa"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Santa Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "San Cristóbal y Nieves"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Santa Lucía"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "San Pedro y Miquelón"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "San Vicente y las Granadinas"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Santo Tomé y Príncipe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Arabia Saudita"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelles"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leona"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "San Martín"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Eslovaquia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Eslovenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Islas Salomón"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Sudáfrica"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "España"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudán"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swazilandia"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Suecia"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Suiza"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "República Árabe Siria"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwán"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tayikistán"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tailandia"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Antigua República Socialista de Macedonia"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad y Tobago"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turquía"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistán"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Islas Turks y Caicos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ucrania"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Emiratos Árabes Unidos"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Reino Unido de Gran Bretaña e Irlanda del Norte"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Estados Unidos de América"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Islas Vírgenes de los Estados Unidos"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistán"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Ciudad Estado del Vaticano"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis y Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabue"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Móvil - Privado"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Móvil - Trabajo"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Guardado en"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grupo y miembros del grupo"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s se ha guardado en %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Este contacto se eliminará"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Foto"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Copia de seguridad"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Sólo grupo"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Añadir grupo"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Seleccionar grupo"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Móvil 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Añadido"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Movido"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Seleccionado"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Cancelar"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Memoria insuficiente"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Eliminado"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Buscar"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Cerrar"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Eliminado"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Error"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Llamar"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "No hay tarjeta SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Seleccionar todo"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Error"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Exitoso"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Guardar"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Añadir contactos"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Nombre del asistente"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Eliminar grupo"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Nombre de grupo"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Tono de grupo"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Grabar video"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Sustituir"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Marcación rápida"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Msj."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Definir tono"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Todos los contactos"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Empresa"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Editar contactos"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Obtener número"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Participante"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Definir imagen"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "No está en uso el marcado rápido"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Eliminar contactos"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Editar grupos"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Correo"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Añadir a favoritos"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Editar grupo"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Vacío"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Guardar contacto"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Seleccionar contacto"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Añadir grupo"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memoria llena"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Eliminando..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "No se puede añadir contacto al grupo"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Cancelar"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Contactos"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Copiar"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Crear"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Correo"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Mensaje"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Mover"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Teléfono"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Desconocido"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videollamada"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Eliminar"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Realizado"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Editar"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "Aceptar"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Enviar detalles de contacto"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Buscar servidor Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Nombre Apellido"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Apellido Nombre"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Para añadir más campos, pulse el botón de la derecha"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/et.po b/po/et.po
new file mode 100644
index 0000000..ce1892c
--- /dev/null
+++ b/po/et.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Klahvistik"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Lemmikud"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Kiirvalimine"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Kõnepost"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Logid"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Kiirvalimisnumbrit pole. Kas määrata see kohe?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Taotlus nurjus"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Taotlus õnnestus"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Hädaabikõne"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Logisid pole"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Lemmikuid ei ole"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Sõnum on kustutatud"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Telefoninumbri maksimaalne pikkus on ületatud"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Logide kustutamine..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Lemmikute kustutamine..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Lähtestamine. Proovige hiljem..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Heli väljas"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Heli sees"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Eelmine ekraan"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Tagasi kõne juurde"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Saabuv kõne"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Väljuv kõne"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Vastamata kõne"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Saadetud sõnum"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Vastuvõetud sõnum"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Keeldutud kõne"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Blokeeritud kõne"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Muuda numbrit enne helistamist"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Saada e-kiri"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Vali logid"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Valige kiirvalimiskontaktid"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Eemalda blok."
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Muuda kontakti"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Lisa %d-sekundiline paus"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Lisa ooteaeg"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Vastamata"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Välju"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Kohandus"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobiil"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Kodu"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Töö"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Faks (kodu)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Faks (töö)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Assistendi number"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Piipar"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Muu"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Faks"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Autotelefon"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Kodu 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Ettevõtte põhinumber"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Raadio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Kõik kontaktid"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Pole määratud"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Teenuse number"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Rühmad"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Vaikimisi"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Helin"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Veebisait"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-post"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Number"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Märkus"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Postiaadress"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Üksikasjad"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Ettevõte"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Kuvanime järjekord"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Oma number"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Eesnimi"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Perekonnanimi"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Keskmine nimi"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Järelliide"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Hüüdnimi"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Ekspordi kontaktid"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Vali kontaktid"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Postiindeks"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Riik"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Maakond"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Linn"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Tänav"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Salvestati asukohta %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Sageli ühendust võetud"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Kopeeritud"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Eksporditud"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Kontaktide kustutamine..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Teisaldamine..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopeerimine..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "SIM-kaardi kontaktide importimine..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Kontaktide importimine vCardilt..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Kontaktide eksportimine asukohta %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "vCardi lugemine..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Imporditud"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Pole teada"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Kõik lingitud kont.-d"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Lingitud kontaktid"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Ametinimetus"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Osakond"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Rühma nimi"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Lisa konto"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Liikmete lisamine rühmale..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Kuva"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d kontakti"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Nimeta ümber"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Suhe"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Ajalugu pole"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Tegevusi pole"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Lisamine..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Lisateave"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Abonementpostkast"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Maakond"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Sõbrad"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Perekond"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Kaastöötajad"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Töö"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Värina stiil"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Määra vaikimisi"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Sündmus"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Jaga kontaktandmeid"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 kontakt"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Ekspordi SIM-kaardile"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Teave"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Ajalugu"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Tegevused"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Rühma sõnum"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Rühma e-kiri"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Nimi puudub"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Vale e-posti aadress"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Täitke lisaks nimele veel vähemalt üks väli"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Ligipääs andmebaasile nurjus"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Juba lisatud"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Rühma nimi on juba kasutusel"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Rühm puudub"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Number puudub"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "E-posti aadresse pole"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Kontaktid puuduvad"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM-mälu tühi"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Maksimaalne arv kirjeid on ületatud"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Kehtetu number"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM-i mälu on täis"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Saate importida kontakte SIM-kaardilt oma telefoni menüüs Seaded > Impordi "
+"kontaktid või sünkroonige veebikonto kontaktidega, kasutades kontosid menüüs "
+"Seaded"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Logisid pole. Pärast helistamist/kõnele vastamist või sõnumi saatmist/"
+"vastuvõtmist kuvatakse logid"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Nimekaarte ei saa saata"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Märgi vaikimisi numbriks"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Märgi vaikimisi e-postiks"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Pilt"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Pildista"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Eemalda foto"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Lisa avaekraanile"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Kontakti salvestuskoht:"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Salvestuskoht"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Impordi SIM-kontakte"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Eesnimi esimesena"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Perekonnanimi ees"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Näita"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Peida"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Saada nimekaart"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Loo rühm"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Vali rühm"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Impordi kont."
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Lingi kontakt"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Lingi ära"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Kõik lingitud kontaktid kustutatakse"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Lisa Lemmikutesse"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Muuda rühma liiget"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Lisa lii."
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Lisa rühma"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Lisatud lemmikutesse"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Tundmatu"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Sünnipäev"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Tähtpäev"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Pühapäev"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Esmaspäev"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Teisipäev"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Kolmapäev"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Neljapäev"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Reede"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Laupäev"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistent"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Vend"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Laps"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Elukaaslane"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Isa"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Sõber"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Haldur"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Ema"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Vanem"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Viidanud"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Sugulane"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Õde"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Abikaasa"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "Kiirsõnum"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Lisateave"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albaania"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Alžeeria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Ameerika Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua ja Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armeenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Austraalia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Austraalia välisterritooriumid"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Aserbaidžaan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahama"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrein"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Valgevene"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgia"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "BENIN"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Boliivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint-Eustatius ja Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnia ja Hertsegoviina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brasiilia"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Briti Neitsisaared"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalami Riik"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kambodža"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cabo Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Kaimanisaared"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Kesk-Aafrika Vabariik"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "TŠAAD"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Tšiili"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Hiina"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "KOMOORID"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cooki saared"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Elevandiluurannik"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Horvaatia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kuuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curaçao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Küpros"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Tšehhi Vabariik"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Korea Rahvademokraatlik Vabariik"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Kongo DV"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Ida-Timor"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Taani"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominikaani Vabariik"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egiptus"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Ekvatoriaal-Guinea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Eesti"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etioopia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falklandi saared"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Fääri saared"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fidži"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Soome"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Prantsuse lõunaalad"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Prantsuse Guajaana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Prantsuse Polüneesia"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Saksamaa"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Kreeka"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Gröönimaa"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hongkong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Ungari"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Island"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indoneesia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iraan"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Iraak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Iirimaa"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Iisrael"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Jaapan"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordaania"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kasahstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Keenia"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuveit"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kõrgõzstan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Laose Rahvademokraatlik Vabariik"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Läti"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Liibanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Libeeria"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Liibüa"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Leedu"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxembourg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Aomen"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "MADAGASKAR"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaisia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldiivid"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshalli saared"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAURITAANIA"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAURITIUS"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mehhiko"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikroneesia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldova"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongoolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Maroko"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mosambiik"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Birma"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "NAMIIBIA"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Holland"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Briti Columbia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Uus-Meremaa"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Põhja-Mariaanid"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norra"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Omaan"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Paapua Uus-Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Pruun"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipiinid"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Poola"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Katar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Rumeenia"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Vene Föderatsioon"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Saint Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts ja Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre ja Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent ja Grenadiinid"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome ja Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudi Araabia"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seišellid"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovakkia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Sloveenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Saalomoni saared"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somaalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Lõuna-Aafrika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Hispaania"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudaan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Svaasimaa"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Roosti"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Šveits"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Süüria Araabia Vabariik"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadžikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tansaania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tai"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Endine Jugoslaavia Makedoonia vabariik"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad ja Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tuneesia"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Türgi"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Türkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks ja Caicos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraina"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Araabia Ühendemiraadid"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Suurbritannia ja Põhja-Iiri Ühendkuningriik"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Ameerika Ühendriigid"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Ühendriikide Neitsisaared"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Usbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatikan"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis ja Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Jeemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Sambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobiil (kodu)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobiil (töö)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Salvestatud:"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Impordi SD-kaardilt"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Rühm ja rühma liikmed"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s salvestati kausta %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "See kontakt kustutatakse"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Foto"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Valija"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Varundus"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Ainult rühm"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Uus rühm"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Vali rühm"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobiil 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Lisatud"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Teisaldatud"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Valitud"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Tühista"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Mälu pole piisavalt"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Eemaldatud"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Otsi"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Sulge"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Kustutatud"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Tõrge"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Helista"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "SIM-i pole"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Vali kõik"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Nurjus"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Õnnestus"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Salvesta"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Lisa kontaktid"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Assistendi nimi"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Kustuta rühm"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Rühma nimi"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Rühma helin"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Salvesta video"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Asenda"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Kiirvalimine"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Sõnum"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Määra helin"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Kõik kontaktid"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Ettevõte"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Muuda kontakte"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Hangi e-posti aadress"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Hangi number"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Rühm puudub"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Osaleja"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Määra pilt"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Speed dial not in use"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Kustuta kontaktid"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Muuda rühmasid"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-kiri"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Lisa lemmikutesse"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Muuda rühma liiget"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Tühi"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Salvesta kontakt"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Valige kontakt"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Lisa rühm"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Mälu on täis"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Eemaldamine..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Kontakti ei saa rühma lisada"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Värskendus"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Tühista"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Kontaktid"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopeeri"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Loo"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-post"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Sõnum"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Teisalda"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Tundmatu"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videokõne"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Kustuta"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Valmis"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Muuda"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Saada kontakti üksikasjad"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Otsi Exchange'i serverist"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Eesnimi Perekonnanimi"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Perekonnanimi Eesnimi"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Rohkemate väljade lisamiseks toksake paremal olevat nuppu"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/eu.po b/po/eu.po
new file mode 100644
index 0000000..599a121
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Teklatua"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Gogokoak"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Markaketa bizkorra"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Ahots-posta"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Erregistroak"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Ez dago markaketa zenbaki azkarrik. Esleitu bat orain?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Eskaerak huts egin du"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Eskaera ondo egin da"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Emergentzia deia"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Erregistrorik ez"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Gogokorik ez"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Mezua ezabatu da"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Telefono zenbakiaren luzera gainditu da"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Erregistroak ezabatzen..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Gogokoak ezabatzen..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Abiarazten. Saiatu geroago..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Soinua itzalita"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Soinua piztuta"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Aurreko pantaila"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Deira itzuli"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Sarrerako deia"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Irteera deia"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Galdutako deia"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Bidalitako mezua"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Jasotako mezua"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Ukatutako deia"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Dei blokeatua"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Editatu zenbakia deitu aurretik"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Mezu elektronikoa bidali"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Hautatu erregistroak"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Hautatu markaketa azkarreko kontaktuak"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Desblokeatu"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Aldatu kontaktua"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Gehitu %d segundoko etena"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Gehitu itxaronaldia"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Galdutakoak"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Irten"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Pertsonalizatua"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mugikorra"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Etxea"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Lana"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Faxa (etxekoa)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Faxa (lanekoa)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Laguntzailearen zenbakia"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Bilagailua"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Besterik"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefonoa"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Faxa"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Autoko telefonoa"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Nagusia 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Enpresako telefono nagusia"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Irratia"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Kontaktu guztiak"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Esleitu gabe"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Zerbitzu zenbakia"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefonoa"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Taldeak"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Lehenetsia"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Dei doinua"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Webgunea"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Posta elektroniko mezuak"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Zenbakia"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Oharra"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Posta helbidea"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Xehetasunak"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Enpresa"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Ezizenen antolaketa"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Norberaren zenbakia"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Izena"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Abizena"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Bigarren izena"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Atzizkia"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Ezizena"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Esportatu kontaktuak"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Hautatu kontaktuak"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Posta kodea"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Herrialdea"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Probintzia"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Hiria"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Kalea"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "%s-(e)n gordeta"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Maiz kontaktatutakoak"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Kopiatuta"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Esportatuta"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Kontaktuak ezabatzen..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Mugitzen..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopiatzen..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "SIM kontaktuak inportatzen..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Kontaktuak inportatzen vCard-etik..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Kontaktuak esportatzen %s-(e)ra..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "Bisita txartela"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "vCard irakurtzen..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Inportatuta"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "E/A"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Estekatutako kontaktu guztiak"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Lotutako kontaktuak"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Kargua"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Saila"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Taldearen izena"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Kontua gehitu"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Kideak taldera gehitzen..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Ikusi"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d kontaktu"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Berrizendatu"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Harremana"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Historiarik ez"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Jarduerarik ez"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Gehitzen..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Informazio gehigarria"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Posta kutxatila"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Estatua"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Lagunak"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Familia"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Lankideak"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Lana"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Dardara modua"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Ezarri lehenetsia"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Gertaera"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Partekatu kontaktu informazioa"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "Kontaktu 1"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Esportatu SIM txartelera"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Inform."
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Historia"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Ekintzak"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Talde mezua"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Talde emaila"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Izenik gabe"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Helbide elektroniko baliogabea"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Bete gutxienez eremu bat eta izena"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Ezin izan da datu-basera sartu"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Gehituta dago lehendik"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Taldearen izena dagoenek erabileran"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Talderik ez"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Zenbakirik gabe"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Helbide elektronikorik ez"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Ez dago kontakturik"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM memoria hutsik"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Gehieneko sarrera kopurua gainditu da"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Zenbakiak ez du balio"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM memoria beteta"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"SIM txarteleko kontaktuak inporta ditzakezu telefonoan, Ezarpenak > "
+"Inportatu kontaktuak edo sinkronizatu web kontuko kontaktuekin ezarpenetako "
+"kontuak erabilita"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Erregistrorik ez. Dei bat egin/jaso edo mezu bat bidali/jaso ondoren, "
+"erregistroak erakutsiko dira"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Ezin dira bisita-txartelak bidali"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Lehenetsitako zenbakia moduan markatu"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Markatu lehenetsitako helbide elektroniko gisa"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Irudia"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Argazkia atera"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Kendu argazkia"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Gehitu Hasierako pantailara"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Kontaktua hemen gorde"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Hemen gorde"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Inportatu SIM kontaktuak"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Izena lehenago"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Abizena aurrena"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Erakutsi"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Ezkutatu"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Izen txartela bidali"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Taldea sortu"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Taldea aukeratu"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Inport. kontak."
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Lotu kontaktua"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Kendu esteka"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Lotutako kontaktu guztiak ezabatuko dira"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Gogokoenetara gehitu"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Taldea editatu"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Kide geh."
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Taldera gehitu"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Gogokoenetara gehitu da"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Ezezaguna"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Urtebetetzea"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Urteurrena"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Igandea"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Astelehena"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Asteartea"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Asteazkena"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Osteguna"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Ostirala"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Larunbata"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Laguntzailea"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Anaia"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Seme-alaba"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Bazkide nazionala"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Aita"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Laguna"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Kudeatzailea"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Ama"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Gurasoa"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Kidea"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Zeren arabera"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Senitartekoa"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Ahizpa/arreba"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Ezkontidea"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URLa"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Informazio gehiago"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albania"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algeria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Samoa Amerikarra"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua eta Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Australia Kanpoko Lurraldeak"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaijan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamak"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrein"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Bielorrusia"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgika"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius eta Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnia-Herzegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brasil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Birjina Uharte Britainiarrak"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kanbodia"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cabo Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Kaiman Uharteak"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Afrika Erdiko Errepublika"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Txad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Txile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Txina"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Kolonbia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comoros"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cook uharteak"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Boli Kosta"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Kroazia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curaçao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Zipre"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Txekiar Errepublika"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Koreako Herri Errepublika Demokratikoa"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Kongoko Errepublika Demokratikoa"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Ekialdeko Timor"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danimarka"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibuti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominika"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominikar Errepublika"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ekuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egipto"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Ekuatore Ginea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falkland uharteak"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Faroe Uharteak"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finlandia"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Frantzia"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Frantziaren lurralde australak"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Guyana Frantsesa"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Polinesia Frantsesa"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Alemania"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grezia"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Groenlandia"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadalupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Ginea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Ginea Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Hungaria"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islandia"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Nazioarteko doako telefono zerbitzua"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Gainordaina duten nazioarteko tarifa zerbitzuak (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Kostu partekatuko nazioarteko zerbitzua (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irlanda"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italia"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaika"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japonia"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordania"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazakhstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgizistan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Lao Herriaren Errepublika Demokratikoa"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Letonia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Libano"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libia"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtestein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lituania"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxenburgo"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macau"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagaskar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaysia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldivak"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshall Uharteak"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinika"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritania"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Maurizio"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexiko"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronesia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldavia"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monako"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Maroko"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambike"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibia"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Herbehereak"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Kaledonia Berria"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "New Zealand"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nikaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Iparraldeko Mariana Uharteak"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norvegia"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Ginea Berria"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipinak"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polonia"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Errumania"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Errusiako Federazioa"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Santa Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts eta Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Santa Luzia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint-Pierre eta Mikelune"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent eta Grenadinak"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome eta Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudi Arabia"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelleak"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leona"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "San Martin"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Eslovakia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Eslovenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Solomon uharteak"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Hego Afrika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Espainia"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swazilandia"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Suedia"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Suitza"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Siriako Errepublika Arabiarra"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadjikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Hondamendietan laguntzeko telekomunikazioak (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tailandia"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Mazedonia Jugoslaviar Errepublika Ohia"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad eta Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunisia"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turkia"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks eta Caicos Uharteak"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukrainia"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Arabiar Emirerri Batuak"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Britainia Handiko eta Iparraldeko Irlandako Erresuma Batua"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Ameriketako Estatu Batuak"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Birjina Uharte Amerikarrak"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Telekomunikazio zerbitzu pertsonal unibertsala (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguai"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vaticano Hiri Estatua"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis eta Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbawe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mugikorra (etxekoa)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mugikorra (lanekoa)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Hemen gordeta"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Inportatu SD txarteletik"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Taldea eta taldekideak"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s %s karpetan gordeta"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Kontaktu hau ezabatu egingo da"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Argazkia"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Markatz."
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Babeskopia"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Taldea soilik"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Talde berria"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Taldea aukeratu"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mugikorra 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Gehituta"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Mugitua"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Aukeratutakoa(k)"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Ezeztatu"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Ez dago memoria nahikoa"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Kenduta"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Bilatu"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Itxi"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Ezabatua"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Akatsa"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Deitu"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Ez dago SIM txartelik"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Denak aukeratu"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Huts egin du"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Behar bezala"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Gorde"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Kontaktuak gehitu"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Laguntzailearen izena"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Taldea ezabatu"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Taldearen izena"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Dei tonu taldea"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Bideoa grabatu"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Ordezkatu"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Markaketa bizkorra"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Mezua"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Dei doinua ezarri"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Kontaktu guztiak"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Enpresa"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Editatu kontaktuak"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Eskuratu posta"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Zenbakia lortu"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Talderik ez"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Partaidea"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Ezarri irudia"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Markatze bizkorra ez da erabiltzen ari"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Ezabatu kontaktuak"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Editatu taldeak"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Posta elektroniko mezuak"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Gehitu gogokoetara"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Taldea editatu"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Hutsik"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Kontaktua gorde"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Kontaktua aukeratu"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Taldea gehitu"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memoria beteta"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Ezabatzen..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Ezin da kontaktua gehitu taldera"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Eguneratu"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Ezez."
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Kontaktuak"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopiatu"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Sortu"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Posta elektroniko mezuak"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Mezua"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Mugitu"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefonoa"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Ezezaguna"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Bideo-deia"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Ezabatu"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Amaituta"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Editatu"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "Ados"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Kontaktuaren xehetasunak bidali"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Bilatu Exchange zerbitzaria"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Izen-abizenak"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Abizenak, Izena"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Eremu gehiago ikusteko, ukitu eskuineko botoia"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/fi.po b/po/fi.po
new file mode 100644
index 0000000..12c55cc
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,1772 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Nronäpp."
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Suosikit"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Pikavalinta"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Vastaaja"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Lokit"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Pikavalintanumeroa ei ole. Määritetäänkö nyt?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Pyyntö epäonnistui"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Pyyntö onnistui"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Hätäpuhelu"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Ei lokeja"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Ei suosikkeja"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Viesti poistettu"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Puhelinnumeron enimmäispituus on ylitetty"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Poistetaan lokeja..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Poistetaan suosikkeja..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Alustetaan. Yritä myöhemmin uudelleen..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Ääni pois"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Ääni päällä"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Edell. näyttö"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Takaisin puheluun"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Saapuva puhelu"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Lähtevä puhelu"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Vastaamaton puhelu"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Lähetetty viesti"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Vastaanotettu viesti"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Hylätty puhelu"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Estetty puhelu"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Muokkaa numeroa ennen puhelua"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Lähetä sähköpostiviesti"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Valitse lokit"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Valitse pikavalinnoilla käytettävät yhteystiedot"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Poista esto"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Vaihda yhteystietoa"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Lisää %d sekunnin tauko"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Lisää odotus"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Vastaamattomat"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Poistu"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Mukautettu"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Matkapuhelin"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Koti"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Työ"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Faksi (koti)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Faksi (työ)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Avustajan numero"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Hakulaite"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Muu"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Puhelin"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Faksi"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Autopuhelin"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Koti 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Yritys (ensisijainen)"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Kaikki yhteystiedot"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Ei määritelty"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Palvelunumero"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Puhelin"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Ryhmät"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Oletus"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Soittoääni"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "WWW-sivusto"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Sähköposti"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Numero"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Huomautus"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Postiosoite"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Yksityiskohdat"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Yritys"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Nimen näyttöjärjestys"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Oma numero"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Etunimi"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Sukunimi"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Toinen nimi"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Pääte"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Lempinimi"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Vie yhteystiedot"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Valitse yhteystiedot"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Postinumero"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Maa"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Maakunta"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Kaupunki"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Katu"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Tallennettu kohteeseen %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Usein käytetyt yhteystiedot"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Kopioitu"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Viety"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Poistetaan yhteystietoja..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Siirretään..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopioidaan..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Tuodaan SIM-kortin yhteystietoja..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Tuodaan yhteystietoja vCardilta..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Viedään yhteystietoja kohteeseen %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "Käyntikortti"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Luetaan vCardia..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Tuotu"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "-"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Kaikki liit. yht.tied."
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Liitetyt yhteystiedot"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Työtehtävä"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Osasto"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Ryhmän nimi"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Lisää tili"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Lisätään jäseniä ryhmään..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Näytä"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d yhteystietoa"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Nimeä uudelleen"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Suhde"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Historioita ei ole"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Ei toimintoja"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Lisätään..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Lisätiedot"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Postilokero"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Osavaltio"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Ystävät"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Perhe"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Työtoverit"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Työ"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Värinäkuvio"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Aseta oletus"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Tapahtuma"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Jaa yhteystiedot"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 yhteystieto"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Vie SIM-kortille"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Tietoja"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Historia"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Harrastukset"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Ryhmäviesti"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Ryhmäsähköpostiviesti"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Ei nimeä"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Virheellinen sähköpostiosoite"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Täytä ainakin yksi kenttä ja nimi"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Tietokannan käyttäminen epäonnistui"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "On jo lisätty"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Ryhmän nimi on jo käytössä"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Ei ryhmää"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Ei numeroa"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Ei sähköpostiosoitteita"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Ei yhteystietoja"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM-kortin muisti on tyhjä"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Merkintöjen enimmäismäärä ylitetty"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Virheellinen numero"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM-kortin muisti on täynnä"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Voit tuoda yhteystietoja SIM-kortilta puhelimeen valitsemalla Asetukset > "
+"Tuo yhteystiedot tai synkronoimalla asetuksissa määritettyjen verkkotilien "
+"yhteystietojen kanssa"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Lokeja ei ole. Kun soitat/vastaanotat puhelun tai lähetät/vastaanotat "
+"viestin, lokit tulevat näyttöön"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Käyntikortteja ei voi lähettää"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Merkitse oletusnumeroksi"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Merkitse oletussähköpostiksi"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Kuva"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Ota valokuva"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Poista valokuva"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Lisää alkunäytölle"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Tallenna yhteystieto kohteeseen"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Tallenna paikkaan"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Tuo SIM-kortin yhteystiedot"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Etunimi ensin"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Sukunimi ensin"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Näytä"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Piilota"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Lähetä käyntikortti"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Luo ryhmä"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Valitse ryhmä"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Tuo yht.tiedot"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Liitä yhteystieto"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Poista linkki"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Kaikki liitetyt yhteystiedot poistetaan"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Lisää Suosikkeihin"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Muokkaa ryhmää"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "L. jäsen"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Lisää ryhmään"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Lisätty suosikkeihin"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Tuntematon"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Syntymäpäivä"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Vuosipäivä"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Sunnuntai"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Maanantai"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Tiistai"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Keskiviikko"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Torstai"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Perjantai"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Lauantai"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Avustaja"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Veli"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Lapsi"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Kotim. kumppani"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Isä"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Ystävä"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Esimies"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Äiti"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Vanhempi"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Kumppani"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Suositellut"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Sukulainen"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Sisko"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Puoliso"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL-osoite"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "Pikaviesti"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Lisätietoja"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albania"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algeria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Amerikan Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua ja Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentiina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Australian merentakaiset territoriot"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Itävalta"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaidzan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahama"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Valko-Venäjä"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgia"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius ja Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnia-Hertsegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brasilia"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Brittiläiset Neitsytsaaret"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kambodza"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Kap Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Caymansaaret"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Keski-Afrikka"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Tsad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Kiina"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Kolumbia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Komorit"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cookinsaaret"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Norsunluurannikko"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Kroatia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kuuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curacao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Kypros"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Tsekin tasavalta"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Korean demokraattinen kansantasavalta"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Kongon demokraattinen tasavalta"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor-Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Tanska"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominikaaninen tasavalta"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egypti"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Päiväntasaajan Guinea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Viro"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falkland-saaret"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Färsaaret"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fidzi"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Suomi"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Ranskan eteläiset alueet"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Ranskan Guyana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Ranskan Polynesia"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Saksa"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Kreikka"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grönlanti"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Unkari"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islanti"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Intia"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irlanti"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italia"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaika"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japani"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordania"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazakstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenia"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgisia"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Laosin demokraattinen kansantasavalta"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Latvia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Libanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libya"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Liettua"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxemburg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagaskar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malesia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Malediivit"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshallinsaaret"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritania"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Mauritius"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Meksiko"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronesia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldova"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marokko"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mosambik"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibia"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Alankomaat"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Uusi-Kaledonia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Uusi-Seelanti"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Pohjois-Mariaanit"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norja"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua-Uusi-Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filippiinit"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Puola"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugali"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Romania"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Venäjän federaatio"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Saint Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts ja Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre ja Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent ja Grenadiinit"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome ja Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudi-Arabia"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychellit"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapore"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovakia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Salomonsaaret"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Etelä-Afrikka"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Espanja"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swazimaa"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Ruotsi"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Sveitsi"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Syyrian arabitasavalta"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadzikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tansania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thaimaa"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Entinen Jugoslavian tasavalta Makedonia"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad ja Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunisia"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turkki"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks- ja Caicossaaret"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraina"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Arabiemiirikunnat"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Ison-Britannian ja Pohjois-Irlannin yhdistynyt kuningaskunta"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Yhdysvallat"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Yhdysvaltain Neitsytsaaret"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatikaanin kaupunkivaltio"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis- ja Futunasaaret"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Jemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Sambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Matkapuhelin (koti)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Matkapuhelin (työ)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Tallennettu kansioon"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Tuo SD-kortilta"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Ryhmä ja ryhmän jäsenet"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s tallennettu kohteeseen %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Tämä yhteystieto poistetaan"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Valokuva"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Num.val."
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Varm.kop."
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Vain ryhmä"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Uusi ryhmä"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Valitse ryhmä"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Matkapuhelin 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Lisätty"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Siirretty"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Valittu"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Peruuta"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Ei tarpeeksi muistia"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Poistettu"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Etsi"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Sulje"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Poistettu"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Virhe"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Puhelu"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Ei SIM-korttia"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Valitse kaikki"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Epäonnistui"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Valmis"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Tallenna"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Lisää yhteystieto"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Avustajan nimi"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Poista ryhmä"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Ryhmän nimi"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Ryhmäsoittoääni"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Tallenna video"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Korvaa"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Pikavalinta"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Viesti"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Aseta soittoääneksi"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Kaikki yhteystiedot"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Yritys"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Muokkaa yhteystietoja"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Hae sähköpostiviesti"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Hae numero"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Ei ryhmää"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Osaanottaja"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Määritä kuva"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Pikavalinta ei ole käytössä"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Poista yhteystiedot"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr ""
+#~ "Muokkaa\n"
+#~ "ryhmiä"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Sähköposti"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Lisää suosikkeihin"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Muokkaa ryhmää"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Tyhjä"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Tallenna yhteystieto"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Valitse yhteystieto"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Lisää ryhmä"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Muisti on täynnä"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Poistetaan..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Yhteyshenkilöä ei voi lisätä ryhmään"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Päivitä"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Peruuta"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Yhteystiedot"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopioi"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Luo"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Sähköposti"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Viesti"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Siirrä"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Puhelin"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Tuntematon"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videopuhelu"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Poista"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Valmis"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Muokkaa"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Lähetä yhteystiedot"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Hae Exchange-palvelimelta"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Etunimi Sukunimi"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Sukunimi Etunimi"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Voit avata lisää kenttiä napauttamalla oikealla olevaa painiketta"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/fr_CA.po b/po/fr_CA.po
new file mode 100644
index 0000000..f32d2ea
--- /dev/null
+++ b/po/fr_CA.po
@@ -0,0 +1,1768 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Clavier"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favoris"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Composition rapide"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Messagerie vocale"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Journaux"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Aucun numéro abrégé. Affecter un numéro maintenant?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Échec de la demande"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Demande réussie"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Appel d'urgence"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Aucun journal"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Aucun favori"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Message supprimé"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Longueur maximum autorisée pour les numéros de téléphone dépassée"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Suppression des journaux..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Suppression des favoris..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Initialisation en cours. Essayez plus tard..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Désactiver son"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Activer son"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Écran précéd."
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Retour à l'appel"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Appel entrant"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Appel sortant"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Appel manqué"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Message envoyé"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Message reçu"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Appel rejeté"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Appel bloqué"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Modifier le numéro avant l'appel"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+#, fuzzy
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Tunisie"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Envoyer un courriel"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Sélectionner des journaux"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Sélectionner contacts numérotation rapide"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Débloquer"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Changer le contact"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Ajouter une pause de %d s"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Pause ferme"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Manqués"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Quitter"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Personnaliser"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobile"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Domicile"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Professionnel"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax - perso"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (Professionnel)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Numéro de l'assistant"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Téléav."
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Autre"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Téléphone"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Téléphone de voiture"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Domicile 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Numéro principal de l'entreprise"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Tous les contacts"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Non affecté"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Numéros de service"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Téléphone"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Groupes"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Par défaut"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Sonnerie"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Site Web"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Courriel"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Numéro"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Note"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Adresse postale"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Détails"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Société"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Ordre d'affichage des noms"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Mes numéros"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Prénom"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Nom de famille"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Deuxième prénom"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Suffixe"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Surnom"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Exporter les contacts"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Sélectionner les contacts"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Code postal"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Pays"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Province"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Ville"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Rue"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Enregistré dans %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Fréquemment contacté"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Copié"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exporté"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Suppression des contacts..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Déplacement..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Copie ..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importation des contacts SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importation des contacts depuis la carte de visite..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Exportation des contacts vers %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "Carte de visite"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Lecture de la carte de visite..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importé"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "s.o."
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Tous contacts associés"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Contacts associés"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Profession"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Service"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Nom de groupe"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Ajouter un compte"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Ajout des membres au groupe..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Afficher"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d contacts"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Renommer"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relation"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Aucun historique"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Aucune activité"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Ajout..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Info complémentaires"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Boite postale"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Province"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Amis"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Famille"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Collègues"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Professionnel"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Type de vibreur"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Définir par défaut"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Évènement"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Partager les informations du contact"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 contact"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wifi direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Exporter vers la carte SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Infos"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Historique"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Activités"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Message de groupe"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Courriel de groupe"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Aucun nom"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Adresse courriel incorrecte"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Complétez au moins un champ tel que nom"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Échec d'accès à la base de données"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Déjà ajouté"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Nom de groupe déjà utilisé"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Aucun groupe"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Aucun numéro"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Aucune adresse courriel"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Aucun contact"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Mémoire SIM vide"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Nombre maximum d'entrées dépassé"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Numéro non valide"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Mémoire SIM saturée"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Vous pouvez importer des contacts sur votre téléphone depuis votre carte SIM "
+"dans Paramètres > Importer les contacts ou effectuer une synchronisation "
+"avec les contacts du compte Web en utilisant Comptes dans Paramètres"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Aucun journal. Les journaux s'affichent lorsque vous passez/recevez un appel "
+"ou lors de l'envoi/la réception d'un message"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Impossible d'envoyer des cartes de visite"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Définir comme numéro par défaut"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Marquer comme courriel par défaut"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Image"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Photographier"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Supprimer la photo"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Ajouter à l'écran d'accueil"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Enregistrer le contact dans"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Enregistrer dans"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importer les contacts SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Prénom d'abord"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Nom en premier"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Afficher"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Masquer"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Envoyer la carte de visite"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Créer un groupe"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Sélectionner groupe"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Importer les contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Associer contact"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Dissocier"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Tous les contacts associés vont être supprimés"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Ajouter aux favoris"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Modifier le groupe"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Aj. membre"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Ajouter au groupe"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Ajouté aux favoris"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Inconnu"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Anniversaire"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Anniversaire"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Dimanche"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Lundi"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Mardi"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Mercredi"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Jeudi"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Vendredi"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Samedi"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistant"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Frère"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Enfant"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Conjoint(e)"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Père"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Ami"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Gestionnaire"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Mère"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Parent"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partenaire"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Recommandé par"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Proche"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Soeur"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Conjoint(e)"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "MI"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Plus d'informations"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afghanistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albanie"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algérie"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Samoa américaines"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorre"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua-et-Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentine"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Arménie"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australie"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territoires extérieurs de l'Australie"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Autriche"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaïdjan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahreïn"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbade"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Bélarus"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgique"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Bénin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermudes"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhoutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivie"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Saint-Eustache et Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnie-Herzégovine"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brésil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Iles Vierges britanniques"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgarie"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Cambodge"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Cameroun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cap-Vert"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "iles Caïmans"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "République centrafricaine"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "TCHAD"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chili"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Chine"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombie"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comores"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Iles Cook"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Côte d’Ivoire"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Croatie"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curaçao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Chypre"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "République Tchèque"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "République populaire démocratique de Corée"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "République démocratique du Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor-Oriental"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danemark"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominique"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "République dominicaine"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Équateur"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Égypte"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Guinée équatoriale"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Érythrée"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonie"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Éthiopie"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Iles Falkland"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Féroé"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fidji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finlande"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Terres australes françaises"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Guyane"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Polynésie française"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambie"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Géorgie"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Allemagne"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grèce"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Groenland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenade"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinée"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinée-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyane"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haïti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Hongrie"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islande"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Inde"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonésie"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Service téléphonique gratuit international"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Service à tarif majoré international (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Service à cout partagé international (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Iraq"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irlande"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israël"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italie"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaïque"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japon"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordanie"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazakhstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Corée"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Koweït"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirghizistan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "République démocratique populaire lao"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Lettonie"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Liban"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Libéria"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libye"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lituanie"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxembourg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "MADAGASCAR"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaisie"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldives"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malte"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Îles Marshall"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAURITANIE"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAURICE"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexique"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronésie"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldavie"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolie"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Monténégro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Maroc"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambique"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Birmanie"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibie"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Népal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Pays-Bas"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nouvelle-Calédonie"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nouvelle-Zélande"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Nioué"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Iles Mariannes du Nord"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norvège"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papouasie-Nouvelle-Guinée"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Pérou"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Philippines"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Pologne"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Porto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Roumanie"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Fédération de Russie"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Sainte-Hélène"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint-Kitts-et-Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Sainte Lucie"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint-Pierre-et-Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint-Vincent-et-les-Grenadines"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "Saint-Marin"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tomé-et-Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Arabie saoudite"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Sénégal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbie"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelles"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapour"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Saint-Martin"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovaquie"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovénie"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Iles Salomon"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalie"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Afrique du Sud"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Espagne"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Soudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Suède"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Suisse"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "République arabe syrienne"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taïwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tajikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzanie"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Télécommunications pour les populations sinistrées (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thaïlande"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Ancienne République yougoslave de Macédoine"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad et Tobago"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turquie"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkménistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Îles Turques et Caïques"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Ouganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraine"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Émirats arabes unis"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Royaume-Uni de Grande-Bretagne et d'Irlande du Nord"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "États-Unis d'Amérique"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "iles Vierges des États-Unis"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Télécommunications personnelles universelles (UTP)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Ouzbékistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "État de la Cité du Vatican"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis et Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yémen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambie"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobile - perso"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobile (Professionnel)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Enregistré dans"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importer depuis la carte SD"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Groupe et membres du groupe"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s enregistré dans %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Ce contact sera supprimé"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Photo"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Clavier"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Sauvegarde"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Groupe uniquement"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Nouveau groupe"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Sélectionner groupe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobile 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Ajouté"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Déplacé"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Sélectionné"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Annuler"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Mémoire insuffisante"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Retiré"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Recherche"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Fermer"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Supprimé"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Erreur"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Appeler"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Pas de carte SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Sélectionner tout"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Échec"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Terminé"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Sauv."
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Ajouter des contacts"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Nom de l'assistant"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Supprimer un groupe"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Nom de groupe"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Sonnerie groupe"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Enregistrer une vidéo"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Remplacer"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Composition rapide"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Mess."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Définir une sonnerie"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Tous les contacts"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Société"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Modifier les contacts"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Obtenir le courriel"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Obtenir le numéro"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Aucun groupe"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Participant"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Définir l'image"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Numérotation abrégée non utilisée"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Supprimer des contacts"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Modifier les groupes"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Courriel"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Ajouter aux favoris"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Modifier le groupe"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Vide"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Enregistrer contact"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Sélectionner un contact"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Ajouter un groupe"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Mémoire saturée"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Retrait..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Impossible d'ajouter le contact dans le groupe"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "MÀJ"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Annul."
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Contacts"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Copier"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Créer"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Courriel"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Message"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Déplacer"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Téléphone"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Inconnu"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Appel vidéo"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Supprimer"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "OK"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Modifier"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Envoyer les coordonnées"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Rechercher serveur Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Prénom Nom"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Nom Prénom"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Pour afficher d'autres champs, touchez le bouton à droite"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/fr_FR.po b/po/fr_FR.po
new file mode 100644
index 0000000..dbe173e
--- /dev/null
+++ b/po/fr_FR.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Clavier"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favoris"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Numérotation rapide"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Messagerie vocale"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Journaux"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Aucun numéro abrégé. Affecter un numéro maintenant ?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Echec de la demande"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Demande réussie"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Appel d'urgence"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Aucun journal"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Aucun favori"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Message supprimé"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Longueur maximum autorisée pour les numéros de téléphone dépassée"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Suppression des journaux..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Suppression des favoris..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Initialisation en cours. Essayez plus tard..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Son désactivé"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Son activé"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Ecran précéd."
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Retour à l'appel"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Appel entrant"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Appel sortant"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Appel manqué"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Message envoyé"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Message reçu"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Appel rejeté"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Appel bloqué"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Modifier le numéro avant l'appel"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Envoyer un e-mail"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Sélectionner des journaux"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Sélectionner contacts numérotation rapide"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Débloquer"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Modifier le contact"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Ajouter une pause de %d seconde(s)"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "En attente d'ajout"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Manqués"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Quitter"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Personnaliser"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobile"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Domicile"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Pro."
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax - perso"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax - Pro"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Numéro de l'assistant"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pager"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Autre"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Téléphone"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Téléphone de voiture"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Domicile 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Numéro principal de l'entreprise"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Tous les contacts"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Non affecté"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Numéro de service"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Téléphone"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Groupes"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Par défaut"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Sonnerie"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Site Web"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-mail"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Numéro"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Note"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Adresse postale"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Détails"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Société"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Ordre d'affichage des noms et prénoms"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Mon numéro"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Prénom"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Nom"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Deuxième prénom"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Suffixe"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Surnom"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Exporter contacts"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Sélectionner les contacts"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Code postal"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Pays"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Province"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Ville"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Rue"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Enregistré dans le dossier %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Fréquemment contacté"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Copié"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exporté"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Suppression des contacts..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Déplacement..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Copie..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importation des contacts SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importation des contacts depuis la carte de visite..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Exportation des contacts vers %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "Carte de visite"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Lecture de la carte de visite..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importé"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/A"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Tous contacts associés"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Contacts associés"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Profession"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Service"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Nom de groupe"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Ajouter compte"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Ajout des membres au groupe..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Afficher"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d contacts"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Renommer"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relation"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Aucun historique"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Aucune activité"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Ajout en cours..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Infos complémentaires"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Boîte postale"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Etat"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Amis"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Famille"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Collaborateurs"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Professionnel"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Type de vibreur"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Définir par défaut"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Evénement"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Partager les informations du contact"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 contact"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Exporter vers la carte SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Infos"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Historique"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Activités"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Message de groupe"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "E-mail de groupe"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Aucun nom"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "E-mail incorrect"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Complétez au moins un champ tel que nom"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Echec d'accès à la base de données"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Déjà ajouté"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Nom de groupe déjà utilisé"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Aucun groupe"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Aucun numéro"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Aucune adresse e-mail"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Aucun contact"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Mémoire SIM vide"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Nombre maximum d'entrées dépassé"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Numéro non valide"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Mémoire SIM saturée"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Vous pouvez importer des contacts sur votre téléphone depuis votre carte SIM "
+"dans Paramètres > Importer les contacts ou effectuer une synchronisation "
+"avec les contacts du compte Web en utilisant le menu Comptes dans Paramètres"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Aucun journal. Les journaux s'affichent lorsque vous passez/recevez un appel "
+"ou lors de l'envoi/la réception d'un message"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Impossible d'envoyer des cartes de visite"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Définir comme n° par défaut"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Marquer comme e-mail par défaut"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Image"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Prendre une photo"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Supprimer la photo"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Ajouter à l'écran d'accueil"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Enregistrer n° dans"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Enregistrer sur"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importer les contacts SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Prénom d'abord"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Nom en premier"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Afficher"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Masquer"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Envoyer carte de visite"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Créer un groupe"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Sélectionner groupe"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Import contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Associer contact"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Dissocier"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Tous les contacts associés vont être supprimés"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Ajouter aux favoris"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Modifier le groupe"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Aj. membre"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Ajouter au groupe"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Ajouté aux favoris"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Inconnu"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Anniversaire"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Occasion"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Dimanche"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Lundi"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Mardi"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Mercredi"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Jeudi"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Vendredi"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Samedi"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistant"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Frère"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Enfant"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Conjoint(e)"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Père"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Ami"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Gestionnaire"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Mère"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Parent"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partenaire"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Recommandé par"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Proche"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Soeur"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Epouse"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "MI"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Plus d'informations"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afghanistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albanie"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algérie"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Samoa américaines"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorre"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua et Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentine"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Arménie"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australie"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territoires extérieurs de l'Australie"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Autriche"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaïdjan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbade"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Bélarus"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgique"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Bénin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Les Bermudes"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhoutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivie"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Saint-Eustache et Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnie-Herzégovine"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brésil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Iles Vierges Britanniques"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgarie"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Cambodge"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Cameroun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cap Vert"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Îles Caïmans"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "République centrafricaine"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "TCHAD"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chili"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Chine"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombie"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comores"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Iles Cook"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Côte d’Ivoire"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Croatie"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curaçao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Chypre"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "République Tchèque"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "République populaire démocratique de Corée"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "République démocratique du Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor oriental"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danemark"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "La Dominique"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "République dominicaine"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Équateur"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egypte"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Guinée Équatoriale"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Érythrée"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonie"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Éthiopie"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Iles Falkland"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Iles Féroé"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finlande"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Terres australes et antarctiques françaises"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Guyane"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Polynésie française"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambie"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Géorgie"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Germany"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grèce"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Groenland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenade"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinée"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinée Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyane"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haïti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Hongrie"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islande"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Inde"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonésie"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Service téléphonique gratuit international"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Service à tarif majoré international (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Service à coût partagé international (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irlande"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israël"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italie"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaïque"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japon"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordanie"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazakhstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Corée"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Koweït"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirghizistan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "République démocratique populaire Lao"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Lettonie"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Liban"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Libéria"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libye"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lituanie"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxembourg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "MADAGASCAR"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaisie"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Les Maldives"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malte"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Îles Marshall"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAURITANIE"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAURICE"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexique"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronésie"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldavie"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolie"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Monténégro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Maroc"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambique"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Birmanie"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "NAMIBIE"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Népal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Pays-Bas"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nouvelle Calédonie"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nouvelle-Zélande"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Nioué"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Iles Mariannes du Nord"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norvège"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papouasie-Nouvelle-Guinée"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Pérou"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Les Philippines"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Pologne"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Porto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Roumanie"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Fédération de Russie"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Sainte Hélène"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts et Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Sainte Lucie"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint-Pierre et Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent et les Grenadines"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "Saint-Marin"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tomé-et-Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Arabie Saoudite"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Sénégal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbie"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelles"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapour"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Saint-Martin"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovaquie"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovénie"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Iles Salomon"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalie"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Afrique du Sud"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Espagne"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Soudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Suédois"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Suisse"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "République arabe syrienne"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taïwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tajikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzanie"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Télécommunications pour les populations sinistrées (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thaïlande"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Ancienne République yougoslave de Macédoine"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad et Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunisie"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turquie"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Iles Turques-et-Caïques"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Ouganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraine"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Émirats arabes unis"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Royaume-Uni de Grande-Bretagne et d'Irlande du Nord"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Etats-Unis d'Amérique"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Iles Vierges des Etats-Unis"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Télécommunications personnelles universelles (UTP)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Ouzbékistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Etat de la Cité du Vatican"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Viêtnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis et Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yémen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambie"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobile - perso"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobile (Pro)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Enregistré dans"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importer depuis la carte SD"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Groupe et membres du groupe"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s enregistré dans %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Ce contact sera supprimé"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Photo"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Clavier"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Sauvegarde"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Groupe uniquement"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Nouveau groupe"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Sélectionner groupe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobile 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Ajouté"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Déplacé"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Sélectionné"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Annuler"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Mémoire insuffisante"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Supprimé"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Rechercher"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Fermer"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Supprimé"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Erreur"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Appel"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Pas de carte SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Sélect. tout"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Echec"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Terminé"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Sauveg."
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Ajouter des contacts"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Nom de l'assistant"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Supprimer groupe"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Nom de groupe"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Sonnerie groupe"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Enregistrer une vidéo"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Remplacer"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Numérotation rapide"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Msg."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Définir sonnerie"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Tous les contacts"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Société"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Modifier les contacts"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Obtenir l'e-mail"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Obtenir le numéro"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Aucun groupe"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Participant"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Définir l'image"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Numérotation rapide non utilisée"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Supprimer des contacts"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Modifier groupes"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Ajouter aux favoris"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Modifier le groupe"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Vide"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Enregistrer numéro"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Sélectionner contact"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Ajouter groupe"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Mémoire saturée"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Suppression..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Impossible d'ajouter le contact dans le groupe"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Mettre à jour"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Annuler"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Contacts"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Copie"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Créer"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Message"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Déplacer"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Téléphone"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Inconnu"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Appel visio"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Supprimer"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Effectué"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Modifier"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Envoyer les coordonnées"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Rechercher serveur Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Prénom Nom"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Nom Prénom"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Pour afficher d'autres champs, appuyez sur le bouton à droite"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/ga.po b/po/ga.po
new file mode 100644
index 0000000..ce927ad
--- /dev/null
+++ b/po/ga.po
@@ -0,0 +1,1772 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr ""
+"Eochair\n"
+"cheap"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Ceanáin"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Meardhiailiú"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Glórphost"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Logaí"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Níl uimhir meardhiailithe ann. Sann ceann anois?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Theip ar iarratas"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "D'éirigh leis an iarratas"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Glao éigeandála"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Níl logaí ann"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Níl ceanáin ann"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Teachtaireacht scriosta"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Uasfhad don uimhir fóin sáraithe"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Logaí á scriosadh..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Ceanáin á scriosadh..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Ag túsú. Triail ar ball..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Fuaim as"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Fuaim air"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Scáileán roimhe"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Siar chuig glao"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Glao isteach"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Glao amach"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Glao caillte"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Teachtaireacht a seoladh"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Teachtaireacht a fuarthas"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Glao diúltaithe"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Glao bactha"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Cuir uimhir in eagar roimh ghlaoch uirthi"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+#, fuzzy
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "an Túinéis"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Seol r-phost"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Roghnaigh logaí"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Roghnaigh teagmhálaithe meardhiailithe"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Bain bac"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Athraigh teagmhálaí"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Cuir sos %d soic leis"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Cuir fanacht leis"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "A cailleadh"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Scoir"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Saincheaptha"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Fón Póca"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Baile"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Obair"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Facs (Baile)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Facs (Obair)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Uimhir an chúntóra"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Glaoire"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Eile"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Teileafón"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Facs"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Teileafón cairr"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Baile 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Príomhchuideachta"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Raidió"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Gach teagmhálaí"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Neamhsannta"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Uimhir sheirbhíse"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Fón"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grúpaí"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Réamhshocrú"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Clingthon"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Láithreán Gréasáin"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "R-phost"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Uimhir"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Nóta"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Seoladh poist"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Sonraí"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Cuideachta"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Ord an ainm taispeána"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "M’uimhir féin"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Céadainm"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Sloinne"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Dara ainm"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Iarmhír"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Leasainm"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Easpórtáil teagmhálaithe"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Roghnaigh teagmhálaithe"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Cód poist"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Tír"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Cúige"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Cathair"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Sráid"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Sábháilte in %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "I dteagmháil leo go minic"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Cóipeáilte"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Easpórtáilte"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Teagmhálaithe á scriosadh..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Ag bogadh..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Ag cóipeáil..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Teagmhálaithe SIM á n-iompórtáil..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Teagmhálaithe á n-iompórtáil ó vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Teagmhálaithe á n- easpórtáil chuig %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vChárta"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "vCard á léamh..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Iompórtáilte"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/B"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Gach teagmhál. nasctha"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Teagmhálaithe nasctha"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Teideal poist"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Roinn"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Ainm an ghrúpa"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Cuir cuntas leis"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Baill á gcur leis an ngrúpa..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Amharc air"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d teagmhálaí"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Athainmnigh"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Gaol"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Níl stair ann"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Níl gníomhaíochtaí ann"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Ag cur leis..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Faisnéis sa bhreis"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Bosca poist"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Stát"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Cairde"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Teaghlach"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Comhoibrithe"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Obair"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Patrún creatha"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Socraigh an réamhshocrú"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Imeacht"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Comhroinn faisnéis faoin teagmhálaí"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "Teagmhálaí amháin"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Easpórtáil chuig cárta SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Faisnéis"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Stair"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Gníomhaíochtaí"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Teachtaireacht grúpa"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "R-phost grúpa"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Níl ainm ann"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Seoladh r-phoist neamhbhailí"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Comhlánaigh réimse amháin ar a laghad agus ainm"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Theip ar rochtain ar bhunachar sonraí"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Curtha leis cheana"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Ainm an ghrúpa in úsáid cheana"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Níl Grúpa ann"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Níl uimhir ann"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Níl seoltaí r-phoist ann"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Níl teagmhálaithe ann"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Cuimhne SIM folamh"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Uaslíon na n-iontrálacha sáraithe"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Uimhir neamhbhailí"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Cuimhne SIM lán"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Is féidir leat teagmhálaithe a iompórtáil ón gcárta SIM chuig d'fhón i "
+"Socruithe > Iompórtáil teagmhálaithe nó sioncronú le teagmhálaithe chuntas "
+"Gréasáin ag úsáid cuntais sna socruithe"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Níl loga ann. Tar éis duit glao a chur/a fháil nó teachtaireacht a sheoladh/"
+"a fháil, taispeánfar logaí"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Ní féidir ainmchártaí a sheoladh"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Marcáil mar uimhir réamhshocraithe"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Marcáil mar r-phost réamhshocraithe"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Íomhá"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Glac grianghraf"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Bain grianghraf"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Cuir leis an scáileán Baile"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Sábháil teagmhálaí chuig"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Sábháil chuig"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Iompórtáil teagmhálaithe SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Céadainm ar dtús"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Sloinne ar dtús"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Taispeáin"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Folaigh"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Seol ainmchárta"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Cruthaigh grúpa"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Roghnaigh grúpa"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Iompórt. tgmhle"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Nasc teagmhálaí"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Bain nasc"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Scriosfar gach teagmhálaí nasctha"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Cuir le Ceanáin"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Cuir grúpa in eagar"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Cuir ball"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Cuir le grúpa"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Curtha le ceanáin"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Anaithnid"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Breithlá"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Lá cinn bliana"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Dé Domhnaigh"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Dé Luain"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Dé Máirt"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Dé Céadaoin"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Déardaoin"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Dé hAoine"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Dé Sathairn"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Cúntóir"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Deartháir"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Páiste"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Páirtí baile"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Athair"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Cara"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Bainisteoir"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Máthair"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Tuismitheoir"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Comhpháirtí"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Tarchurtha ag"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Gaol"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Deirfiúr"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Céile"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Tuilleadh eolais"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "an Afganastáin"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "an Albáin"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "an Ailgéir"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Samó Mheiriceá"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andóra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angóla"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Angaíle"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua agus Barbúda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "an Airgintín"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "an Airméin"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "an Astráil"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Críocha Seachtracha na hAstráile"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "an Ostair"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "an Asarbaiseáin"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "na Bahámaí"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bairéin"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "an Bhanglaidéis"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbadós"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "an Bhealarúis"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "An Bheilg"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "an Bheilís"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Beirmiúda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "an Bhútáin"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "an Bholaiv"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius agus Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "an Bhoisnia agus an Heirseagaivéin"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "an Bhotsuáin"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "an Bhrasaíl"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Oileáin Bhriotanacha na Maighdean"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brúiné Darasalám"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "an Bhulgáir"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "an Bhurúin"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "an Chambóid"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Camarún"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Ceanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Rinn Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Oileáin Cayman"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Poblacht na hAfraice Láir"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Chad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "an tSile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "an tSín"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "an Cholóim"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comoros"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Poblacht an Chongó"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Oileáin Cook"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Cósta Ríce"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "An Cósta Eabhair"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "an Chróit"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cúba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curaçao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "An Chipir"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Poblacht na Seice"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Daon-Phoblacht Dhaonlathach na Cóiré"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Poblacht Dhaonlathach an Chongó"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "An Tíomóir Thoir"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "An Danmhairg"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "an Phoblacht Dhoiminiceach"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Eacuadór"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "an Éigipt"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "an tSalvadóir"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Poblacht na Guine Meánchiorclaí"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "an Eiritré"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "an Eastóin"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "an Aetóip"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Oileáin Fháclainne"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Oileáin Fharó"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fidsí"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "an Fhionlainn"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "an Fhrainc"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Críocha Dheisceart na Fraince"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Guáin na Fraince"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Polainéis na Fraince"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "an Ghabúin"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "an Ghaimbia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "an tSeorsia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "An Ghearmáin"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Gána"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Giobráltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "an Ghréig"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "An Ghraonlainn"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Greanáda"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadalúip"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatamala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "an Ghuine"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guine-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "an Ghuáin"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Háítí"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Hondúras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Cong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "An Ungáir"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "an Íoslainn"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "an India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "an Indinéis"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Seirbhís Idirnáisiúnta Saorfhóin"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Seirbhís Idirnáisiúnta Ardráta (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Seirbhís Idirnáisiúnta Chomhroinnte Costais (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "an Iaráin"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "an Iaráic"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Éire"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Iosrael"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "an Iodáil"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Iamáice"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "an tSeapáin"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "an Iordáin"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "an Chasacstáin"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "an Chéinia"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Cireabaití"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "an Chóiré"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Cuáit"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "an Chirgeastáin"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Daon-Phoblacht Dhaonlathach Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "an Laitvia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "an Liobáin"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Leosóta"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "an Libéir"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "an Libia"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Lichtinstéin"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "an Liotuáin"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Lucsamburg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagascar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "an Mhaláiv"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "an Mhalaeisia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Oileáin Mhaildíve"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mailí"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Málta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Oileáin Marshall"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "an Mháratáin"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Oileán Mhuirís"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Meicsiceo"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronesia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "an Mholdóiv"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monacó"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "an Mhongóil"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montainéagró"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montsarat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Maracó"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mósaimbíc"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Maenmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "an Namaib"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nárúis"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Neipeal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "an Ísiltír"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "an Nua-Chaladóin"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "an Nua Shéalainn"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicearagua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "an Nigéir"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Oileáin Thuaisceart Mariana"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "an Iorua"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Óman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "an Phacastáin"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Nua-Ghuine Phapua"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paragua"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peiriú"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Na hOileáin Fhilipíneacha"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "an Pholainn"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "an Phortaingéil"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Pórtó Ríce"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Catar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "an Rómáin"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Cónaidhm na Rúise"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "San Héilin"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "San Críostóir-Nimheas"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre and Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "San Uinseann agus na Greanáidíní"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samó"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Mairíne"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "São Tomé agus Príncipe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "an Araib Shádach"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "an tSeineagáil"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "An tSeirbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Na Séiséil"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Siarra Leon"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singeapór"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "an tSlóvaic"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "an tSlóivéin"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Oileáin Sholomón"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "an tSomáil"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "an Afraic Theas"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "An Spáinn"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Srí Lanca"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "an tSúdáin"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "an tSuasalainn"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "An tSualainn"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "an Eilvéis"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Poblacht Arabach na Siria"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "an Téaváin"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "an Táidsíceastáin"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "an Tansáin"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Teileachumarsáid um Fhóirithint Anachaine (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "an Téalainn"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Poblacht Iar-Iúgslavach na Macadóine"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Tóga"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Oileán na Tríonóide agus Tobága"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "an Tuirc"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "an Tuircméanastáin"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr ""
+#~ "Oileáin na dTurcach agus Caicos (the Caribbean) /Oileáin Turks agus "
+#~ "Caicos (General)"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "an Úcráin"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Aontas na nÉimíríochtaí Arabacha"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Ríocht Aontaithe na Breataine Móire agus Thuaisceart Éireann"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Stáit Aontaithe Mheiriceá"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Oileáin Mheiriceánacha na Maighdean"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Seirbhís Uilíoch Teileachumarsáide Pearsanta (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uragua"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "an Úisbéiceastáin"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatú"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Stát Chathair na Vatacáine"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Veiniséala"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vítneam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Oileáin Vailís agus Futúna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Éimin"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "an tSaimbia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "an tSiombáib"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Fón póca (Baile)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Fón póca (Obair)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Sábháilte i"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Iompórtáil ón gcárta SD"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grúpa agus baill den ghrúpa"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s sábháilte in %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Scriosfar an teagmhálaí seo"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Grianghraf"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Diaileoir"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Cúltaca"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Grúpa amháin"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Grúpa nua"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Roghnaigh grúpa"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Fón póca 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Curtha leis"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Bogtha"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Roghnaithe"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Cuir ar ceal"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Easpa cuimhne"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Bainte"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Cuardaigh"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Dún"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Scriosta"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Earráid"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Glaoigh"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Níl SIM ann"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Roghnaigh gach"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Theip air"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "D’éirigh leis"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Sábháil"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Cuir teagmhálaithe leis"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Ainm an chúntóra"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Scrios grúpa"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Ainm an ghrúpa"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Clingthon grúpa"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Taifead físeán"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Ionadaigh"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Meardhiailiú"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Tcht."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Socraigh clingthon"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Gach teagmhálaí"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Cuideachta"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Cuir teagmhálaithe in eagar"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Faigh r-phost"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Faigh uimhir"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Níl Grúpa ann"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Rannpháirtí"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Socraigh íomhá"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Níl meardhiailiú á úsáid"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Scrios teagmhálaithe"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Cuir grúpaí in eagar"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "R-phost"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Cuir le ceanáin"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Cuir grúpa in eagar"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Folamh"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Sábháil teagmhálaí"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Roghnaigh teagmhálaí"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Cuir grúpa leis"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Cuimhne lán"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Ag baint…"
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Ní féidir teagmhálaí a chur isteach sa ghrúpa"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Nuashonraigh"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Ar Ceal"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Teagmhálaithe"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Cóipeáil"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Cruthaigh"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "R-phost"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Teachtaireacht"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Bog"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Fón"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Anaithnid"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Glao físe"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Scrios"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Déanta"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Eagraigh"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Seol sonraí teagmhála"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Cuardaigh freastalaí Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Céadainm Sloinne"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Sloinne Céadainm"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Maidir le tuilleadh réimsí, tapáil ar an gcnaipe ar dheis"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/gl.po b/po/gl.po
new file mode 100644
index 0000000..dd856f9
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Teclado"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favoritos"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Marcación rápida"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Correo de voz"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Rexistros"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Ningún número de marcación rápida. Asignar un agora?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Erro de solicitude"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Solicitude realizada con éxito"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Chamada de urxencia"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Non hai rexistros"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Non hai favoritos"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Mensaxe eliminada"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Superouse a lonxitude máxima do número de teléfono"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Eliminando rexistros..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Eliminando favoritos..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Iniciando. Téntao máis tarde..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Son desactivado"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Son activado"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Pant. anterior"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Volver á chamada"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Chamada entrante"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Chamada saínte"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Chamada perdida"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Mensaxe enviada"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Mensaxe recibida"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Chamada rexeitada"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Chamada bloqueada"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Editar número antes de chamar"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Enviar correo electrónico"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Seleccionar rexistros"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Seleccionar contactos de marcación rápida"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Desbloquear"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Cambiar contacto"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Engadir pausa de %d segundos"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Engadir espera"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Perdidas"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Saír"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Personalizado"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Móbil"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Particular"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Traballo"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (particular)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (Traballo)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Número do asistente"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Busca"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Outro"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Teléfono"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Teléfono do coche"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Particular 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Principal empresa"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Todos os contactos"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Non asignado"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Número de servizo"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Teléfono"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grupos"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Predeterminada"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Melodía"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Sitio web"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Correo electrónico"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Número"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Nota"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Enderezo postal"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Detalles"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Empresa"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Orde de nome de pantalla"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Número propio"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Nome"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Apelido"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Segundo nome"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Sufixo"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Alcume"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Exportar contactos"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Seleccionar contactos"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Código postal"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "País"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Provincia"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Cidade"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Rúa"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Gardado en %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Contactado frecuentemente"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Copiado"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exportado"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Eliminando contactos..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Movendo..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Copiando..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importando contactos da SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importando contactos da vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Exportando contactos a %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Lendo vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importado"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/D"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Todos contac. conect."
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Contactos enlazados"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Cargo"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Departamento"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Nome do grupo"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Engadir conta"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Engadindo membros ao grupo..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Ver"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d contactos"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "C. nome"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relación"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Non hai historiais"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Non hai actividades"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Engadindo..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Información adicional"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Apartado de correos"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Estado"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Amigos"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Familia"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Compañeiros de traballo"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Traballo"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Modelo de vibración"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Definir predeterminado"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Evento"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Comparte a información de contacto"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 contacto"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Exportar á tarxeta SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Información"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Historial"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Actividades"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Mensaxe de grupo"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Correo electrónico de grupo"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Sen nome"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Enderezo de correo electrónico non válido"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Completa polo menos un campo ademais do nome"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Non se puido acceder á base de datos"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Xa engadido"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Nome de grupo xa en uso"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Sen grupo"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Sen número"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Non hai enderezos de correo electrónico"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Sen contactos"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Memoria SIM baleira"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Superouse o número máximo de entradas"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Número non válido"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Memoria SIM chea"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Podes importar contactos da tarxeta SIM ao teu teléfono en Axustes > "
+"Importar contactos ou sincronizar cos contactos da túa conta web empregando "
+"as contas dos axustes"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Non hai rexistros. Despois de efectuar/recibir unha chamada ou enviar/"
+"recibir unha mensaxe, amosaranse os rexistros"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Non se poden enviar tarxetas de identificación"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Marcar como número predeterminado"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Marcar como correo electrónico predeterminado"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Imaxe"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Capturar unha foto"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Eliminar foto"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Engadir á pantalla de Inicio"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Gardar contacto en"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Gardar en"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importar contactos da SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Primeiro o nome"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Apelido en primeiro lugar"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Mostrar"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Ocultar"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Enviar tarxeta de visita"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Crear grupo"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Seleccionar grupo"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Importar cont."
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Enlazar contacto"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Desvincular"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Eliminaranse todos os contactos enlazados"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Engadir a Favoritos"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Editar grupo"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Eng. mem"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Engadir a grupo"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Engadido á favoritos"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Descoñecido"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Aniversario"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Aniversario"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Domingo"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Luns"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Martes"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Mércores"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Xoves"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Venres"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Sábado"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Asistente"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Irmán"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Neno"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Parella"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Pai"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Amigo"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Administrador"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Nai"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Pais"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Socio"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Referido por"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Familiar"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Irmá"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Cónxuxe"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "MI"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Máis información"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistán"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albania"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Alxeria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Samoa Americana"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguila"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua e Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Arxentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territorios externos de Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Acerbaixán"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Bielorrusia"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Bélxica"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belice"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benín"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermudas"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius e Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnia e Hercegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brasil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Illas Virxes Británicas"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Camboia"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Camerún"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canadá"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cabo Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Illas Caimán"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "República Centroafricana"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Chad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "China"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comores"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Illas Cook"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Costa do Marfil"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Croacia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curaçao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Chipre"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "República Checa"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "República Democrática Popular de Corea"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "República Democrática do Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Dinamarca"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego García"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "República Dominicana"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Exipto"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "O Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Guinea Ecuatorial"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopía"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Illas Malvinas"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Illas Faro"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fidxi"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finlandia"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Francia"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territorios Austrais Franceses"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Güiana Francesa"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Polinesia Francesa"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabón"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Xeorxia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Alemaña"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Xibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grecia"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Groenlandia"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Granada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadalupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Güiana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haití"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Hungría"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islandia"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Servizo de telefonía gratuíta internacional"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Servizo de tarifa Premium internacional (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Servizo de custo compartido internacional (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Irán"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Iraq"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irlanda"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italia"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Xamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Xapón"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Xordania"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazaxistán"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenia"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiritabi"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Corea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Quirguicistán"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "República Democrática Popular Lao"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Letonia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Líbano"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libia"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lituania"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxemburgo"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagascar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaisia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldivas"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Illas Marshall"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinica"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritania"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Mauricio"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "México"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronesia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldavia"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Mónaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marrocos"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambique"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibia"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Países Baixos"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nova Caledonia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nova Zelandia"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Níxer"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nixeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Illas Mariana do Norte"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Noruega"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Omán"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Paquistán"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panamá"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papúa-Nova Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguai"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Perú"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipinas"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polonia"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Porto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Romanía"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Federación Rusa"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Santa Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts e Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Santa Lucía"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "San Pedro e Miquelón"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "San Vicente e as Granadinas"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Mariño"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Santo Tome e Príncipe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Arabia Saudí"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelles"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Serra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "San Martiño"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Eslovaquia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Eslovenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Illas Salomón"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Sudáfrica"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "España"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudán"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Suazilandia"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Suecia"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Suíza"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "República Árabe Siria"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwán"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Taxiquistán"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecomunicacións de socorro en caso de desastre (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tailandia"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Antiga República Iugoslava de Macedonia"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidade e Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunicia"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turquía"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkeminstán"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Illas Turcas e Caicos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ucrania"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Emiratos Árabes Unidos"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Reino Unido de Gran Bretaña e Irlanda do Norte"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Estados Unidos de América"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Illas Virxes (Estados Unidos)"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Servizo de telecomunicacións persoal universal (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguai"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbequistán"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Estado da Cidade do Vaticano"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis e Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Móbil (particular)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Móbil (Traballo)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Gardado en"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importar da tarxeta SD"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grupo e membros do grupo"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s gardado en %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Eliminarase este contacto"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Foto"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Marcador"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Copia de seguridade"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Só grupo"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Novo grupo"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Seleccionar grupo"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Móbil 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Engadido"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Movido"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Seleccionado"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Cancelar"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Non hai suficiente memoria"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Eliminado"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Buscar"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Pechar"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Eliminado"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Erro"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Chamar"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Non hai SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Seleccionar todo"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Erro"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Éxito"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Gardar"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Engadir contactos"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Nome do asistente"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Eliminar grupo"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Nome do grupo"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Melodía grupo"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Gravar vídeo"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Substituír"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Marcación rápida"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Msx"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Establecer melodía"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Todos os contactos"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Empresa"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Editar contactos"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Obter correo electrónico"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Obter número"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Sen grupo"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Participante"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Establecer imaxe"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Non se está a empregar a marcación rápida"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Eliminar contactos"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Editar grupos"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Correo electrónico"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Engadir a favoritos"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Editar grupo"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Baleira"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Gardar contacto"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Seleccionar contacto"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Engadir grupo"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memoria chea"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Eliminando..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Non se pode engadir contacto ao grupo"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Actualizar"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Canc."
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Contactos"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Copiar"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Crear"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Correo electrónico"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Mensaxe"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Mover"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Teléfono"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Descoñecido"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videochamada"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Eliminar"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Finalizado"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Editar"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "Aceptar"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Enviar datos de contacto"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Buscar Exchange server"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Nome e Apelido"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Apelido e Nome"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Se desexas obter máis campos, toca o botón da dereita"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/hi.po b/po/hi.po
new file mode 100644
index 0000000..0c174cf
--- /dev/null
+++ b/po/hi.po
@@ -0,0 +1,1769 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "कुंजीपटल"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "पसंदीदा"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "शीघ्र डायल"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "वॉइस मेल"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "लॉग्स"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "कोई स्पीड डायल नंबर नहीं। अभी एक असाइन करें?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "अनुरोध असफल हुआ"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "सफलता स्‍वीकारें"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "आपातकाल कॉल"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "कोई लॉग नहीं"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "पसंदीदा नहीं"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "सन्देश हटाया गया है"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "अधिकतम फ़ोन नंबर लंबाई से अधिक हुई"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "लॉग्ज हटाएँ जा रहे हैं..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "पसंदीदा हटाएँ जा रहे हैं..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "प्रारंभ हो रहा है। बाद में प्रयास करें..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "ध्वनि बंद"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "ध्वनि शुरू"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "पिछली स्क्रीन"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "कॉल पर वापस"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "आनेवाली कॉल"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "जानेवाली कॉल"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "छूटी कॉल"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "भेजा गया सन्देश"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "प्राप्त सन्देश"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "अस्वीकृत कॉल"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "ब्लॉक की गई कॉल"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "कॉल करने से पहले नंबर संपादित करें"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "ईमेल भेजें"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "लॉग्ज चुनें"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "स्पीड डायल संपर्क चुनें"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "अनब्‍लॉक करें"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "संपर्क बदलें"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "%d सेकेंड विराम जोड़ें"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "प्रतीक्षा जोड़े"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "छूटा हुआ"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "निकास"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "कस्‍टम"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "मोबाइल"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "घर"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "काम"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "फैक्स (घर)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "फ़ैक्स (कार्यस्थल)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "सहायक का नंबर"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "पेजर"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "अन्य"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "टेलीफोन"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "फैक्स"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "कार टेलीफोन"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "होम 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "कंपनी मुख्य"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "रेडियो"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "सभी संपर्क"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "सौंपा नहीं गया"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "सेवा नंबर"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "फोन"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "समूह"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "डिफॉल्ट"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "रिंगटोन"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "वेबसाइट"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "ईमेल"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "नंबर"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "टिप्पणी"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "डाक का पता"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "विवरण"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "कम्पनी"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "प्रदर्शित नाम का क्रम"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "अपना नंबर"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "पहला नाम"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "अंतिम नाम"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "मध्य नाम"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "प्रत्यय"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "उपनाम"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "संपर्क निर्यात करें"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "संपर्क चुनें"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "डाक का कोड"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "देश"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "प्रांत"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "शहर"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "गली"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "%s में सुरक्षित किया गया"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "बार बार संपर्क किया गया"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "कॉपी हुआ"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "निर्यात किया गया"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "संपर्क हटाए जा रहे हैं..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "ले जा रहा है…"
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "कॉपी कर रहा है…"
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "SIM कांटेक्ट्स आयात कर रहा है..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "वीकार्ड-से संपर्क आयात किए जो रहे हैं..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "%s को संपर्क निर्यात किए जा रहे हैं..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "वीकार्ड"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "vCard पढ़ा जा रहा है..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "आयात किया हुआ"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "लागू नहीं"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "सभी लिंक किए संपर्क"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "लिंक किए हुए संपर्क"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "कार्य शीर्षक"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "विभाग"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "समूह का नाम"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "खाता जोड़ें"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "समूह में सदस्‍य जोड़े जा रहे हैं..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "देखें"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d संपर्क"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "पुन: नाम दें"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "संबंध"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "इतिहास नहीं"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "गतिविधियाँ नहीं"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "जोड़ रहा है…"
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "अतिरिक्त सूचना"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "PO बॉक्स"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "राज्य"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "मित्र"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "परिवार"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "सहयोगी"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "काम"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "कंपन स्वरूप"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "डिफ़ॉल्ट सेट करें"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "प्रसंग"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "संपर्क जानकारी साझा करें"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 संपर्क"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi डायरेक्ट"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "SIM कार्ड पर निर्यात करें"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "जानकारी"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "इतिहास"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "गतिविधियाँ"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "समूह Message"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "समूह इमेल"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "नाम नहीं"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "अमान्य ईमेल पता"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "कम से कम एक फ़ील्ड तथा नाम पूर्ण करें"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "डेटाबेस एक्सेस करने में विफल"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "पहले ही ज़ोड दिया है"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "समूह नाम पहले से उपयोग में"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "कोई समूह नहीं है"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "कोई नंबर नहीं"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "इमेल पते नहीं"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "कोई संपर्क नहीं"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "सिम मेमोरी खाली है"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "प्रविष्टियों की अधिकतम संख्‍या पहुँची"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "अमान्‍य नंबर"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "सिम मेमोरी पूर्ण"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"आप सेटिंग्स > संपर्क आयात करें में सीम कार्ड से आपके फ़ोन में संपर्क आयात कर सकते हैं या सेटिंग्स में "
+"खातें का उपयोग करते हुए वेब खाता संपर्कों के साथ सिंक कर सकते हैं"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"कोई लॉग नहीं है। आपके द्वारा कॉल किए जाने/प्राप्त करने या संदेश भेजने/प्राप्त करने के बाद, "
+"लॉग दिखाए जाएँगे"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "नाम कार्ड्स भेजने में असमर्थ"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "डिफॉल्ट नंबर के रूप में चिन्हित करें"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "डिफ़ॉल्‍ट ईमेल के रूप में चिन्हित करें"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "छवि"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "एक फोटो लें"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "फ़ोटो निकालें"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "होम स्क्रीन पर जोड़े"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "इसमें संपर्क सेव करें"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "में सुरक्षित करें"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "SIM कांटेक्ट्स आयात करें"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "प्रथम नाम पहले"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "पहले अंतिम नाम"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "दिखाएँ"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "छिपाएँ"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "नेमकार्ड भेजें"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "समूह बनाएँ"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "समूह चुनें"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "संपर्क आयात करें"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "कांटेक्ट लिंक करें"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "अनलिंक करें"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "सभी लिंक किए हुए संपर्क हटाये जाएंगे"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "पसंदीदा में जोड़ें"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "समूह संपादित करें"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "सदस्‍य जोड़ें"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "समूह में जोड़ें"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "पसंद में जोड़ा गया"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "अज्ञात"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "जन्मदिन"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "वर्षगाँठ"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "गूगल टॉक"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "विंडोज लाइव मैसेंजर"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "फेसबुक"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "लक्ष्य"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "जेब्बर"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "स्काइप"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "रविवार"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "सोमवार"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "मंगलवार"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "बुधवार"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "गुरूवार"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "शुक्रवार"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "शनिवार"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "सहायक"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "भाई"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "चाइल्ड"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "डोमेस्टिक पार्टनर"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "पिता"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "दोस्त"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "प्रबंधक"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "माता"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "पैरेंट"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "पार्टनर"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "इनके द्वारा संदर्भ"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "रिश्तेदार"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "बहन"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "स्पाउस"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "अधिक सूचना"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "अफ़गानिस्‍तान"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "अल्बानिया"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "अल्‍जीरिया"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "अमरिकी समोआ"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "अंदोरा"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "अंगोला"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "ऐंग्विला"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "ऐंटिग्वा और बार्बुदा"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "अर्जेंटिना"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "आर्मेनिया"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "अरुबा"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "ऑस्ट्रेलिया"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "ऑस्ट्रेलियन एक्सटर्नल टेरिटरीज़"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "ऑस्ट्रिया"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "अज़रबैजान"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "बहामा"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "बहरीन"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "बांगलादेश"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "बार्बाडोस"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "बेलारुस"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "बेल्जियम"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "बेलिज़"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "बेनिन"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "बरमूडा"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "भूतान"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "बोलिविया"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "बोनेर, सेंट इयुस्तेतिउस और साबा"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "बोस्निया और हर्ज़गोविना"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "बोस्टवाना"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "ब्राज़ील"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "ब्रिटिश वर्ज़िन द्वीप"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "ब्रुनेई दारेस्सलाम"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "बल्गेरिया"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "बूरकिना फ़ासो"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "बुरुंडी"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "कंबोडिया"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "कैमेरून"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "कनाडा"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "केप वर्डे"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "केमन द्वीप"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "सेंट्रल आफ्रिकी गणराज्य"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "चाड"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "चाइल"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "चीन"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "कोलंबिया"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "कोमोरो"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "कांगो"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "कुक द्वीप"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "कोस्टा रिका"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "कोत दी आयवोर"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "क्रोएटीया"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "क्यूबा"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "कुरैको"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "सायेप्रस्"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "जेक गणराज्य"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "डेमोक्रैटिक पीपल्स रिपब्लिक ऑफ़ कोरिया"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "कांगो लोकतांत्रिक गणराज्य"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "टीमर-लेस्ट"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "डेनमार्क"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "डीएगो गार्सिया"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "ज़िबुटी"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "डोमेनिका"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "डोमिनिकन गणराज्य"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "इक्वेडोर"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "इजिप्‍ट"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "एल साल्वाडोर"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "विषुववृत्तीय गिनी"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "इरिट्रिया"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "इस्टोनिया"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "इथियोपिया"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "फ़ाकलैंड द्वीप"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "फ़ेएरो द्वीप"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "फ़िजी"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "फ़िनलैंड"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "फ्रांस"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "फ़्रांसीसी दक्षिणी क्षेत्र"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "फ़्रेंच गयाना"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "फ़्रेंच पॉलिनेशिया"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "गैबोन"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "गांबिया"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "जॉर्जिया"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "ज़र्मनी"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "घाना"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "ज़िब्राल्टर"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "ग्रीस"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "ग्रीनलैंड"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "ग्रेनाडा"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "ग्वादेलूप"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "गुआम"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "ग्वाटेमाला"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "गिनी"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "गिनी-बिसौ"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "गयाना"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "हैती"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "होंडुरास"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "हांगकांग"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "हंगरी"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "आइसलैंड"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "भारत"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "इंडोनेशिया"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "इनमार्स्ट SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "इंटरनैशनल फ़्रीफ़ोन सर्विस"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "इंटरनैशनल प्रीमियम रेट सर्विस (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "इंटरनैशनल शेयर्ड कॉस्ट सर्विस (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "ईरान"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "इराक़"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "आयरलैंड"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "इज्राएल"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "इटली"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "जमैका"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "जापान"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "जोर्डन"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "कजाकिस्तान"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "केनिया"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "किरिबाती"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "कोरिया"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "कुवैत"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "किर्गिजस्तान"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "लाओ जनवादी लोकतांत्रिक गणराज्य"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "लैटविया"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "लेबनान"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "लेसोथो"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "लिबेरिया"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "लीबिया"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "लिचटेन्सटैन"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "लिथुआनिया"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "लक्जेंबर्ग"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "मकाउ"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "मादागास्कर"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "मालावी"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "मलैशिया"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "माल्दीव"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "मालि"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "माल्टा"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "मार्शल आयलैंड्स"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "मार्टिनिक"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "मौरिटानिया"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "मौरिशस"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "मेक्सिको"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "माइक्रोनेशिया"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "मोल्दोवा"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "मोनैको"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "मंगोलिया"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "मॉँटनेग्रो"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "मॉन्त्सेरात"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "मोरक्को"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "मोजांबिक"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "म्यानमार"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "नमिबिया"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "नाउरु"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "नेपाल"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "नीदरलैंड्स"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "न्यू कैलेडोनिया"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "न्यूजीलैंड"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "निकाराग्वा"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "नाइजर"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "नाइजीरिया"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "नियू"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "उत्तरी मरियाना द्वीप"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "नॉर्वे"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "ओमान"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "पाकिस्तान"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "पालौ"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "पनामा"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "पापुआ न्यू गिनी"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "पैराग्वे"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "पेरु"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "फ़िलिपीन्स"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "पोलंड"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "पुर्तगाल"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "प्वेर्टो रिको"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "क़तर"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "रुमानिया"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "रूसी संघ"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "रवांडा"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "सेंट हेलेना"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "सेंट किट्स अँड नेविस"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "सेंट ल्युसिया"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "सेंट पियर और मिकेलन"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "सेंट विन्सेंट और ग्रेनाडाइंस"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "सामोआ"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "सन मरिनो"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "साओ टोमे और प्रिंसिप"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "सऊदी अरब"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "सेनेगल"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "सर्बिया"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "सेशेल्स"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "सिएरा लियोन"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "सिंगापुर"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "सेंट मारतेन"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "स्लोवाकिया"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "स्लोवेनिया"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "सॉलोमन द्वीप"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "सोमालिया"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "दक्षिण आफ़्रिका"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "स्‍पेन"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "श्री लंका"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "सुडान"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "सुरिनाम"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "स्वाज़िलैंड"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "स्‍वीडन"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "स्विट्जरलैंड"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "सीरिया अरब गणराज्य"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "तैवान"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "ताज़िकिस्तान"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "टांजानिया"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "टेलीकम्यूनिकेशन्स फ़ॉर डिज़ास्टर रिलिफ़ (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "थाइलैंड"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "भूतपूर्व युगोस्लाव रिपब्लिक ऑफ़ मैसेडोनिया"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "टोगो"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "टोकेलौ"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "टोंगा"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "त्रिनिदाद और टोबैगो"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "ट्यूनिशिया"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "तुर्की"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "तुर्कमेनिस्तान"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "तुर्क्स और कैको द्वीप"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "तुवालु"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "युगांडा"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "युक्रेन"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "संयुक्त अरब अमीरात"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "युनाइटेड किंग्‍डम ऑफ़ ग्रेट ब्रिटन अँड नॉर्दन आयरलैंड"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "युनाइटेड स्टेट ऑफ अमरीका"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "युनाइटेड स्टेट्स वर्जिन आयलैंड्स"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "यूनिवर्सल पर्सनल टेलीकम्यूनिकेशन सर्विस (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "उरुग्वे"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "उजबेकिस्तान"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "वानाटू"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "वॅटीकन सिटी स्टेट"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "वेनेजुएला"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "वियतनाम"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "वालिस और फ्यूचूना"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "यमन"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "झांबिया"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "ज़िंबाब्वे"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "मोबाइल (घर)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "मोबाइल (कार्यस्थल)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "गूगल"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "इसमें सेव की गई"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "SD कार्ड से आयात करें"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "समूह और समूह सदस्य"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s को %s में सेव किया गया"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "यह संपर्क हटाया जाएगा"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "फोटो"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "डायलर"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "बैकअप"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "विनिमय करें"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "केवल समूह"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "नया समूह"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "समूह चुनें"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "मोबाइल 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "जोड़ा गया"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "ले जाया गया"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "चयनित"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "रद्द"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "पर्याप्‍त मेमोरी नहीं"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "हटाया"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "खोजें"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "बंद करें"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "हटाया गया"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "त्रुटी"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "कॉल"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "कोई SIM नहीं"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "सभी चुनें"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "असफल हुआ"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "सफलता"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "सेव"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "संपर्क जोड़ें"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "सहायक का नाम"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "समूह हटायें"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "समूह का नाम"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "समूह रिंगटोन"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "विडियो रिकॉर्ड करें"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "बदलें"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "शीघ्र डायल"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Msg."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "रिंगटोन सेट करें"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "सभी संपर्क"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "कम्पनी"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "संपर्क संपादित करें"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "इमेल पाएँ"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "नंबर पाएँ"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "कोई समूह नहीं है"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "भागीदार"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "छवि सेट करें"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Speed dial not in use"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "संपर्क हटाएँ"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "समूह संपादित करें"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "ईमेल"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "पसंद में जोड़ें"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "समूह संपादित करें"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "खाली"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "संपर्क सुरक्षित करें"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "संपर्क चुनें"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "समूह जोड़ें"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "मेमोरी पूर्ण"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "हटा रहा है…"
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "आपके समूह में कांटेक्ट जोडने में अक्षम"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "अपडेट करें"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "रद्द"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "ब्लूटूथ"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "संपर्क"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "कॉपी करें"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "बनाएँ"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "ईमेल"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "सन्देश"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "ले जाएँ"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "फोन"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "अज्ञात"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "विडियो कॉल"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "हटाएँ"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "हुआ"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "संपादन"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "ओके"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "कांटेक्ट विवरण भेजें"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "एक्सचेंज सर्वर खोजें"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "पहला नाम अंतिम नाम"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "अंतिम नाम पहला नाम"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "अधिक क्षेत्र के लिए, दाईं ओर पर बटन टैप करें"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/hr.po b/po/hr.po
new file mode 100644
index 0000000..d160fd8
--- /dev/null
+++ b/po/hr.po
@@ -0,0 +1,1769 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Tipke"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favoriti"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Brzo biranje"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Govorna pošta"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Pozivi"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Nema broja za brzo biranje. Dodijeliti sada?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Zahtjev neuspješan"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Zahtjev uspješan"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "SOS poziv"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Nema događaja"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Nema favorita"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Poruka obrisana"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Maks. duljina telefonskih brojeva"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Brisanje zapisa..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Brisanje favorita..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Pokretanje. Pokušajte kasnije..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Zvuk isključen"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Zvuk uključen"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Prethod. zaslon"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Natrag na poziv"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Dolazni poziv"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Odlazni poziv"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Propušteni poziv"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Poslana poruka"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Primljena poruka"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Poziv odbačen"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Poziv blokiran"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Uredi broj prije pozivanja"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Pošalji email"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Odaberite zapise"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Odaberite kontakte za brzo biranje"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Odblokiraj"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Promijeni kontakt"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Dodaj %d sek pauzu"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Dodaj čekanje"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Propušteni"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Prekid"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Prilagođeno"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobitel"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Kuća"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Posao"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Faks - kućni"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Faks (posao)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Broj pomoćnika"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pager"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Ostalo"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Faks"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Telefon - auto"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Doma 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Tvrtka glavni"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Svi kontakti"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Nedodijeljeno"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Mrežni imenik"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grupe"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Zadano"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Ton zvona"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Internet stranica"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Email"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Broj"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Bilješka"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Poštanska adresa"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Detalji"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Tvrtka"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Prikaz unosa"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Vlastiti broj"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Ime"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Prezime"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Srednje ime"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Sufiks"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Nadimak"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Izvezi kontakte"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Odaberite kontakte"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Poštanski broj"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Država"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Županija"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Grad"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Ulica"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Spremljeno u %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Najčešće kontaktirani"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Kopirano"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Eksportirano"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Brisanje kontakata..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Premještanje..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopiranje..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Učitavanje SIM Imenika..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Unos imenika s vKartice..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Izvoz kontakata u %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "Posjetnica"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Čitanje vCarda..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Uvezeno"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "nema"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Svi povezani kontakti"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Povezani kontakti"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Radno mjesto"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Odjel"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Naziv grupe"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Dodaj račun"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Dodavanje članova u grupu..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Prikaz"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d kontakata"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Preimenuj"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Veza"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Nema povijesti"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Nema aktivnosti"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Dodavanje..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Dodatne informacije"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Poštanski pretinac"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Država"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Prijatelji"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Obitelj"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Kolege"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Posao"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Način vibracije"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Postavite zadano"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Događaj"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Podijeli kontakt podatke"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 kontakt"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Izvoz na SIM karticu"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Povijest"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Aktivnosti"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Grupna poruka"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Grupni email"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Nema imena"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Neispravna email adresa"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Unesite ime i još najmanje jedno polje"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Pristupanje bazi neuspješno"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Već dodano"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Naziv grupe se već koristi"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Nema grupe"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Nema broja"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Nema email adresa"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Nema kontakata"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM memorija prazna"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Maks. broj unosa premašen"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Neispravan broj"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM memorija puna"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Uvezite kontakte sa SIM kartice u telefon u Postavkama > Uvezi kontakte ili "
+"sinkronizirajte s kontaktima internet računa pomoću računa u postavkama"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Nema zapisa. Zapisi će se prikazati nakon što uputite/primite poziv ili "
+"pošaljete/primite poruku."
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Nemoguće poslati posjetnice"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Označi kao postavljeni"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Označi kao zadani email"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Slika"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Fotografiranje"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Obriši fotografiju"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Dodaj na početni zaslon"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Spremiti kontakt u?"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Spremi na"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Učitaj SIM Imenik"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Prvo ime"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Prvo prezime"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Vidi"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Sakrij"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Pošalji posjetnicu"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Nova grupa"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Odaberite grupu"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Import Imenika"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Poveži kontakt"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Odspoji"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Obrisat će se svi povezani kontakti"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Spremi u Favorite"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Uredi grupu"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Dod. čl."
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Dodaj grupi"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Dodano u favorite"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Nepoznato"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Rođendan"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Godišnjica"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Nedjelja"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Ponedjeljak"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Utorak"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Srijeda"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Četvrtak"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Petak"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Subota"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Pomoćnik"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Brat"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Dijete"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Domaći partner"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Otac"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Prijatelj"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Voditelj"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Majka"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Roditelj"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partneri"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Odnosi se"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Rođak"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Sestra"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Supružnik"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "Adresa"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM poruke"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Detalji"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afghanistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albania"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algeria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Američka Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andora"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua and Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Vanjski teritoriji Australije"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbejdžan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahami"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Belarus"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgija"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius i Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnia and Herzegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "British Virgin Islands"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Cambodia"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Cameroon"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cape Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Kajmansko otočje"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Central African Republic"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Chad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "China"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comoros"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cook Islands"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Obala Bjelokosti"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Croatia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curacao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Cipar"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Czech Republic"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Demokratska Narodna Republika Koreja"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Democratic Republic of the Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Istočni Timor"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danska"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominican Republic"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egipat"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Equatorial Guinea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopija"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falkland Islands"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Farski otoci"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finland"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Francuski južni teritoriji"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Francuska Gvajana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "French Polynesia"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Njemačka"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grčka"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Greenland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Mađarska"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Island"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Usluga s besplatnim međunarodnim pozivima"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Usluga s premium cjenikom za međunarodne pozive (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Usluga s dijeljenjem troška međunarodnih poziva"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irska"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamajka"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japan"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordan"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazakhstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuvajt"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgistan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Narodna Demokratska Republika Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Latvia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Lebanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libya"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lithuania"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxembourg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Makao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagascar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaysia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldives"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Maršalovi otoci"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritania"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Mauritius"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexico"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronesia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldavija"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Morocco"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambique"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Mijanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibia"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Nizozemska"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "New Caledonia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "New Zealand"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Sjevernomarijanski otoci"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norway"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua New Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Philippines"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Poland"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Katar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Romania"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Ruska Federacija"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Sv. Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts i Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre and Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent and the Grenadines"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome and Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudi Arabia"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelles"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovačka"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Solomon Islands"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "South Africa"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Španjolska"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Švedska"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Switzerland"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Sirijska Arapska Republika"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Tajvan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tajikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telekomunikacije za saniranje katastrofa (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thailand"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Bivša jugoslavenska Republika Makedonija"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad and Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunis"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turska"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Otoci Turks i Caicos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraine"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "United Arab Emirates"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Ujedinjeno Kraljevstvo Velike Britanije i Sjeverne Irske"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Sjedinjene Američke Države"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Američko Djevičansko otočje"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Univerzalna osobna telekomunikacijska usluga (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatikan"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vijetnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis i Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobitel - kućni"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobitel (posao)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Spremljeno u"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Uvezi iz SD kartice"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grupa i članovi grupe"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s spremljeno u %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Ovaj će kontakt biti obrisan"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Fotografija"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Birač"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Sigurnosna kopija"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Samo grupa"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Nova grupa"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Odaberite grupu"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobitel 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Dodano"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Premješteno"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Odabrano"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Prekid"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Memorija nedovoljna"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Uklonjeno"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Traži"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Prekid"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Obrisano"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Greška"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Poziv"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Nema SIM-a"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Odaberi sve"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Neuspješno"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Uspješno"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Spremi"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Dodaj kontakte"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Ime pomoćnika"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Obriši grupu"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Naziv grupe"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Ton zvona grupe"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Video snimanje"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Zamijeni"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Brzo biranje"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Poruka"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Postavi ton zvona"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Svi kontakti"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Tvrtka"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Uredi imenik"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Preuzmi email"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Preuzmi broj"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Nema grupe"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Sudionik"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Postavi sliku"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Brzo biranje se ne koristi"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Obriši kontakte"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Uredi grupe"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Dodaj u Favorite"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Uredi grupu"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Prazno"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Spremi kontakt"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Odaberite kontakt"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Dodaj grupu"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memorija puna"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Uklanjanje..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Nemoguće dodati osobu u grupu"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Aktualiziraj"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Prekid"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Imenik"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopiraj"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Novi"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Poruka"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Premjesti"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Nepoznato"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Video poziv"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Obriši"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "OK"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Uredi"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Pošalji posjetnicu"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Pretraži Exchange poslužitelj"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Ime Prezime"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Prezime Ime"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Za više polja dodirnite gumb s desne strane"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/hu.po b/po/hu.po
new file mode 100644
index 0000000..18f9947
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,1772 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Billentyűzet"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Kedven-cek"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Gyorshívó gombok"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Hangposta"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Naplók"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Nincs gyorshívó szám. Hozzárendel egyet?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Sikertelen kérés"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Sikeres kérés"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Segélyhívás"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Nincs napló"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Nincsenek kedvencek"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Üzenet törölve"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Túllépte a telefonszámok maximális hosszát"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Naplók törlése..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Kedvencek törlése..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Telepítés. Próbálja meg később..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Hang ki"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Hang be"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Előző képernyő"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Vissza a híváshoz"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Bejövő hívás"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Kimenő hívás"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Nem fogadott hívás"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Elküldött üzenet"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Fogadott üzenet"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Elutasított hívás"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Blokkolt hívás"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Szám szerkesztése hívás előtt"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "E-mail küldése"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Naplók kiválasztása"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Gyorshívásos névjegyek kiválasztása"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Feloldás"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Névjegycsere"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "%d mp szünet a kapcsolás után"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Várakozás hozzáadása"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Nem fogadott"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Bezár"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Egyedi"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobil"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Otthoni"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Munkahelyi"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (otthoni)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (munkahelyi)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Helyettes száma"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Személyhívó"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Egyéb"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Autótelefon"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "2. otthoni"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "A cég fő száma"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Rádió"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Összes névjegy"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Nincs hozzárendelve"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Szolgáltató számai"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Csoportok"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Alapértelmezett"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Csengőhang"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Webhely"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-mail"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Szám"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Jegyzet"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Postacím"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Részletek"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Cég"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Név megjelenési sorrendje"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Saját szám"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Keresztnév"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Vezetéknév"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Középső név"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Titulus"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Becenév"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Névjegyek exportálása"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Névjegyet hozzáad"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Irányítószám"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Ország"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Tartomány"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Város"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Utca"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Mentve a(z) %s mappába"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Élénk kapcsolatban"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Átmásolva"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exportálva"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Névjegyek törlése..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Áthelyezés..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Másolás..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "SIM-névjegyek importálása..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Névjegyek importálása vCardból..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Névjegyek exportálása ide: %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "Névjegy"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "vCard olvasása..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importálva"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "nincs adat"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Minden csatolt névjegy"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Csatolt névjegyek"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Beosztás"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Osztály"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Csoport neve"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Fiók hozzáadása"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Tagok felvétele a csoportba..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Megnéz"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d névjegy"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Átnevez"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Kapcsolat"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Nincsenek előzmények"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Nincs tevékenység"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Hozzáadás..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "További információk"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Postafiók"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Állam"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Barátok"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Család"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Munkatársak"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Munkahelyi"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Rezgésminta"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Alapértelmezés beállítása"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Esemény"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Névjegyadatok megosztása"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 névjegy"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Exportálás a SIM-kártyára"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Infó"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Előzmények"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Tevékenységek"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Csoportos üzenet"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Csoportos e-mail"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Nincs név"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Érvénytelen e-mail cím"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Legalább egy mezőt töltsön ki, és adjon meg egy nevet"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Nem sikerült elérni az adatbázist"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Already added"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "A csoportnév már létezik"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Nincs csoport"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Nincs szám"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Nincs e-mail cím"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Nincs névjegy"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "A SIM-memória üres"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Túllépte a bejegyzések maximális számát"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Érvénytelen szám"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "A SIM-memória megtelt"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Névjegyeket importálhat a SIM kártyáról a telefonra a Beállítások > "
+"Névjegyek importálása paranccsal, vagy szinkronizálhat a webfiókok "
+"névjegyzékével a Beállítások Fiókok menüpontjában"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Nincs napló. Hívás kezdeményezése vagy fogadása, illetve üzenet küldése vagy "
+"fogadása után megjelenik a napló"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Nem lehet névjegykártyát küldeni"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Megjelölés alapértelmezett számként"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Megjelölés alapértelmezett e-mail címként"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Kép"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Fénykép készítése"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Fénykép eltávolítása"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Hozzáadás a kezdőképernyőhöz"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Név mentése ide"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Mentés ide"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "SIM-névjegyek importálása"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Utónév áll elöl"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Vezetéknév áll elöl"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Mutat"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Elrejtés"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "hanghívás"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Csoport létrehozása"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Válasszon csoportot"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Névjegyek imp."
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Névjegy csatolása"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Csatolás megszüntetése"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Minden csatolt névjegyet törölni fog"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Hozzáad a kedvencekhez"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Csoport szerkesztése"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Tagfelv."
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Hozzáadás a csoporthoz"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Hozzáadva a kedvencekhez"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Ismeretlen"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Születésnap"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Évforduló"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Vasárnap"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Hétfő"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Kedd"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Szerda"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Csütörtök"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Péntek"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Szombat"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Titkár"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Fiútestvér"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Gyermek"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Élettárs"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Apa"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Barát"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Vezető"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Anya"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Szülő"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Társ"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Ajánló"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Rokon"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Lánytestvér"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Házastárs"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "További információ"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganisztán"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albánia"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algéria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Amerikai Szamoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua és Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentína"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Örményország"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Ausztrália"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Ausztrál külső területek"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Ausztria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbajdzsán"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamák"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrein"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Banglades"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Fehéroroszország"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgium"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "BENIN"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhután"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolívia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius és Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosznia-Hercegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazília"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Brit Virgin-szigetek"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Állam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgária"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kambodzsa"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Zöldfoki-szigetek"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Kajmán-szigetek"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Közép-afrikai Köztársaság"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "CSÁD"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Kína"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Kolumbia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "COMORE-SZIGETEK"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongó"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cook-szigetek"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Elefántcsontpart"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Horvátország"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curaçao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Kypros"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Cseh Köztársaság"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Koreai Népi Demokratikus Köztársaság"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Kongói Demokratikus Köztársaság"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Kelet-Timor"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Dánia"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Dzsibuti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominika"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominikai Köztársaság"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egyiptom"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Egyenlítői-Guinea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Észtország"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiópia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falkland-szigetek"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Faeroe"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fidzsi"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finnország"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Franciao."
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Francia déli területek"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Francia Guyana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Francia Polinézia"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Grúzia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Germany"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghána"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltár"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Görögo."
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grönland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hongkong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Magyarország"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Izland"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonézia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Irán"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Írország"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Izrael"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Olaszo."
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japán"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordánia"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazahsztán"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuvait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgizisztán"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Laoszi Népi Demokratikus Köztársaság"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Lettország"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Libanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Libéria"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Líbia"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Livánia"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxembourg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Makaó"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "MADAGASZKÁR"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malajzia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldív-szigetek"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Málta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshall-szigetek"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAURITÁNIA"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAURITIUS"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexikó"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronézia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldova"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongólia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegró"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marokkó"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambik"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Mianmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "NAMÍBIA"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepál"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Hollandia"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Új-Kaledónia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Új-Zéland"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigéria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "North Mariana"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norvégia"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Omán"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakisztán"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Pápua Új-Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Fülöp-szigetek"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Lengyelország"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugália"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Katar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Románia"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Orosz Föderáció"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Szent Ilona"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts és Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre and Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent és Grenadine-szigetek"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Szamoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "São Tomé és Príncipe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Szaúd-Arábia"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Szenegál"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Szerbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelle-szigetek"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Szingapúr"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Szlovákia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Szovénia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Salamon-szigetek"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Szomália"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Dél-afrikai Köztársaság"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Spanyolország"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Srí Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Szudán"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Szváziföld"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Sweden"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Svájc"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Szíriai Arab Köztársaság"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Tajvan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tádzsikisztán"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzánia"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thaiföld"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Macedónia Volt Jugoszláv Köztársaság"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad és Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunézia"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Törökország"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Türkmenisztán"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks- és Caicos-szigetek"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukrajna"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Egyesült Arab Emírségek"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Nagy-Britannia és Észak-Írország Egyesült Királysága"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Amerikai Egyesült Államok"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Amerikai Virgin-szigetek"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Üzbegisztán"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatikáni Városállam"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis és Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Jemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobil (otthoni)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobil (munkahelyi)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Mentve ide:"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importálás SD-kártyáról"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Csoport és csoporttagok"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s mentve a(z) %s mappába"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Törli ezt a névjegyet?"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Fénykép"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Tárcsázó"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Biztonsági mentés"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Csak csoport"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Új csoport"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Válasszon csoportot"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "2. mobil"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Hozzáadva"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Áthelyezve"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Kiválasztva"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Mégse"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Kevés a memória"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Törölve"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Keresés"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Bezárás"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Törölve"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Hiba"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Hívás"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Nincs SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Összes kijelölése"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Sikertelen"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Sikeres"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Ment"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Névjegyzék hozzáadása"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Helyettes neve"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Csoport törlése"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Csoport neve"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Csop.csengőhang"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Videófelvétel"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Csere"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Gyorshívó gombok"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Üzenet"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Csengőhang beállítása"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Összes névjegy"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Cég"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Névjegyek szerkesztése"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "E-mail lekérése"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Szám lekérése"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Nincs csoport"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Részt- vevő"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Kép beállítása"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "A gyorshívás nincs használatban"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Névjegyek törlése"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr ""
+#~ "Csoportok\n"
+#~ "szerkesztése"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Kedvencekhez adás"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Csoport szerkesztése"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Kiürítés"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Mentés a névjegyzékbe"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Névjegy kiválasztása"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Csoportot felvesz"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memória megtelt"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Eltávolítás..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Nem vehető fel a névjegy a csoportba"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Frissítés"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Mégse"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Névjegyek"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Másol"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Létrehoz"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Üzenet"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Áthelyez"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Ismeretlen"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videohívás"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Töröl"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Kész"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Szerkeszt"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Névjegy adatainak elküldése"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Keresés az Exchange-szerveren"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Utónév Vezetéknév"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Vezetéknév Utónév"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "További mezőkért érintse meg a gombot jobboldalt"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/hy.po b/po/hy.po
new file mode 100644
index 0000000..12829ec
--- /dev/null
+++ b/po/hy.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Ստեղնախումբ"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Սիրվածներ"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Արագ համարհավաքում"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Ձայնային փոստ"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Մատյաններ"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Արագ հավաքման համար չկա: Հիմա վերագրե՞լ մի համար:"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Խնդրանքը ձախողվեց"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Հարցումը հաջող էր"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Հրատապ զանգ"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Մատյաններ չկան"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Սիրվածներ չկան"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Հաղորդագրությունը ջնջված է"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Հեռախոսահամարի առավելագույն երկարությունը գերազանցվել է"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Վերացվում են մատյաններ..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Վերացվում են սիրվածներ..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Նախակարգվում է: Փորձեք ավելի ուշ..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Ձայնն անջատել"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Ձայնը միացնել"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Նախորդ էկրանը"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Ետ դառնալ կանչին"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Մուտքային կանչ"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Ելից կանչ"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Բացթողած զանգ"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Ուղարկված հաղորդագրություն"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Ստացված հաղորդագրություն"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Մերժված կանչ"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Արգելափակված կանչ"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Խմբագրել համարը մինչ կանչելը"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Ուղարկել էլ. փոստ"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Ընտրել մատյաններ"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Ընտրել արագ համարահավաքման կոնտակտներ"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Արգելաբացել"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Փոխել կոնտակտը"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Ավելացնել %d վրկ. դադար"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Ավելացնել սպասում"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Բացթողած"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Ելք"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Կարգավորել"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Բջջային"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Տուն"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Աշխատանք"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Հեռապատճենը (Տան)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Ֆաքս (աշխատանքային)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Օգնականի համարը"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Հեռատող"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Այլ"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Հեռախոս"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Ֆաքս"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Ավտոմեքենայի հեռախոս"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Տուն 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Ընկերության հիմնական"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Ռադիո"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Բոլոր կոնտակտները"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Նշանակված չէ"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Ծառայության համարը"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Հեռախոս"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Խմբեր"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Լռելյայն"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Մեղեդի"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Ինտերնետ կայք"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Էլ.փոստ"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Համար"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Նշում"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Փոստի հասցե"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Մանրամասներ"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Ընկերություն"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Անվան ցուցադրման հերթականությունը"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Սեփական համարը"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Անուն"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Ազգանուն"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Հայրանունը"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Ածանց"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Մականուն"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Արտահանել կոնտակտներ"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Ընտրել կոնտակտներ"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Փոստային ինդեքս"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Երկիր"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Գավառ"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Քաղաք"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Փողոց"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Պահպանվել է %s-ում"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Հաճախակի կապ հաստատված"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Պատճենված է"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Արտահանված"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Վերացվում են կոնտակտներ..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Տեղափոխում..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Պատճենում է..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Ներմուծվում են SIM կոնտակտներ..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Կոնտակտների ներմուծում vCard-ից..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Արտահանվում են կոնտակտներ դեպի %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Կարդում է vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Ներմուծվեց"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Կիրառելի չէ"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Բոլոր կպվծ կոնտակտները"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Կապված կոնտակտներ"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Աշխատանքի վերնագիր"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Բաժին"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Խմբի անունը"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Հաշվի ավելացում"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Խմբին ավելացվում են անդամներ..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Դիտել"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d կոնտակտներ"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Վերանվանել"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Հարաբերություն"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Պատմություններ չկան"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Միջոցառումներ չկան"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Ավելացնում է..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Լրացուցիչ տվյալներ"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Բ. արկղ"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Նահանգ"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Ընկերներ"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Ընտանիք"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Աշխատակիցներ"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Աշխատանք"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Թրթռման ձևանմուշ"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Դնել կանխադրվածը"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Իրադարձություն"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Հաղորդել կոնտակտային տվյալները"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 կոնտակտ"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Արտահանել SIM քարտի մեջ"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Ինֆո"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Պատմություն"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Գործողություններ"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Խմբակային հաղորդագրություն"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Խմբակային էլ. փոստի հաղորդագրություն"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Անուն չկա"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Անվավեր էլ. փոստի հասցե"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Լրացնել առնվազն մեկ դաշտ, ինչպես նաև անունը"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Մուտքը տվյալների բազա ձախողվեց"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Արդեն ավելացված է"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Խմբի անունն արդեն օգտագործված է"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Խումբ չկա"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Համար չկա"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Էլփոստի հասցեներ չկան"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Կոնտակտներ չկան"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM-ի հիշողությունը դատարկ է"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Գերազանցվել է մուտքերի առավելագույն քանակը"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Անվավեր համար"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM-ի հիշողությունը լիքն է"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Կարող եք SIM քարտից կոնտակտներ ներմուծել Ձեր հեռախոսի մեջ՝ մտնելով Դրվածքներ "
+"> Ներմուծել կոնտակտներ, կամ համաժամացնել ինտերնետային հաշվի կոնտակտները՝ "
+"դրվածքներում օգտագործելով հաշիվները"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Մատյաններ չկան: Զանգը կատարելուց/ստանալուց կամ հաղորդագրություն ուղարկելուց/"
+"ստանալուց հետո կցուցադրվեն մատյանները"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Անհնար է անվանաքարտեր ուղարկել"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Նշել որպես լռելյայն համար"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Նշել որպես կանխադրված էլփոստ"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Պատկեր"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Լուսանկարել"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Հեռացնել լուսանկարը"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Ավելացնել Հիմնական էկրանին"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Պահել կոնտակտը"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Պահպանել"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Ներմուծել SIM կոնտակտներ"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Նախ անունը"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Նախ ազգանունը"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Ցուցադրել"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Թքցնել"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Ուղարկել անվանաքարտը"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Խումբ ստեղծել"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Ընտրեք խումբը"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Ներմուծ կոնտկտ"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Կապել կոնտակտ"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Կապից հանել"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Բոլոր կապված կոնտակտները կվերացվեն"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Ավելացնել սիրվածներ"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Խմբագրել խումբը"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Ավց անդամ"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Ավելացնել խմբին"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Ավելացված է սիրելիների մեջ"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Անհայտ"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Ծննդյան օր"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Տարեդարձ"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Մեսենջեր"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Կիրակի"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Երկուշաբթի"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Երեքշաբթի"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Չորեքշաբթի"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Հինգշաբթի"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Ուրբաթ"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Շաբաթ"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Օգնական"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Եղբայր"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Երեխա"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Կենակից"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Հայր"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Ընկեր"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Մենեջեր"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Մայր"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Ծնող"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Մասնակից"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Հղումը՝"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Ազգական"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Քույր"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Ամուսին / կին"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Այլ տեղեկություններ"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Աֆղանիստան"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Ալբանիա"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Ալժիր"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Ամերիկյան Սամոա"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Անդորա"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Անգոլա"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Անգուիլա"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Անտիգուա և Բարբուդա"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Արգենտինա"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Հայաստան"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Արուբա"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Ավստրալիա"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Ավստրալիական արտաքին տարածքներ"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Ավստրիա"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Ադրբեջան"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Բահամյան կղզիներ"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Բահրեյն"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Բանգլադեշ"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Բարբադոս"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Բելառուս"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Բելգիա"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Բելիզ"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Բենին"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Բերմուդյան կղզիներ"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Բուտան"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Բոլիվիա"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Բոնայրե, Սինտ-Էստատիուս և Սաբա"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Բոսնիա և Հերցեգովինա"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Բոտսվանա"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Բրազիլիա"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Բրիտանական Վիրգինյան կղզիներ"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Բրունեյ Դարուսսալամ"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Բուլղարիա"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Բուրկինա Ֆասո"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Բուրունդի"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Կամբոջա"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Կամերուն"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Կանադա"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Կապե Վերդե"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Կայման կղզիներ"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Կենտրոնաֆրիկյան Հանրապետություն"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Չադ"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Չիլի"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Չինաստան"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Կոլումբիա"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Կոմորյան կղզիներ"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Կոնգո"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Կուկի կղզիներ"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Կոստա Ռիկա"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Կոտ դ'Իվուար"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Խորվաթիա"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Կուբա"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Կյուրասաո"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Կիպրոս"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Չեխիայի Հանրապետություն"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Կորեայի Ժողովրդադեմոկրատական Հանրապետություն"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Կոնգոյի Ժողովրդական Հանրապետություն"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Թիմոր-Լեստե"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Դանիա"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Դիեգո Գարսիա"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Ջիբութի"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Դոմինիկա"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Դոմինիկյան Հանրապետություն"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Էկվադոր"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Եգիպտոս"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "Սալվադոր"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Հասարակածային Գվինեա"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Էրիթրեա"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Էստոնիա"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Եթովպիա"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Ֆոլկլենդյան կղզիներ"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Ֆարերյան կղզիներ"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Ֆիջի"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Ֆինլանդիա"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Ֆրանսիա"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Ֆրանսիական հարավային տարածքներ"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Ֆրանսիական Գվիանա"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Ֆրանսիական Պոլինեզիա"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Գաբոն"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Գամբիա"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Վրաստան"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Գերմանիա"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Գանա"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Ջիբրալթար"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Հունաստան"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Գրենլանդիա"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Գրենադա"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Գվադելուպա"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Գուամ"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Գվատեմալա"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Գվինեա"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Գվինեա-Բիսաու"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Գայանա"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Հայիթի"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Հոնդուրաս"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Հոնկ-Կոնգ"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Հունգարիա"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Իսլանդիա"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Հնդկաստան"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Ինդոնեզիա"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Միջազգային Freephone ծառայություն"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Միջազգային հավելավճարի սակագնի ծառայություն (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Միջազգային ընդհանուր արժեքի ծառայություն (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Իրան"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Իրաք"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Իռլանդիա"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Իսրայել"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Իտալիա"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Ջամայկա"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Ճապոնիա"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Հորդանան"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Ղազախստան"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Քենիա"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Կիրիբատի"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Կորեա"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Քուվեյթ"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Ղրղզստան"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Լաոսի Ժողովրդադեմոկրատական Հանրապետություն"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Լատվիա"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Լիբանան"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Լեսոտո"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Լիբերիա"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Լիբիա"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Լիխտենշտեյն"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Լիտվա"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Լյուքսեմբուրգ"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Մակաո"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Մադագասկար"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Մալավի"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Մալայզիա"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Մալդիվյան կղզիներ"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Մալի"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Մալթա"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Մարշալյան կղզիներ"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Մարտինիկա"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "ՄԱՎՐԻՏԱՆԻԱ"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Մաուրիտիուս"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Մեխիկո"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Միկրոնեզիա"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Մոլդովա"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Մոնակո"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Մոնղոլիա"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Մոնտենեգրո"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Մոնտսերատ"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Մարոկկո"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Մոզամբիկ"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Մյանմար"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Նամբիա"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Նաուրու"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Նեպալ"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Նիդեռլանդներ"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Նոր Կալեդոնիա"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Նոր Զելանդիա"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Նիկարագուա"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Նիգեր"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Նիգերիա"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Նիուե"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Հյուսիսային Մարիանյան կղզիներ"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Նորվեգիա"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Օման"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Պակիստան"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Պալաու"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Պանամա"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Պապուա Նոր Գվինեա"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Պարագվայ"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Պերու"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Ֆիլիպիններ"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Լեհաստան"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Պորտուգալիա"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Պուերտո Ռիկո"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Կատար"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Ռումինիա"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Ռուսաստանի Դաշնություն"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ռուանդա"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Սուրբ Հեղինեի կղզի"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Սենթ Կիտս և Նևիս"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Սանտա Լուչիա"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Սեն-Պիեռ և Միքելոն"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Սենտ Վինսենտ և Գրենադիններ"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Սամոա"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "Սան Մարինո"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Սան Տոմե և Պրինսիպի"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Սաուդյան Արաբիա"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Սենեգալ"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Սերբիա"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Սեյշելյան կղզիներ"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Սիեռա Լեոնե"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Սինգապուր"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Սինտ-Մաարտեն"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Սլովակիա"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Սլովենիա"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Սողոմոնյան կղզիներ"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Սոմալի"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Հարավային Աֆրիկա"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Իսպանիա"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Շրի Լանկա"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Սուդան"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Սուրինամ"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Սվազիլենդ"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Շվեդիա"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Շվեյցարիա"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Սիրիայի Արաբական Հանրապետություն"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Տայվան"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Տաջիկստան"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Տանզանիա"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Թաիլանդ"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Մակեդոնիայի Նախկին Հարավսլավական Հանրապետություն"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Տոգո"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Տոկելաու"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Տոնգա"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Տրինիդադ և Տոբագո"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Թունիս"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Թուրքիա"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Թուրքմենստան"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Տուրկս և Կայկոս կղզիներ"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Տուվալու"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Ուգանդա"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ուկրաինա"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Միավորված Արաբական Էմիրություններ"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Մեծ Բրիտանիայի և Հյուսիսային Իռլանդիայի Միացյալ Թագավորություն"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Ամերիկայի Միացյալ Նահանգներ"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Միացյալ Նահանգների Վիրգինյան կղզիներ"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Ուրուգվայ"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Ուզբեկստան"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Վանուատու"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Վատիկան քաղաք-պետություն"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Վենեսուելա"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Վիետնամ"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Ուոլիս և Ֆուտունա"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Յեմեն"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Զամբիա"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Զիմբաբվե"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Բջջայինը (Տան)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Շարժական (աշխատանքային)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Պահպանված է այստեղ՝"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Ներմուծել SD քարտից"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Խումբ և խմբի անդամներ"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s պահպանվել է %s-ում"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Այս կոնտակտը ջնջվելու է"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Լուսանկար"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Հմրհվքիչ"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Պհստ պտճն"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Միայն խումբ"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Նոր խումբ"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Ընտրեք խումբը"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Բջջային 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Ավելացված է"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Տեղափոխված է"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Ընտրված"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Չեղարկել"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Չկա բավական հիշողություն"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Հեռացված է"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Որոնել"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Փակել"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Ջնջված է"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Սխալ"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Զանգ"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "SIM չկա"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Ընտրել բոլորը"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Ձախողվեց"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Հաջողված է"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Պահել"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Ավելացնել կոնտակտներ"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Օգնականի անունը"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Ջնջել խումբը"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Խմբի անունը"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Խմբի կանչի մղդի"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Տեսագրել"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Փոխարինել"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Արագ համարհավաքում"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Հղգ."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Գործադրել զանգ"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Բոլոր կոնտակտները"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Ընկերություն"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Խմբագրել կոնտակտները"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Ստանալ էլփոստ"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Ստանալ համար"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Խումբ չկա"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Մասնակից"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Դնել պատկեր"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Արագ համարահավաքումը չի օգտագործվում"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Վերացնել կոնտակտներ"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Խմբագրել խմբեր"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Էլ.փոստ"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Հավելել Ընտրյալներին"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Խմբագրել խումբը"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Դատարկ է"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Պահպանել կոնտակտը"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Ընտրեք կոնտակտ"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Ավելացնել խումբ"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Հիշողութունը լիքն է"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Հեռացնում է..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Անհնար է կոնտակտ ավելացնել խմբին"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Թարմացնել"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Չեղկլ"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Կոնտակտներ"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Պատճենել"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Ստեղծել"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Էլ.փոստ"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Հաղորդագրություն"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Տեղափոխել"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Հեռախոս"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Անհայտ"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Վիդեո կանչ"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Ջնջել"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Պատրաստ"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Խմբագրել"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Ուղարկել կոնտակտի մանրամասները"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Որոնել Exchange սերվերում"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Անուն Ազգանուն"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Ազգանուն Անուն"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Այլ դաշտերի համար թակեք աջ կողմի կոճակը"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/is.po b/po/is.po
new file mode 100644
index 0000000..7f5ff59
--- /dev/null
+++ b/po/is.po
@@ -0,0 +1,1768 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Takkaborð"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Uppáhalds"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Hraðval"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Talhólf"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Notkunarskrár"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Ekkert hraðvalsnúmer. Velja eitt núna?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Beiðni tókst ekki"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Beiðni tókst"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Neyðarhringing"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Engar atvikaskrár"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Ekkert uppáhalds"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Boðum eytt"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Of langt símanúmer"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Eyði annálsskrám..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Eyði uppáhalds..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Grunnstilli. Reyndu síðar..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Hljóð af"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Hljóð á"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Fyrri skjár"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Aftur í símtal"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Móttekið símtal"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Hringt símtal"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Ósvarað"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Send skilaboð"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Móttekin skilaboð"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Hafnað símtal"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Útilokað símtal"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Breyta númeri fyrir símtal"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Senda tölvupóst"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Velja annála"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Velja hraðvalstengiliði"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Opna fyrir"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Breyta tengilið"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Bæta við %d sek. pásu"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Bæta við bið"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Ósvöruð"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Fara út"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Sérstilla"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Farsími"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Heima"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Vinna"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (heima)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (vinna)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Símanúmer aðstoðarmanns"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Símboði"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Annað"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Sími"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Bílasími"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Heima 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Aðalsími fyrirtækis"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Útvarp"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Allir tengiliðir"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Óúthlutað"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Þjónustunúmer"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Sími"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Hópar"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Sjálfgefið"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Hringitónn"
+
+#, fuzzy
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Erítrea"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Tölvupóstur"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Númer"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Athugasemd"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Póstfang"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Upplýsingar"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Fyrirtæki"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Röð birtra nafna"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Eigið númer"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Fornafn"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Eftirnafn"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Millinafn"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Viðskeyti"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Gælunafn"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Flytja út tengiliði"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Velja tengiliði"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Póstnúmer"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Land"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Hérað"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Borg"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Gata"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Vistað í %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Oft haft samband við"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Afritað"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Útflutt"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Eyði tengiliðum..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Verið er að flytja..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Afritun stendur yfir..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Flyt inn SIM-tengiliði..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Flyt inn tengiliði af vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Flyt út tengiliði í %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "Sýndarkort"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Les vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Flutt inn"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Óþekkt"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Alla tengda tengiliði"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Tengdir tengiliðir"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Starfsheiti"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Deild"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Heiti hóps"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Bæta við reikningi"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Bætir meðlimum við hóp..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Skoða"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d tengiliðir"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Endurnefna"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Samband"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Engin saga"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Engar aðgerðir"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Verið er að bæta við..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Viðbótarupplýsingar"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Pósthólf"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Fylki"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Vinir"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Fjölskylda"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Samstarfsmenn"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Vinna"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Titraramynstur"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Velja sjálfgefið"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Atburður"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Deila tengiliðaupplýsingum"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 tengiliður"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Flytja á SIM-kort"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Upplýsingar"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Saga"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Aðgerðir"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Hópskilaboð"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Hóptölvupóstur"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Ekkert heiti"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Ógilt netfang"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Fylltu út í a.m.k. einn reit auk þess að gefa upp nafn"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Mistókst að fá aðgang að gagnagrunni"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Þegar bætt við"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Heitið er þegar í notkun"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Enginn hópur"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Númer vantar"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Engin netföng"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Engir tengiliðir"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM-minni er tómt"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Hámarksfjölda færslna er náð"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Ógilt númer"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM-minni er fullt"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Hægt er að flytja inn tengiliði af SIM-korti yfir í síma í Stillingar > "
+"Flytja inn tengiliði eða samstilla tengiliði vefreiknings með reikningum í "
+"stillingum"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Engar skrár. Eftir að þú hringir/tekur við símtali eða sendir/tekur við "
+"skilaboðum verða skrár birtar"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Mistókst að senda nafnspjöld"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Merkja sem sjálfgefið númer"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Merkja sem sjálfgefinn póst"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Mynd"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Taka ljósmynd"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Fjarlægja mynd"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Setja á heimaskjá"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Vista tengilið í"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Vista í"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Flytja inn SIM-símaskrá"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Fornafn fyrst"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Fyrst eftirnafn"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Birta"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Hylja"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Senda nafnspjald"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Búa til hóp"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Velja hóp"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Flytja inn teng"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Tengja tengilið"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Aftengja"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Öllum tengdum tengiliðum verður eytt"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Bæta við uppáhalds"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Breyta hópi"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Bæta við meðlim"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Bæta við hóp"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Bætt við eftirlæti"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Óþekkt"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Afmælisdagur"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Afmæli"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Sunnudagur"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Mánudagur"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Þriðjudagur"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Miðvikudagur"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Fimmtudagur"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Föstudagur"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Laugardagur"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Aðstoðarm."
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Bróðir"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Barn"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Maki"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Faðir"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Vinur"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Yfirmaður"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Móðir"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Foreldri"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Félagi"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Ávísað af"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Ættingi"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Systir"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Maki"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "Vefslóð"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "Spjall"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Frekari upplýsingar"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albanía"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Alsír"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Bandaríska Samóa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angóla"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Angvilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antígva og Barbúda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentína"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenía"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Ástralía"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Ytri yfirráðasvæði Ástralíu"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austurríki"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Aserbaítsjan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahama-eyjar"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Barein"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladess"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Hvíta-Rússland"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgía"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belís"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benín"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermúda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bútan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bólivía"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius og Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnía og Hersegóvína"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botsvana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Bresku Jómfrúreyjar"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brúnei"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Búlgaría"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Búrkína Fasó"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Búrúndí"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kambódía"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerún"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Grænhöfðaeyjar"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Cayman-eyjar"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Mið-Afríkulýðveldið"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Tsjad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Kína"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Kólumbía"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Kómorey"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongó"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cookeyjar"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Kosta Ríka"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Fílabeinsströndin"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Króatía"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kúba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Kúrakaó"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Kýpur"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Tékkland"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Norður-Kórea"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Lýðveldið Kongó"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Austur-Tímor"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danmörk"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibútí"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dóminíka"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dóminíska lýðveldið"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ekvador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egyptaland"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Miðbaugs-Gínea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Eistland"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Eþíópía"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falklandseyjar"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Færeyjar"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fídjieyjar"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finnland"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Frönsku suðlægu landsvæðin"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Franska Gvæjana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Franska Pólýnesía"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambía"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgía"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Þýskaland"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Gana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gíbraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Greece"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grænland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Gvadelúp"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Gvam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Gvatemela"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Gínea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Gínea-Bissá"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Gvæjana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haítí"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Hondúras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Ungverjaland"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Ísland"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Indland"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indónesía"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Alþjóðleg frísímaþjónusta"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Alþjóðleg úrvalsþjónusta (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Alþjóðleg þjónusta með sameiginlegan kostnað (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Íran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Írak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Írland"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Ísrael"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaíka"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japan"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jórdanía"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kasakstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenýa"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kíribatí"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Kórea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kúveit"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgistan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Lettland"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Líbanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesótó"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Líbería"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Líbía"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Litháen"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Lúxemborg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Makaó"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagaskar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malaví"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malasía"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldívey"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Malí"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshalleyjar"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martiník"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Máritanía"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Máritíus"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexíkó"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Míkrónesía"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldóva"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Mónakó"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongólía"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Svartfjallaland"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marokkó"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mósambík"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Mjanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibía"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Holland"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nýja-Kaledónía"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nýja-Sjáland"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Níkaragva"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Níger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nígería"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Norður-Maríanaeyjur"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Noregur"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Óman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palá"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papúa Nýja-Gínea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paragvæ"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Perú"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filippseyjar"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Pólland"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Púertó Ríkó"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Katar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Rúmenía"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Rússland"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rúanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Sankti Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Sankti Kitts og Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Sankti Lúsía"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre and Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Sankti Vinsent og Grenadíneyjar"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samóa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marínó"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Saó Tóme og Prinsípe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Sádí-Arabía"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbía"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelles-eyjar"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Síerra Leóne"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapúr"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slóvakía"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slóvenía"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Salómonseyjar"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Sómalía"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Suður-Afríka"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Spánn"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Súdan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Súrínam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Svasíland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Svíþjóð"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Sviss"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Sýrland"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taívan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadsjikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tansanía"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Fjarskipti fyrir neyðaraðstoð (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Taíland"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Lýðveldið Makedónía"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Tógó"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tókelá"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trínidad og Tóbagó"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Túnis"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Tyrkland"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Túrkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks- og Caicos-eyjar"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Túvalúeyjar"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Úganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Úkraína"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Sameinuðu arabísku furstadæmin"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Bretland og Norður-Írland"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Bandaríkin"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Bandarísku Jómfrúaeyjar"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Alþjóðleg persónuleg fjarskiptaþjónusta (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Úrúgvæ"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Úsbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanúatú"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatíkanið"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venesúela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Víetnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis- og Fútúnaeyjar"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Jemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Sambía"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Simbabve"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Farsími (heima)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Farsími (Vinna)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Vistað í"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Flytja inn af SD-korti"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Hópur og meðlimir hópsins"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s var vistað í %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Þessum tengilið verður eytt"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Mynd"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Númeraval"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Varaafrit"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Aðeins hópur"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Nýr hópur"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Velja hóp"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Farsími 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Bætt við"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Flutt"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Valið"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Hætta við"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Ekki er nægt minni"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Fjarlægt"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Leit"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Loka"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Eytt"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Villa"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Símtal"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Ekkert SIM-kort"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Velja allt"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Mistókst"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Árangur"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Vista"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Bæta tengiliðum við"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Nafn aðstoðarmanns"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Eyða hópi"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Heiti hóps"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Hringitónn hóps"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Taka upp myndskeið"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Skipta út"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Hraðval"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Skilab"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Nota sem hringitón"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Allir tengiliðir"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Fyrirtæki"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Breyta tengiliðum"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Sækja tölvupóst"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Sækja númer"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Enginn hópur"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Þátttakandi"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Velja mynd"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Hraðval er ekki í notkun"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Eyða tengiliðum"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Breyta hópum"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Tölvupóstur"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Bæta við uppáhald"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Breyta hópi"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Tómt"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Vista tengilið"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Veldu tengilið"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Bæta við hópi"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Minni er fullt"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Verið er að fjarlægja..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Mistókst að bæta tengiliði við hóp"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Uppfæra"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Hætta"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Tengiliðir"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Afrita"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Búa til"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Tölvupóstur"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Skilaboð"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Færa"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Sími"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Óþekkt"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Vídeósímtal"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Eyða"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Lokið"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Breyta"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "Í lagi"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Senda upplýsingar um tengiliði"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Leit í Exchange Server"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Fornafn, eftirnafn"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Eftirnafn, fornafn"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Pikkaðu á hnappinn til hægri til að sjá fleiri reiti"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/it_IT.po b/po/it_IT.po
new file mode 100644
index 0000000..6391ac2
--- /dev/null
+++ b/po/it_IT.po
@@ -0,0 +1,1778 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Tastiera"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Preferiti"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Selezione rapida"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Segreteria telefonica"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Registri"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Numero di selezione rapida non assegnato. Assegnarlo ora?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Errore richiesta"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Richiesta riuscita"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Chiamata di emergenza"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Nessun registro"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Nessun preferito"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Messaggio eliminato"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Lunghezza massima di numeri di telefono superata"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Eliminazione registri in corso..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Eliminazione preferiti in corso..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Inizializzazione in corso. Riprovare più tardi..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Audio disattivato"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Audio attivato"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Scherm. preced."
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Torna alla chiamata"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Chiamata in arrivo"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Chiamata in uscita"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Chiamata persa"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Messaggio inviato"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Messaggio ricevuto"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Chiamata rifiutata"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Chiamata bloccata"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Modifica nr. prima di chiamare"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contac"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Invia e-mail"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Seleziona registri"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Seleziona contatti di selezione rapida"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Sblocca"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Modifica contatto"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Agg. pausa di %d"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Aggiungi attesa"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Perse"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Esci"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Personale"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Cellulare"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Casa"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Ufficio"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (Casa)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (Ufficio)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Numero assistente"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Cercapersone"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Altri"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefono"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Telefono auto"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Abitazione 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Principale azienda"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Tutti i contatti"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Non assegnato"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Numero servizio"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefono"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Gruppi"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Predefinito"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Suoneria"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Sito Web"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-mail"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Numero"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Nota"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Indirizzo postale"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Dettagli"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Azienda"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Ordine visualizzazione nome"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Numero personale"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Nome"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Cognome"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Secondo nome"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Suffisso"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Soprannome"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Esporta contatti"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Seleziona contatti"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "CAP"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Paese"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Provincia"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Città"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Indirizzo"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Salvato come %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Contattati più frequentemente"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Copiato"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Esportazione eseguita"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Eliminazione contatti in corso..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Spostamento..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Copia..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importazione contatti SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importazione contatti della vCard in corso..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Esportazione contatti a %s in corso..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Lettura vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importati"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/D"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Tutti i cont. colleg."
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Contatti collegati"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Mansione"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Reparto"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Nome gruppo"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Aggiungi account"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Aggiunta membri al gruppo in corso..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Visualizza"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d contatti"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Rinomina"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relazione"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Nessuna cronologia"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Nessuna attività"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Aggiunta in corso..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Altre informazioni"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Casella postale"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Stato"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Amici"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Famiglia"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Colleghi"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Ufficio"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Schema vibrazione"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Impostazione predefinita"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Evento"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Condividi informazioni contatto"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 contatto"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Esporta su scheda SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Cronologia"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Attività"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Messaggio di gruppo"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "E-mail di gruppo"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Nessun nome"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Indirizzo e-mail non valido"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Completare almeno un campo e il nome"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Impossibile accedere a database"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Già aggiunto"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Nome gruppo già in uso"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Nessun gruppo"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Nessun numero"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Nessun indirizzo e-mail"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Nessun contatto"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Memoria SIM vuota"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Superato numero massimo di voci"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Numero non valido"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Memoria SIM piena"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"È possibile importare i contatti dalla scheda SIM sul proprio telefono in "
+"Impostazioni > Importa contatti oppure eseguire la sincronizzazione dei "
+"contatti degli account web utilizzando gli account nelle impostazioni"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Nessun registro. Dopo aver effettuato/ricevuto una chiamata o inviato/"
+"ricevuto un messaggio, verranno visualizzati i registri"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Impossibile inviare biglietti da visita"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Segna come numero predefinito"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Segna come e-mail predefinita"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Immagine"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Scatta foto"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Rimuovi foto"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Aggiungi a schermata Home"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Salva contatto in"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Salva in"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importa contatti SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Prima nome"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Prima cognome"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Mostra"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Nascondi"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Invia biglietto da visita"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Crea gruppo"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Seleziona gruppo"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Imp. contatti"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Collega contatto"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Scollega"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Tutti i contatti collegati saranno eliminati"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Aggiungi a Preferiti"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Modifica gruppo"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Agg.membro"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Aggiungi a gruppo"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Aggiunto a preferiti"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Sconosciuto"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Data di nascita"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Anniversario"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Domenica"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Lunedì"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Martedì"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Mercoledì"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Giovedì"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Venerdì"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Sabato"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistente"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Fratello"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Bambino"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Partner nazionale"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Padre"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Amico"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Responsabile"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Madre"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Genitore"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "In base a"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Parente"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Sorella"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Coniuge"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Altre informazioni"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afghanistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albania"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algeria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Samoa Americane"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua e Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territori esterni australiani"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaijan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Bielorussia"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgio"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "BENIN"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius e Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnia-Erzegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brasile"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Isole Vergini Britanniche"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Cambogia"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Camerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Capo Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Cayman, isole"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Repubblica Centrafricana"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Chad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Cile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Cina"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comore"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Isole Cook"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Costa d'Avorio"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Croazia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curacao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Cipro"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Repubblica Ceca"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Repubblica Democratica Popolare di Corea"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Repubblica Democratica del Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor Est"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danimarca"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Repubblica Dominicana"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egitto"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Guinea Equatoriale"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Isole Falkland"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Isole Faroe"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finlandia"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Francia"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territori Francesi Meridionali"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Guyana francese"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Polinesia francese"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Germania"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibilterra"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grecia"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Groenlandia"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadalupa"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Ungheria"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islanda"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Servizio telefonico internazionale gratuito"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr ""
+#~ "International Premium Rate Service (IPRS, Serv. internaz. a tariffa "
+#~ "maggiorata)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr ""
+#~ "International Shared Cost Service (ISCS, Serv. Internaz. di condivisione "
+#~ "costi)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Iraq"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irlanda"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israele"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italia"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Giamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Giappone"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Giordania"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazakhstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Corea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kyrgyzstan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Repubblica Democratica Popolare del Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Latvia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Libano"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libia"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lituania"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Lussemburgo"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagascar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malesia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldive"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshall, isole"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinica"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritania"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Mauritius"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Messico"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronesia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldavia"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Principato di Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marocco"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambico"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "NAMIBIA"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Paesi Bassi"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nuova Caledonia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nuova Zelanda"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Isole Marianne Settentrionali"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norvegia"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Nuova Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Perù"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filippine"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polonia"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portogallo"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Porto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Romania"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Federazione Russa"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Sant'Elena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts e Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Santa Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre e Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent e Grenadine"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tomé e Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Arabia Saudita"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelles"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapore"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovacchia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Isole Salomone"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Sudafrica"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Spagna"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Svezia"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Svizzera"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Repubblica Araba di Siria"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tajikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr ""
+#~ "Telecommunications for Disaster Relief (TDR, Telecomun. in caso di "
+#~ "disastro ambientale)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tailandia"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Macedonia, ex Repubblica Jugoslava"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad e Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunisia"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turchia"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Isole Turks e Caicos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ucraina"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Emirati Arabi Uniti"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Regno Unito di Gran Bretagna e Irlanda del Nord"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Stati Uniti d'America"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Isole Vergini americane"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr ""
+#~ "Universal Personal Telecommunication Service (UPT, Servizio "
+#~ "telecomunicaz. personali universali)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Città del Vaticano"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis e Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Cellulare (Casa)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Cellulare (Ufficio)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Salvata in"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importa da scheda SD"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Gruppo e membri gruppo"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s salvato in %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Questo contatto sarà eliminato"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Foto"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Tastiera"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Backup"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Solo gruppo"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Nuovo gruppo"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Seleziona gruppo"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Cellulare 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Aggiunto"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Spostato"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Selezionato"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Annulla"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Memoria insufficiente"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Rimosso"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Cerca"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Chiudi"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Eliminato/i"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Errore"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Chiama"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Nessuna SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Seleziona tutto"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Errore"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Operazione eseguita"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Salva"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Aggiungi contatti"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Nome assistente"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Elimina gruppo"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Nome gruppo"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Suoneria gruppo"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Registra video"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Sostituisci"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Selezione rapida"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Mess."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Imposta suoneria"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Tutti i contatti"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Azienda"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Modifica contatti"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Richiedi e-mail"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Richiedi numero"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Nessun gruppo"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Partecipante"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Imposta immagine"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Selezione rapida non in uso"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Elimina contatti"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Modifica gruppi"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Aggiungi a preferiti"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Modifica gruppo"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Vuoto"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Salva contatto"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Seleziona contatto"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Aggiungi gruppo"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memoria piena"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Rimozione..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Impossibile aggiungere contatto al gruppo"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Aggiorna"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Annulla"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Rubrica"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Copia"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Crea"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Messaggio"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Sposta"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefono"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Sconosciuto"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videochiamata"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Elimina"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Fatto"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Modifica"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Invia dettagli contatto"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Cerca nel server Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Nome Cognome"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Cognome Nome"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Per altri campi, toccare il pulsante sulla destra"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/ja_JP.po b/po/ja_JP.po
new file mode 100644
index 0000000..f7c51dd
--- /dev/null
+++ b/po/ja_JP.po
@@ -0,0 +1,1769 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "キーパッド"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "お気に入り"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "スピード​ダイヤル​"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "留守番電話"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "履歴"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "スピードダイヤル番号がありません。今すぐ割り当てますか?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "要求​に​失敗​しました"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "要求に成功しました。"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "緊急通報"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "履歴がありません。"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "お気に入りがありません。"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "メッセージを削除しました。"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "電話番号の最大桁数を超えています。"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "ログを削除中..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "お気に入りを削除中..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "初期化中です。後ほどお試しください..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "サウンドOFF"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "サウンドON"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "前​画面"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "通話に​戻る"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "音声​着信"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "発信"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "不在着信"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "送信メッセージ"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "受信メッセージ"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "拒否​した​着信"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "ブロック​した​着信"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "​編集して発信"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Eメール送信"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "ログの選択"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "スピードダイヤル連絡先を選択"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "ブロック解除"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "連絡先変更"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "%d秒間の停止を追加"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "待機を​追加"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "未確認"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "終了"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "カスタム"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "モバイル"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "自宅"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "勤務先"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "FAX(自宅)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "FAX(仕事)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "アシスタント​の​番号"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "ポケベル"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "その他"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "電話"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "FAX"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "自動車​電話"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "ホーム 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "会社代表番号"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "ラジオ"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "全ての連絡先"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "グループ​なし"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "サービス​番号"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "本体"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "グループ"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "標準"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "着信音"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Webサイト"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Eメール"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "番号"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "説明"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "​住所"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "詳細"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "会社"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "表示名​順"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "自局​番号"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "名"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "姓"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "ミドル​ネーム"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "敬称"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "ニックネーム"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "連絡先​を​エクスポート"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "連絡先を選択"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "郵便​番号"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "国"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "都道府県"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "市区町村"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "番地"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "%sに保存しました。"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "よく使う連絡先"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "コピーしました。"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "エクスポート​しました"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "連絡先​を​削除中..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "移動中..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "コピー中..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "SIM​の​連絡先​を​インポート中..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "連絡​先​を​vCard​から​イン​ポート​中..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "%sへ連絡先をエクスポート中..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "vCard​を​読み​込み​中..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "インポートしました。"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "なし"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "全て​の​リンク​された​連絡先"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "リンク済の連絡先"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "役職"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "部門"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "グループ​名"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "アカウント​追加"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "メンバー​を​グループ​に​追加​して​います​..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "表示"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d件​の​連絡先"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "名前​を​変更"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "関係"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "履歴が​ありません"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "近況が​ありません。"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "追加中..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "追加​情報"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "私書箱"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "都道府県"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "友だち"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "家族"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "同僚"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "仕事"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "バイブパターン"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "メイン​連絡先​を​設定"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "イベント"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "連絡先情報の共有"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1件の連絡先"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "SIMカードにエクスポート"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "詳細"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "履歴"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "近況"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "グループ​メッセージ"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "グループ​Eメール"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "名前なし"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Eメールアドレスが正しくありません。"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "名前​と​少なく​とも​1つ​以上​の​項目​を​入力​して​ください。"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "データ​ベース​への​アクセス​に​失敗​しました"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "既に​登録​されて​います。"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "グループ名は既に使用されています。"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "グループ​なし"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "番号なし"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Eメール​アドレス​が​あり​ません。"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "連絡先がありません。"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "USIMメモリが空です"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "最大​登録数​を​超え​ました。"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "番号​が​無効​です。"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIMメモリがいっぱいです"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"[設定]>[連絡先をインポート]でSIMカードから本体に連絡先をインポートできます。"
+"また、設定されているアカウントを使用してWebアカウントの連絡先と同期できます。"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"履歴がありません。電話を発着信するか、メッセージを送受信した後に、履歴が表示"
+"されます。"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "名刺を送信できません。"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "メインの番号に設定"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "基本​Eメール​として​指定"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "画像"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "カメラ​を​起動"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "画像を削除"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "ホーム​画面​に​追加"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "アカウントに連絡先を作成"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "保存先​設定"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "SIM内​から​連絡先​を​インポート"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "名前を先に表示"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "姓を先に表示します。"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "表示"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "非表示"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "名刺を送信"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "グループ​を​作成​"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "グループ​を​選択"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "連絡先​を​インポート"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "リンク先を追加"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "リンク​解除"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "リンクした連絡先は全て削除されます"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "お気​に​入り​に​追加"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "グループ​を編集​"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "メンバー​追加​"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "グループ​に​追加​"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "お気に入り​に​追加​しました。"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "不明"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "誕生日"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "記念日"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Googleトーク"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "日曜日"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "月曜日"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "火曜日"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "水曜日"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "木曜日"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "金曜日"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "土曜日"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "アシスタント"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "兄弟"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "子供"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "同居人"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "父親"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "友達"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "管理"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "母親"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "親"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "パートナー"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "紹介者"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "親戚"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "姉妹"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "配偶者"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "メッセンジャー"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "その他の​情報"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "アフガニスタン"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "アルバニア"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "アルジェリア"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "米領​サモア"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "アンドラ"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "アンゴラ"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "アンギラ"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "アンティグア・バーブーダ"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "アルゼンチン"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "アルメニア"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "アルバ"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "オーストラリア"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "オーストラリア領"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "オーストリア"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "アゼルバイジャン"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "バハマ"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "バーレーン"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "バングラデシュ"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "バルバドス"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "ベラルーシ"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "ベルギー"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "ベリーズ"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "ベニン"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "バミューダ​諸島"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "ブータン"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "ボリビア"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "ボネール島、シント・ユースタティウス島とサバ島"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "ボスニアヘルツェゴビナ"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "ボツワナ"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "ブラジル"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "英領​バージン​諸島"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "ブルネイダルサラーム"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "ブルガリア"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "ブルキナファソ"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "ブルンジ"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "カンボジア"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "カメルーン"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "カナダ"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "カーボ​ベルデ"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "ケイマン​諸島"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "中央アフリカ共和国"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "チャド"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "チリ"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "中国"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "コロンビア"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "コモロ"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "コンゴ"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "クック諸島"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "コスタ​リカ"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "コートジボワール"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "クロアチア"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "キューバ"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "キュラソー島"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "キプロス"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "チェコ"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "朝鮮民主主義人民共和国"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "コンゴ​民主​共和国"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "東ティモール"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "デンマーク"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "ディエゴ​ガルシア島"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "ジブチ"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "ドミニカ"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "ドミニカ​共和国"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "エクアドル"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "エジプト"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "エル​サルバドル"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "赤道ギニア"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "エリトリア"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "エストニア"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "エチオピア"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "フォークランド諸島"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "フェロー​諸島"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "フィジー"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "フィンランド"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "フランス"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "フランス領南方・南極地域"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "仏領ギアナ"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "仏領ポリネシア"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "ガボン"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "ガンビア"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "グルジア"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "ドイツ"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "ガーナ"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "ジブラルタル"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "ギリシャ"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "グリーンランド"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "グラナダ"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "グアドループ"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "グアム"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "グアテマラ"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "ギニア"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "ギニアビサウ"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "ガイアナ"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "ハイチ"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "ホンジュラス"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "香港"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "ハンガリー"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "アイスランド"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "インド"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "インドネシア"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "インマルサット(SNAC)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "国際フリーダイヤルサービス"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "国際的割増料金サービス(IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "国際共有コストサービス(ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "イラン"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "イラク"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "アイルランド"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "イスラエル"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "イタリア"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "ジャマイカ"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "日本"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "ヨルダン"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "カザフスタン"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "ケニア"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "キリバス"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "韓国"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "クウェート"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "キルギスタン"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "ラオス人民民主​共和国"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "ラトビア"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "レバノン"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "レソト"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "リベリア"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "リビア"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "リヒテンシュタイン"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "リトアニア"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "ルクセンブルク"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "マカオ"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "マダガスカル"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "マラウイ"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "マレーシア"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "モルディブ"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "マリ"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "マルタ"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "マーシャル諸島"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "マルティニーク"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "モーリタニア"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "モーリシャス"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "メキシコ"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "ミクロネシア"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "モルドバ"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "モナコ"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "モンゴル"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "モンテネグロ"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "モントセラト"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "モロッコ"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "モザンビーク"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "ミャンマー"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "ナミビア"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "ナウル"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "ネパール"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "オランダ"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "ニュー​カレドニア"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "ニュージーランド"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "ニカラグア"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "ニジェール"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "ナイジェリア"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "ニウエ"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "北マリアナ​諸島"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "ノルウェー"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "オマーン"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "パキスタン"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "パラオ"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "パナマ"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "パプアニューギニア"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "パラグアイ"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "ペルー"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "フィリピン"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "ポーランド"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "ポルトガル"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "プエルトリコ"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "カタール"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "ルーマニア"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "ロシア​連邦"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "ルワンダ"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "セントヘレナ"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "セントクリストファー・ネイビス"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "セントルシア"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "サンピエール島・ミクロン島"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "セントビンセント・グレナディーン"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "サモア"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "サンマリノ"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "サントメプリンシペ"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "サウジアラビア"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "セネガル"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "セルビア"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "セーシェル"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "シエラレオネ"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "シンガポール"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "シントマールテン"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "スロバキア"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "スロベニア"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "ソロモン諸島"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "ソマリア"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "南アフリカ"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "スペイン"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "スリランカ"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "スーダン"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "スリナム"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "スワジランド"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "スウェーデン"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "スイス"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "シリア・アラブ共和国"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "台湾"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "タジキスタン"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "タンザニア"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "災害救済用テレコミュニケーション(TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "タイ"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "マケドニア旧ユーゴスラビア共和国"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "トーゴ"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "トケラウ"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "トンガ"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "トリニダードトバゴ"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "チュニジア"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "トルコ"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "トルクメニスタン"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "タークス​カイコス​諸島"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "ツバル"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "ウガンダ"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "ウクライナ"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "アラブ​首長国​連邦"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "英国(グレートブリテン及び北アイルランド連合王国)"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "アメリカ合衆国"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "米領バージン諸島"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "UPT(Universal Personal Telecommunication)サービス"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "ウルグアイ"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "ウズベキスタン"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "バヌアツ"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "バチカン市国"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "ベネズエラ"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "ベトナム"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "ウォリス・​フツナ"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "イエメン"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "ザンビア"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "ジンバブエ"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "携帯​(自宅)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "携帯​(仕事)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "保存"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "外部SDカードから​インポート"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "グループ​内​の​連絡先​も​含める"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%sを​%sに​保存​しました。"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "この​連絡先を削除します。"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "画像"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "ダイヤル"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "バックアップ"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "交換"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "グループ​のみ"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "新規グループ"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "グループ​を​選択"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "携帯​電話 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "追加​しました。"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "移動しました。"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "選択しました。"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "キャンセル"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "メモリ​が​不足​して​います。"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "削除しました。"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "検索"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "閉じる"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "削除​しました。"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "エラー"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "発信"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "SIM未挿入"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "全て​選択"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "失敗​しました。"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "正常に完了しました。"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "保存"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "電話帳​を​追加"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "アシスタント​名"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "グループを削除"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "グループ​名"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "グループ​着信音"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "ビデオカメラ起動"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "交換"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "スピード​ダイヤル​"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "メッセージ"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "着信音を設定"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "全ての連絡先"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "会社"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "連絡先​を​編集"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Eメール​を​取得"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "電話番号​を​取得"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "グループ​なし"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "参加者"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "画像​設定"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "未使用のスピードダイヤル"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "連絡先​を​削除"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "グループ​を​編集"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Eメール"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "お気に入りに​追加"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "グループ​を編集​"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "未入力"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "連絡先​を​保存"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "連絡先​を​選択​して​ください。"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "グループを追加"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "メモリがいっぱいです。"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "削除中..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "グループ​に​連絡先​を​追加​できません。"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "更新"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "取消"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "電話帳"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "コピー"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "作成"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Eメール"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "メッセージ"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "移動"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "本体"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "不明"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "テレビ電話"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "削除"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "完了"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "編集"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "連絡先​詳細​を​送信"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Exchange serverの連絡先を検索"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "姓名"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "名​>姓"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "他​の​項目​を​入力​する​には、​右​の​ボタン​を​タップ​して​ください。"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/ka.po b/po/ka.po
new file mode 100644
index 0000000..40007e5
--- /dev/null
+++ b/po/ka.po
@@ -0,0 +1,1771 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "კლავიატურა"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "ფავორიტები"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "სწრაფი აკრეფა"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "ხმოვანი წერილი"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "ჟურნალები"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr ""
+"ღილაკზე არ არის მინიჭებული ნომრის სწრაფი აკრეფის ფუნქცია. მიანიჭებთ ახლა?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "მოთხოვნა ვერ შედგა"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "მოთხოვნა წარმატებით გაიგზავნა"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "საგანგებო ზარი"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "ჟურნალები არ არის"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "ფავორიტები არ არის"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "შეტყობინ. წაშლილია"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "გადაჭარბებულია ტელეფონის ნომრის მაქსიმალური სიგრძე"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "მიმდინარეობს ჩანაწერთა წაშლა..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "მიმდინარეობს ფავორიტების წაშლა..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "სრულდება ინიციალიზაცია. ცადეთ მოგვიანებით..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "ხმა გამორთულია"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "ხმა ჩართულია"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "წინა გვერდი"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "ზარზე დაბრუნება"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "შემოსული ზარი"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "გამავალი ზარი"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "გამოტოვებული ზარი"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "გაგზავნილი წერილი"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "მიღებული წერილი"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "უარყოფილი ზარი"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "დაბლოკილი ზარი"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "შეასწორეთ ნომერი, სანამ დარეკავთ"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "ელ.წერილის გაგზავნა"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "აირჩიეთ ჩანაწერთა ჟურნალები"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "აირჩიეთ კონტაქტები ავტომატური დარეკვისთვის"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "განბლოკვა"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "კონტაქტის შეცვლა"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "%d წამიანი პაუზის დამატება"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "მოცდის დამატება"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "აკლია"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "გამოსვლა"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "შერჩეული"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "მობილური"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "საწყისი გვერდი"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "სამსახური"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "ფაქსი (სახლის)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "ფაქსი (სამსახურის)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "თანაშემწის ნომერი"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "პეიჯერი"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "სხვა"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "ტელეფონი"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "ფაქსი"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "მანქანის ტელეფონი"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "სახლი 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "კომპანიის მთავარი გვერდი"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "რადიო"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "ყველა კონტაქტი"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "არ არის მინიჭებული"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "მომსახურების ნომერი"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "ტელეფონი"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "ჯგუფები"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "ნაგულისხმევი"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "ზარის მელოდია"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "ვებსაიტი"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "ელ-ფოსტა"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "რიცხვი"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "შენიშვნა"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "საფოსტო მისამართი"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "დეტალები"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "კომპანია"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "ეკრანზე საჩვენებლად სახელის შერჩევა"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "საკუთარი ნომერი"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "სახელი"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "გვარი"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "მამის სახელი"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "სუფიქსი"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "მეტსახელი"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "კონტაქტების გადატანა"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "აირჩიეთ კონტაქტები"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "საფოსტო კოდი"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "ქვეყანა"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "პროვინცია"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "ქალაქი"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "ქუჩა"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "შენახულია ადგილზე: %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "ხშირად დაკავშირებული"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "დაკოპირდა"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "გადაცემული"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "სრულდება კონტაქტების წაშლა..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "გადატანა..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "კოპირდება..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "სრულდება SIM კონტაქტების მიღება..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "სრულდება კონტაქტების იმპორტირება vCard-დან..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "სრულდება კონტაქტების ექსპორტირება ადგილზე ”%s”..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vბარათი"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "იკითხება vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "იმპორტირებულია"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "არ არის"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "ყველა დაკავშ. კონტაქტი"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "დაკავშირებული კონტაქტები"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "დავალების სათაური"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "განყოფილება"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "ჯგუფის სახელი"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "ანგარიშის დამატება"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "წევრები ემატება ჯგუფში..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "ნახვა"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d კონტაქტი"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "ხელახლა დასათაურება"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "ურთიერთობა"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "ისტორიები არ არის"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "მოქმედებები არ არის"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "ემატება..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "დამატებითი ინფორმაცია"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "სააბონენტო ყუთი"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "შტატი"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "მეგობრები"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "ოჯახი"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "თანამშრომლები"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "სამსახური"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "ვიბრაციის ნიმუში"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "დააყენეთ ნაგულისხმევი ვარიანტი"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "მოვლენა"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "საკონტაქტო ინფორმაციის გაზიარება"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 კონტაქტი"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "SIM ბარათზე ექსპორტირება"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "ინფო"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "ისტორია"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "მოქმედებები"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "ჯგუფური წერილი"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "ჯგუფური ელ.წერილი"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "უსახელო"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "ელ.ფოსტა არასწორია"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "შეავსეთ მინიმუმ ერთი ველი და სახელი"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "მონაცემთა ბაზაზე წვდომა ვერ შესრულდა"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "უკვე დაემატა"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "ჯგუფის სახელი უკვე გამოყენებულია"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "ჯგუფი არ არის"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "ნომერი არ არის"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "ელ.ფოსტის მისამართები არ არის"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "კონტაქტი ვერ მოიძებნა"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM მეხსიერება ცარიელია"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "ჩანაწერების რაოდენობა მაქსიმალურზე მეტია"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "ნომერი არასწორია"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM მეხსიერება გაივსო"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"თუ გსურთ კონტაქტები გადმოიტანოთ SIM ბარათიდან ტელეფონში, გახსენით "
+"”პარამეტრები” > ”კონტაქტების იმპორტი”, ან დაასინქრონეთ ვებ-ანგარიშის "
+"კონტაქტებთან, ანგარიშების გამოყენებით, პარამეტრებში"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"ჟურნალები არ არის. მას შემდეგ რაც განახორციელებთ/მიიღებთ ზარს ან გაგზავნით/"
+"მიიღებთ წერილს, გამოჩნდება ჟურნალები"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "სავიზიტო ბარათების გაგზავნა შეუძლებელია"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "ნაგულისხმევ ნომრად აღნიშვნა"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "აღნიშვნა ნაგულისხმევ ელ.ფოსტად"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "სურათი"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "ფოტოს გადაღება"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "ფოტოს მოცილება"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "საწყის ეკრანზე დამატება"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "კონტაქტის შენახვა ადგილზე:"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "შენახვა"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "გადმოიტანეთ SIM კონტაქტები"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "ჯერ სახელი"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "ჯერ გვარი"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "ჩვენება"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "დამალვა"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "სავიზიტო ბარათის გაგზავნა"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "ჯგუფის შექმნა"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "ჯგუფის შერჩევა"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "კონტაქტ. მიღება"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "კონტაქტის დაკავშირება"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "ბმულის მოხსნა"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "ყველა დაკავშირებული კონტაქტი წაიშლება"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "ფავორიტებში დამატება"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "ჯგუფის შესწორება"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "წევრ.დამ."
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "ჯგუფში დამატება"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "ფავორიტებში დამატება"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "უცნობი"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "დაბადების დღე"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "იუბილე"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "კვირა"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "ორშაბათი"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "სამშაბათი"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "ოთხშაბათი"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "ხუთშაბათი"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "პარასკევი"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "შაბათი"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "დამხმარე"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "ძმა"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "ბავშვი"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "საშინაო პარტნ."
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "მამა"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "მეგობარი"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "მენეჯერი"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "დედა"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "მშობელი"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "პარტნიორი"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "შემომთავაზებელი"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "ნათესავი"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "და"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "მეუღლე"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "დამატებითი ინფორმაცია"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "ავღანეთი"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "ალბანეთი"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "ალჟირი"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "ამერიკის სამოა"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "ანდორა"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "ანგოლა"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "ანგვილა"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "ანტიგუა და ბარბუდა"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "არგენტინა"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "სომხეთი"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "არუბა"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "ავსტრალია"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "ავსტრალიის გარე ტერიტორიები"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "ავსტრია"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "აზერბაიჯანი"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "ბაჰამის კუნძულები"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "ბაჰრეინი"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "ბანგლადეში"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "ბარბადოსი"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "ბელარუსი"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "ბელგია"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "ბელიზი"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "ბენინი"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "ბერმუდა"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "ბუტანი"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "ბოლივია"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "ბონაირე, სენტ-ევსტათი და საბა"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "ბოსნია და ჰერცოგოვინა"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "ბოცვანა"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "ბრაზილია"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "ბრიტანული ვირჯინიის კუნძულები"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "ბრუნეი–დარუსალამი"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "ბულგარეთი"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "ბურკინა–ფასო"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "ბურუნდი"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "კამბოჯა"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "კამერუნი"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "კანადა"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "კეიპ-ვერდე"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "კაიმანის კუნძულები"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "ცენტრალური აფრიკის რესპუბლიკა"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "ჩადი"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "ჩილე"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "ჩინეთი"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "კოლუმბია"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "კომოროსი"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "კონგო"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "კუკის კუნძულები"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "კოსტა–რიკა"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "კოტ-დიუვარი"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "ხორვატია"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "კუბა"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "კურასაო"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "კვიპროსი"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "ჩეხეთის რესპუბლიკა"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "კორეის სახალხო დემოკრატიული რესპუბლიკა"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "კონგოს დემოკრატიული რესპუბლიკა"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "ტიმორ-ლოროსაე"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "დანია"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "დიეგო გარსია"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "ჯიბუტი"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "დომინიკა"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "დომინიკის რესპუბლიკა"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "ეკვადორი"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "ეგვიპტე"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "ელ–სალვადორი"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "ეკვატორული გვინეა"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "ერიტრეა"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "ესტონეთი"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "ეთიოპია"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "ფოლკლენდის კუნძულები"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "ფარერის კუნძულები"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "ფიჯის კუნძულები"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "ფინეთი"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "საფრანგეთის სამხრეთ ტერიტორიები"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "ფრანგული გვიანა"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "ფრანგული პოლინეზია"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "გაბონი"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "გამბია"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "საქართველო"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "გერმანია"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "განა"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "გიბრალტარი"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "საბერძნეთი"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "გრენლანდია"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "გრენადა"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "გვადელუპე"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "გუამი"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "გვატემალა"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "გვინეა"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "გვინეა-ბისაუ"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "გაიანა"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "ჰაიტი"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "ჰონდურასი"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "ჰონ-კონგი"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "უნგრეთი"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "ისლანდია"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "ინდოეთი"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "ინდონეზია"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "ირანი"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "ერაყი"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "ირლანდია"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "ისრაელი"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "იამაიკა"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "იაპონია"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "იორდანი"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "ყაზახეთი"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "კენია"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "კირიბატი"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "კორეა"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "კუვეიტი"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "ყირგიზეთი"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "ლაოსის სახალხო დემოკრატიული რესპუბლიკა"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "ლატვია"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "ლიბანი"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "ლესოტო"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "ლიბერია"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "ლიბია"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "ლიხტენშტეინი"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "ლიტვა"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "ლუქსემბურგი"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "მაკაო"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "მადაგასკარი"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "მალავი"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "მალაიზია"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "მალდივის კუნძულები"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "მალი"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "მალტა"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "მარშალის კუნძულები"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "მარტინიკის კუნძული"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "მავრიტანია"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "მავრიკია"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "მექსიკა"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "მიკრონეზია"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "მოლდავეთი"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "მონაკო"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "მონღოლეთი"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "მონტენეგრო"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "მონტსერატი"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "მაროკო"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "მოზამბიკი"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "მიანმა"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "ნამიბია"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "ნაურუ"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "ნეპალი"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "ნიდერლანდები"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "ახალი კალედონია"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "ახალი ზელანდია"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "ნიკარაგუა"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "ნიგერი"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "ნიგერია"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "ნიუე"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "ჩრდილოეთ მარიანას კუნძულები"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "ნორვეგია"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "ომანი"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "პაკისტანი"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "პალაუ"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "პანამა"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "პაპუა ახალი გვინეა"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "პარაგვაი"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "პერუ"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "ფილიპინები"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "პოლონეთი"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "პუერტო–რიკო"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "ქატარი"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "რუმინეთი"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "რუსეთის ფედერაცია"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "რვანდა"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "წმინდა ელენეს კუნძული"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "სენტ–კიტსი და ნევისი"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "სენტ–ლუსია"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "სენ-პიერი და მიქელონი"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "სენტ–ვინსენტი და გრენადინები"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "სამოა"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "სან–მარინო"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "სან–ტომე და პრინსიპი"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "საუდის არაბეთი"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "სენეგალი"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "სერბეთი"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "სეიშელის კუნძულები"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "სიერა–ლეონე"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "სინგაპური"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "სინტ–მაარტენი"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "სლოვაკეთი"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "სლოვენია"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "სოლომონის კუნძულები"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "სომალი"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "სამხრეთ აფრიკა"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "ესპანეთი"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "შრი–ლანკა"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "სუდანი"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "სურინამი"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "სვაზილენდი"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "შვედური"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "შვეიცარია"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "სირიის არაბთა რესპუბლიკა"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "ტაივანი"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "ტაჯიკეთი"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "ტანზანია"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "ტაილანდი"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "ყოფილი იუგოსლავიის რესპუბლიკა მაკედონია"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "ტოგო"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "ტოკელაუ"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "ტონგა"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "ტრინიდადი და ტობაგო"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "ტუნისი"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "თურქეთი"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "თურქმენეთი"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "ტერკსისა და ქაიკოსის კუნძულები"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "ტუვალუ"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "უგანდა"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "უკრაინა"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "არაბთა გაერთიანებული ემირატები"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "დიდი ბრიტანეთის გაერთიანებული სამეფო და ჩრდილოეთ ირლანდია"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "ამერიკის შეერთებული შტატები"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "შეერთებული შტატების ვირჯინიის კუნძულები"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "ურუგვაი"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "უზბეკეთი"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "ვანუატუ"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "ქალაქი-სახელმწიფო ვატიკანი"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "ვენესუელა"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "ვიეტნამი"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "უოლისი და ფუტუნა"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "იემენი"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "ზამბია"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "ზიმბაბვე"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "მობილური (სახლის)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "მობილური (სამსახურის)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "შეინახა ადგილზე:"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "მიღება SD ბარათიდან"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "ჯგუფი და ჯგუფის წევრები"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s შენახულია ადგილზე: %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "ეს კონტაქტები წაიშლება"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "ფოტო"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "დამრეკი"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "რეზერვი"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "მხოლოდ ჯგუფი"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "ახალი ჯგუფი"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "ჯგუფის შერჩევა"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "მობილური 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "დამატებულია"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "გადატანილია"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "შერჩეულია"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "გაუქმება"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "მეხსიერება არ არის საკმარისი"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "წაშლილია"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "ძიება"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "დახურვა"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "წაშლილია"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "შეცდომა"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "დარეკვა"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "SIM არაა"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "ყველას არჩევა"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "ვერ შესრულდა"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "წარმატება"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "შენახვა"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "კონტაქტების დამატება"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "თანაშემწის სახელი"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "ჯგუფის წაშლა"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "ჯგუფის სახელი"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "ჯგ. ზრ. მელოდია"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "ვიდეოს ჩაწერა"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "შეცვლა"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "სწრაფი აკრეფა"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "წერილი"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "ზარის მელოდიის დაყენება"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "ყველა კონტაქტი"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "კომპანია"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "კონტაქტების შესწორება"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "ელ.ფოსტის მიღება"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "ნომრის მიღება"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "ჯგუფი არ არის"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "მონაწილე"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "სურათის დაყენება"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Speed dial not in use"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "კონტაქტების წაშლა"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "ჯგუფების შესწორება"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "ელ-ფოსტა"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "ფავორიტებში დამატება"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "ჯგუფის შესწორება"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "ცარიელია"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "კონტაქტის შენახვა"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "აირჩიეთ კონტაქტი"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "ჯგუფის დამატება"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "მეხსიერება შევსებულია"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "იშლება..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "კონტაქტს ვერ დაამატებთ ჯგუფში"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "განახლება"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "გაუქმ."
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "კონტაქტები"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "ასლი"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "შექმნა"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "ელ-ფოსტა"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "შეტყობინება"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "გადატანა"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "ტელეფონი"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "უცნობი"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "ვიდეოზარი"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "წაშლა"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "შესრულდა"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "შესწორება"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "საკონტაქტო მონაცემების გაგზავნა"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Exchange სერვერის ძებნა"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "სახელი და გვარი"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "გვარი და სახელი"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "ველების დასამატებლად შეეხეთ მარჯვნივ მოთავსებულ ღილაკს"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/kk.po b/po/kk.po
new file mode 100644
index 0000000..d69ca55
--- /dev/null
+++ b/po/kk.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Пернетақта"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Таңдаулылар"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Тез теру"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Дауысты пошта"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Журналдар"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Жылдам терілетін нөмір жоқ. Қазір біреуін белгілеу керек пе?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Сұраныс үзіліп кетті"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Сұрау сәттілігі"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Шұғыл қоңырау шалу"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Журналдар жоқ"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Сүйіктілер жоқ"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Хабар өшірілді"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Ең ұзын телефон нөмірінің ұзындығынан асып кетті"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Журналдар жойылуда..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Таңдаулылар жойылуда..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Қалпына келтірілуде. Кейінірек қайталап көріңіз..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Дыбыс өшірулі"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Дыбыс қосулы"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Алдыңғы экран"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Қайта қоңырау шалу"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Қабылданған қоңырау"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Шыққан қоңырау"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Қабылданбаған қоңырау"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Жіберілген хабар"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Алынған хабар"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Қайтарылған қоң-у"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Бұғатталған қоң-у"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Қоңыраудан бұрын нөмірді өзгерту"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Email жіберу"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Журналдар таңдау"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Жылдам терілетін контактілерді таңдаңыз"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Құлпын ашу"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Контактіні өзгерту"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "%d секундтық пауза қосу"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Күту уақытын қосу"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Қабылданбаған"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Шығу"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Әдеттегі"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Ұялы телефон"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Үй парағы"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Жұмыс"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Факс (үй)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Факс (жұмыс)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Көмекшінің нөмірі"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Пейджер"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Басқа"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Телефон"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Факс"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Көлік телефоны"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "2-ші Үй"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Компанияның негізгі телефоны"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Радио"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Барлық контактілер"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Қойылған жоқ"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Қызметтік номер"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Телефон"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Топтар"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Өздігінен"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Әуен"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Веб-сайт"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Эл. пошта"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Нөмір"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Ескерту"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Пошта мекенжайы"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Өзгешеліктері"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Компания"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Дисплей есімі жасату"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Жеке нөмір"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Есімі"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Тегі"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Әкесінің аты"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Лауазым"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Жасырын ат"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Контактілерді экспорттау"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Контактілерді таңдау"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Пошта индексі"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Ел"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Облыс"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Қала"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Көше"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "%s ішіне сақталды"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Жиі хабарласатын"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Хабар(лар) көшірілді"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Экспортталған"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Контактілер жойылуда..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Орналастырылды"
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Көшірілуде..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "SIM контактілері импортталуда..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Контактілер vCard ішінен импортталуда..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Контактілер %s ішіне экспортталуда..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "vCard оқылуда..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Импортталған"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Қол жетімді емес"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Барлық байл. контакт."
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Байланыстырылған контактілер"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Лауазым"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Бөлім"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Топ атауы"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Тіркелгі қосу"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Мүшелер топқа қосылуда..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Көрініс"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d контакт"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Атын өзгерту"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Қарым-қатынас"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Журналдар жоқ"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Әрекеттер жоқ"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Қосылуда..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Қосымша ақпарат"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Абонент жәшігі"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Мемлекет"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Достар"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Отбасы"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Әріптес"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Жұмыс"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Тербелу үлгісі"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Әдепкісін белгілеу"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Оқиға"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Байланыс ақпаратын бөлісу"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 контакт"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "SIM картасына экспорттау"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Ақпарат"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Тарих"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Әрекеттер"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Топ хабары"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Топтың электрондық поштасы"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Ондай есім жоқ"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Электрондық пошта мекен-жайы жарамсыз"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Кемінде бір өрісті және атын толтырыңыз"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Деректер қорына қатынасу сәтсіз аяқталды"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Қосылып қойған"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Мұндай топ аты қолданыста бар"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Топ жоқ"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Ондай нөмір жоқ"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Электрондық пошта мекенжайлары жоқ"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Контакттар жоқ"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM-карта жады бос"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Енгізулер саны максималдық санынан асып кетті"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Жарамсыз нөмір"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM-картаның жады толы"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Контактілерді SIM картасынан телефонға Параметрлер > Контактілерді импорттау "
+"ішінен импорттауға немесе параметрлердегі есептік жазбалар арқылы веб "
+"есептік жазбамен синхрондауға болады"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Журналдар жоқ. Қоңырау шалғаннан/қабылдағаннан немесе хабар жібергеннен/"
+"алғаннан кейін журналдар көрсетіледі"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Визит карталарын жіберу мүмкін емес"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Өздігінен нөмірдің белгіленуі"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Әдепкі электрондық пошта деп белгілеу"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Сурет"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Суретке алыңыз"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Фотоны жою"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Бастапқы экранға қосу"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Кітапшаға сақтау"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "ішінде сақтау"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "SIM контактілерін импорттау"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Алдымен аты"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Алдымен тегі"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Көрсету"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Жасыру"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Атау картасын жіберу"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Топ құру"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Топты таңдау"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Контакт. имп-у"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Контактіні байланыстыру"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Байланыстырмау"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Барлық байланыстырылған контактілер жойылады"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Ұнамдыларға қосу"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Топты жөндеу"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Мүше қосу"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Топқа қосу"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Ұнамдыларға қосылды"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Белгісіз"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Туған күн"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Жылдық"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Хабаршы"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Жексенбі"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Дүйсенбі"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Сейсенбі"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Сәрсенбі"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Бейсенбі"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Жұма"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Сенбі"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Көмекші"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Бауыр"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Бала"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Отбасы. серіктес"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Әке"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Дос"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Менеджер"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Шеше"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Ата-ана"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Әріптес"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Қатысты"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Туысқан"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Әпке"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Жұбай"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Көбірек ақпарат"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Ауғанстан"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Албания"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Алжир"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Америкалық Самао"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Андорра"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Ангола"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Ангуилла"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Антигуа және Барбуда"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Аргентина"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Армения"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Аруба"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Австралия"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Сыртқы Австралия аумақтары"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Австрия"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Әзірбайжан"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Багам аралдары"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Бахрейн"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Бангладеш"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Барбадос"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Белоруссия"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Бельгия"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Белиз"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "БЕНИН"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Бермуда"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Бутан"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Боливия"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Бонайре, Әулие Эстатиус және Саба"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Босния және Герцеговина"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Ботсвана"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Бразилия"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Британдық Виргин аралдары"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Бруней Даруссалам"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Болгария"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Буркина Фасо"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Бурунди"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Камбоджа"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Камерун"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Канада"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Кабо-верде"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Кайман аралдары"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Орталық Африка Республикасы"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "ЧАД"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Чили"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Қытай"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Колумбия"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "КОМОРС"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Конго"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Кук аралдары"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Коста-Рика"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Кот-д'Ивуар"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Хорватия"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Куба"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Кюрасао"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Кипр"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Чех Республикасы"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Корея Демократиялық Халықтық Республикасы"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Конго Демократиялық Республикасы"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Тимор Лесте"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Дания"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Диего-Гарсия"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Джибути"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Доминика"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Доминика Республикасы"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Эквадор"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Мысыр"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "Сальвадор"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Экваторлық Гвинея"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Эритрея"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Эстония"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Эфиопия"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Фолкленд аралдары"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Фарер аралдары"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Фиджи"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Финляндия"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Франция"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Францияның оңтүстік аумақтары"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Француздық Гвиана"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Француздық Полинезия"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Габон"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Гамбия"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Грузия"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Германия"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Гана"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Гибралтар"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Греция"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Гренландия"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Гренада"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Гваделупа"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Гуам"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Гватемала"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Гвинея"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Гвинея-Бисау"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Гайана"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Гаити"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Гондурас"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Гонконг"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Венгрия"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Исландия"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Үндістан"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Индонезия"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Иран"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Ирак"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Ирландия"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Израиль"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Италия"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Ямайка"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Жапония"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Иордания"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Қазақстан"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Кения"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Кирибати"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Корея"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Кувейт"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Қырғызстан"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Лаос Халықтық Демократиялық Республикасы"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Латвия"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Ливан"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Лесото"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Либерия"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Ливия"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Лихтенштейн"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Литва"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Люксембург"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Макао"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "МАДАГАСКАР"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Малави"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Малайзия"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Мальдивы"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Мали"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Мальта"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Маршалл аралдары"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Мартиника"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "МАВРИТАНИЯ"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "МАВРИКИЙ"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Мексика"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Микронезия"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Молдова"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Монако"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Моңғолия"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Черногория"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Монтсеррат"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Морокко"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Мозамбик"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Мьянма"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "НАМИБИЯ"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Науру"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Непал"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Нидерланд"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Жаңа Каледония"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Жаңа Зеландия"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Никарагуа"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "НИГЕР"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Нигерия"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Ниуэ"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Солтүстік Мариана аралдары"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Норвегия"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Оман"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Пәкістан"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Палау"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Панама"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Папуа - Жаңа Гвинея"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Парагвай"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Перу"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Филиппин"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Польша"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Португалия"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Пуэрто-Рико"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Катар"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Румыния"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Ресей Федерациясы"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Руанда"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Әулие Елена"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Сент-Китс және Невис"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Сент-Люсия"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Сен-Пьер және Микелон"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Сент-Винсент және Гренадин"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Самоа"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "Сан-Марино"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Сао-Томе және Принсипи"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Сауд Арабиясы"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Сенегал"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Сербия"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Сейшель аралдары"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Сьерра-Леоне"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Сингапур"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Әулие Мартин"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Словакия"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Словения"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Соломон аралдары"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Сомали"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Оңтүстік Африка"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Испания"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Шри-Ланка"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Судан"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Суринам"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Свазиленд"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Швеция"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Швейцария"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Сирия Араб Республикасы"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Тайвань"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Тәжікстан"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Танзания"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Таиланд"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Бұрынғы Македония Югославия Республикасы"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Того"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Токелау"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Тонга"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Тринидад және Тобаго"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Тунис"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Түркия"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Түркіменстан"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Теркс және Кайкос аралдары"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Тувалу"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Уганда"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Украина"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Біріккен Араб Әмірліктері"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Ұлыбритания мен Солтүстік Ирландия Біріккен Корольдігі"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Америка Құрама Штаттары"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Америка Құрама Штаттары Вирджиния аралдары"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Уругвай"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Өзбекстан"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Вануату"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Ватикан қала мемлекеті"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Венесуэла"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Вьетнам"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Эллис және Футуна"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Йемен"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Замбия"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Зимбабве"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Ұялы (үй)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Ұялы (жұмыс)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Сақталды"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "SD картасынан импорттау"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Топ және топ мүшелері"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s %s ішіне сақталды"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Бұл контакт жойылады"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Фото"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Нөм труші"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Сақтық көшірме"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Айырбастау"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Тек топ"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Жаңа топ"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Топты таңдау"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "2-ші Ұялы"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Қосылды"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Орналастырылды"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Таңдалған"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Тоқтату"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Жадында орын аз"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Жойылған"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Іздеу"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Жабу"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Жойылды"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Қате"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Қоңырау"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "SIM жоқ"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Бәрін бөлектеу"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Үзіліп кетті"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Жетістік"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Сақтау"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Контакттарды қосу"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Көмекшінің аты"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Топты жою"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Топ атауы"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Топтың қоңырау үні"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Бейнежазу"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Ауыстыру"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Тез теру"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Хабар"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Қоңырау үнін орнату"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Барлық контактілер"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Компания"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Контактілерді өзгерту"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Электрондық поштаны алу"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Нөмір алу"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Топ жоқ"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Қатысушы"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Кескінді орнату"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Speed dial not in use"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Контактілер жою"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Топтарды өзгерту"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Электрондық пошта"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Сүйіктілер қатарына қосу"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Топты жөндеу"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Бос"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Контактыны сақтау"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Істес кісіні таңдау"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Топты қосу"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Жад толып кеткен"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Шығаруда..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Контактіні топқа қосу мүмкін емес"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Жаңарту"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Тоқт"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Контактілер"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Көшіру"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Құру"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Эл. пошта"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Хабарлама"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Орналастыру"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Телефон"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Белгісіз"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Бейне қоңырау"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Жою"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Дайын"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Өзгер."
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Нөмірлер туралы мәліметтер беру"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Exchange серверін іздеу"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Есімі Тегі"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Тегі Есімі"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Қосымша өрістер үшін сол жақтағы түймені түртіңіз"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/ko_KR.po b/po/ko_KR.po
new file mode 100644
index 0000000..31062a6
--- /dev/null
+++ b/po/ko_KR.po
@@ -0,0 +1,1768 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "키패드"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "즐겨찾기"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "단축번호"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "음성 메시지"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "최근기록"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "단축번호가 없습니다. 지금 지정하시겠습니까?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "요청을 수행하지 못하였습니다"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "요청에 성공하였습니다"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "긴급전화"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "기록이 없습니다"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "자주 사용하는 연락처 목록이 없습니다"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "메시지가 삭제되었습니다"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "최대 전화번호 길이를 초과하였습니다"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "기록 삭제 중..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "즐겨찾기 삭제 중..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "초기화 중... 잠시 후 다시 시도하세요"
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "소리 끄기"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "소리 켜기"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "이전 화면"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "통화로 돌아가기"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "수신 전화"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "발신 전화"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "부재중 전화"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "발신메시지"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "수신 메시지"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "수신거절된 전화"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "차단된 전화"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "키패드 화면에 복사"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "이메일 보내기"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "기록을 선택하세요"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "단축번호 연락처 선택"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "차단 해제"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "연락처 변경"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "%d초간 일시정지 추가"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "대기시간 추가"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "부재중"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "종료"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "직접 입력"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "휴대폰"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "집"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "회사"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "팩스(집)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "팩스(회사)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "비서 연락처"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "호출기"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "기타"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "일반전화"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "팩스"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "카폰"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "집 전화2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "대표번호(회사)"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "FM 라디오"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "모든 연락처"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "미지정"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "서비스 번호"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "휴대폰"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "그룹"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "기본"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "벨소리"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "웹사이트"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "이메일"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "번호"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "노트"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "주소"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "상세 정보"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "회사"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "이름 표기 순서"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "내 전화번호"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "이름"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "성"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "중간 이름"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "호칭"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "별명"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "연락처 내보내기"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "연락처 선택"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "우편번호"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "국가"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "지역"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "도시"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "거리"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "%s에 저장되었습니다"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "자주 연락하는 사람"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "복사되었습니다"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "내보냈습니다"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "연락처 삭제 중..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "이동 중..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "복사 중..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "SIM 연락처를 가져오는 중..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "연락처 파일에서 연락처 가져오는 중..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "%s(으)로 연락처 내보내는 중..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "연락처 파일"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "연락처 파일 읽는 중..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "가져왔습니다"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/A"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "모든 연결된 연락처"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "연결된 연락처"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "직위"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "부서"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "그룹 이름"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "계정 추가"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "그룹에 구성원 추가 중..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "보기"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d개의 연락처"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "이름 변경"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "관계"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "기록이 없습니다"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "내용이 없습니다"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "추가 중..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "상세정보"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "사서함"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "주"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "친구"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "가족"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "동료"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "직장"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "진동 패턴"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "대표 연락처 설정"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "일정"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "연락처 정보 공유"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1개의 연락처"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "SIM에 내보내기"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "정보"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "기록"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "활동"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "그룹 메시지"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "그룹 이메일"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "이름이 없습니다"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "이메일 주소가 바르지 않습니다"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "이름과 한 개 이상의 항목을 입력하세요"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "데이터베이스에 연결할 수 없습니다"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "이미 추가되었습니다"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "사용 중인 이름입니다"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "그룹이 없습니다"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "전화번호가 없습니다"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "이메일 주소가 없습니다"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "연락처가 없습니다"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM 메모리가 비어 있습니다"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "추가할 수 있는 항목 수를 초과하였습니다"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "전화번호가 바르지 않습니다"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM에 저장 공간이 없습니다"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"설정 > 연락처 가져오기를 이용하여 SIM 카드에서 휴대폰으로 연락처를 가져오거"
+"나 설정에서 계정을 이용하여 웹 계정의 연락처와 동기화할 수 있습니다"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"기록이 없습니다. 전화를 걸고 받거나 메시지를 보내고 받으면 기록이 나타납니다"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "명함을 전송할 수 없습니다"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "대표 번호로 지정"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "대표 이메일로 지정"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "이미지"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "사진 촬영"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "사진 삭제"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "홈 화면에 추가"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "연락처 저장"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "저장"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "SIM 연락처 가져오기"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "이름 먼저"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "성 먼저"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "보이기"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "숨기기"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "명함 전송"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "그룹 추가"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "그룹 선택"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "연락처 가져오기"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "연락처 연결"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "링크 해제"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "연결된 연락처가 모두 삭제됩니다"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "즐겨찾기에 추가"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "그룹 편집"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "구성원 추가"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "그룹에 추가"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "즐겨찾는 번호에 추가되었습니다"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "알 수 없음"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "생일"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "기념일"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google 토크"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "일요일"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "월요일"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "화요일"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "수요일"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "목요일"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "금요일"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "토요일"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "비서"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "형제"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "자녀"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "동거인"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "아버지"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "친구"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "관리자"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "어머니"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "부모"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "파트너"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "추천인"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "친척"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "자매"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "배우자"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "메신저"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "추가 정보"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "아프가니스탄"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "알바니아"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "알제리"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "미국령 사모아"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "안도라"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "앙골라"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "앵귈라"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "앤티가 바부다"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "아르헨티나"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "아르메니아"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "아루바"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "오스트레일리아"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "오스트레일리아 외부 영토"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "오스트리아"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "아제르바이잔"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "바하마"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "바레인"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "방글라데시"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "바베이도스"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "벨라루스"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "벨기에"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "벨리즈"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "베냉"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "버뮤다"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "부탄"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "볼리비아"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "보네르, 신트유스타티우스, 사바"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "보스니아헤르체코비나"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "보츠와나"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "브라질"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "영국령 버진 제도"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "브루나이 다루살람"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "불가리아"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "부르키나파소"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "부룬디"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "캄보디아"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "카메룬"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "캐나다"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "카보베르데"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "케이맨 제도"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "중앙아프리카 공화국"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "차드"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "칠레"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "중국"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "콜롬비아"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "코모로"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "콩고"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "쿡 제도"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "코스타리카"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "코트디부아르"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "크로아티아"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "쿠바"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "큐라소"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "키프로스"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "체코"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "북한"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "콩고 민주공화국"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "동티모르"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "덴마크"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "디에고가르시아"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "지부티"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "도미니카 공화국"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "도미니카 공화국"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "에콰도르"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "이집트"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "엘살바도르"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "적도기니"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "에리트레아"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "에스토니아"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "에티오피아"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "포클랜드 제도"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "파로 섬"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "피지"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "핀란드"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "프랑스"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "프랑스령 남부 지역"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "프랑스령 기아나"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "프랑스령 폴리네시아"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "가봉"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "감비아"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "그루지아"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "독일"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "가나"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "지브롤터"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "그리스"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "그린란드"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "그레나다"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "과들루프"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "괌"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "과테말라"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "기니"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "기니비사우"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "가이아나"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "아이티"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "온두라스"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "홍콩"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "헝가리"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "아이슬란드"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "인도"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "인도네시아"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "국제 수신자 부담 서비스"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "IPRS(International Premium Rate Service)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "ISCS(International Shared Cost Service)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "이란"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "이라크"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "아일랜드"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "이스라엘"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "이탈리아"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "자메이카"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "일본"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "요르단"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "카자흐스탄"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "케냐"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "키리바시"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "한국"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "쿠웨이트"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "키르기스스탄"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "라오스 인민 민주 공화국"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "라트비아"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "레바논"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "레소토"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "라이베리아"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "리비아"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "리히텐슈타인"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "리투아니아"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "룩셈부르크"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "마카오"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "마다가스카르"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "말라위"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "말레이시아"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "몰디브"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "말리"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "말타"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "마셜 제도"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "마르티니크"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "모리타니아"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "모리셔스"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "멕시코"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "미크로네시아"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "몰도바"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "모나코"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "몽골"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "몬테네그로"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "몬트세랫"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "모로코"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "모잠비크"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "미얀마"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "나미비아"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "나우루"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "네팔"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "네덜란드"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "뉴칼레도니아"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "뉴질랜드"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "니카라과"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "니제르"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "나이지리아"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "니우에"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "북마리아나 제도"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "노르웨이"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "오만"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "파키스탄"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "팔라우"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "파나마"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "파푸아뉴기니"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "파라과이"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "페루"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "필리핀"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "폴란드"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "포르투갈"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "푸에르토리코"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "카타르"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "루마니아"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "러시아 연방"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "르완다"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "세인트 헬레나"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "세인트키츠 네비스"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "세인트루시아"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "생피에르에미클롱"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "세인트빈센트 그레나딘"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "사모아"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "산마리노"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "상투메 프린시페"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "사우디아라비아"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "세네갈"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "세르비아"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "세이셸"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "시에라리온"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "싱가포르"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "신트마르텐"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "슬로바키아"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "슬로베니아"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "솔로몬 제도"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "소말리아"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "남아프리카 공화국"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "스페인"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "스리랑카"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "수단"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "수리남"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "스와질란드"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "스웨덴"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "스위스"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "시리아 아랍 공화국"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "타이완"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "타지키스탄"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "탄자니아"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "TDR(Telecommunications for Disaster Relief)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "태국"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "마케도니아 구 유고슬라비아 공화국"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "토고"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "토켈라우"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "통가"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "트리니다드토바고"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "튀니지"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "터키"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "투르크메니스탄"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "터크스 케이커스 제도"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "투발루"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "우간다"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "우크라이나"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "아랍에미리트"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "그레이트브리튼 및 북아일랜드 연합왕국"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "미국"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "미국령 버진아일랜드"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "UPT(Universal Personal Telecommunication Service)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "우루과이"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "우즈베키스탄"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "바누아투"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "바티칸 시국"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "베네수엘라"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "베트남"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "월리스 푸투나"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "예멘"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "잠비아"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "짐바브웨"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "휴대폰(집)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "휴대폰(회사)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "에 저장되었습니다"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "SD 카드에서 가져오기"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "그룹 및 그룹 구성원"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s이(가) %s에 저장되었습니다"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "연락처가 삭제됩니다"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "사진"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "키패드"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "백업"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "그룹만"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "그룹 추가"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "그룹 선택"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "휴대폰2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "추가되었습니다"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "이동되었습니다"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "선택되었습니다"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "취소"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "메모리가 부족합니다"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "제거되었습니다"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "검색"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "닫기"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "삭제되었습니다"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "오류가 발생하였습니다"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "통화"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "SIM이 없습니다"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "모두 선택"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "실패하였습니다"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "완료되었습니다"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "저장"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "연락처 추가"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "비서 이름"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "그룹 삭제"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "그룹 이름"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "그룹 벨소리"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "동영상 촬영"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "변경"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "단축번호"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "메시지"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "벨소리 설정"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "모든 연락처"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "회사"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "연락처 편집"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "이메일 정보 가져오기"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "전화번호 가져오기"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "그룹이 없습니다"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "참석자"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "이미지 설정"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "미사용 단축번호"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "연락처 삭제"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "그룹 편집"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "이메일"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "즐겨찾기에 추가"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "그룹 편집"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "비어 있음"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "연락처에 추가"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "연락처를 선택하세요"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "그룹 추가"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "저장 공간이 부족합니다"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "삭제 중..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "연락처를 추가할 수 없습니다"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "업데이트"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "취소"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "블루투스"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "연락처"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "복사"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "추가"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "이메일"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "메시지"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "이동"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "휴대폰"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "알 수 없음"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "영상통화"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "삭제"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "완료"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "편집"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "확인"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "연락처 전송"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "익스체인지 서버 검색"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "이름 성"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "성 이름"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "입력란을 추가하려면 오른쪽 버튼을 누르세요"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/lt.po b/po/lt.po
new file mode 100644
index 0000000..8bd49d4
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Klaviatūra"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Parankiniai"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Spartusis rinkimas"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Balso paštas"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Žurnalai"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Nėra sparčiojo rinkimo numerio. Priskirti vieną dabar?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Užklausa nepavyko"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Užklausa sėkminga"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Pagalbos skambučiai"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Žurnalų nėra"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Nėra parankinių"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Žinutė ištrinta"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Viršytas didžiausias telefono numerio ilgis"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Trinami žurnalai..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Trinami parankiniai..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Inicijuojama. Bandykite vėliau..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Garsas išjungtas"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Garsas įjungtas"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Ankstesn. langas"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Grįžti į pokalbį"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Gaunamas skambutis"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Išeinantis skambutis"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Neatsakytas skambutis"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Išsiųsta žinutė"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Gauta žinutė"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Atmestas skambutis"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Užblokuotas skamb."
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Redaguoti numerį prieš skambinant"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Siųsti el. laišką"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Pasirinkite žurnalus"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Pasirinkti sparčiojo rinkimo adresatus"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Atblokuoti"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Keisti adresatą"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Pridėti %d sek. pauzę"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Pridėkite Palaukti"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Praleisti"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Išeiti"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Pasirinktinis"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobilusis"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Namų"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Darbas"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Faksas (namų)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Faksas (darbo)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Padėjėjo tel. numeris"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pranešimų gaviklis"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Kiti"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefonas"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Faksas"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Automobilio telefonas"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Namų 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Pagrindinis įmonės"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radijas"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Visi adresatai"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Nepriskirta"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Paslaugos numeris"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefonas"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grupės"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Numatytoji"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Skambėjimo tonas"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Svetainė"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "El. paštas"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Numeris"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Pastaba"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Pašto adresas"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Išsami informacija"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Įmonė"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Vardų rodymo tvarka"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Mano numeris"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Vardas"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Pavardė"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Antras vardas"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Priesaga"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Slapyvardis"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Eksportuoti adresatus"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Pasirinkite adresatus"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Pašto kodas"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Šalis"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Provincija"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Miestas"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Gatvė"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Išsaugota %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Susisiekiama dažnai"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Nukopijuota"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Eksportuota"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Trinami adresatai..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Perkeliama..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopijuojama..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importuojami SIM adresatai..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importuojami adresatai iš „vCard“..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Adresatai eksportuojami į %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "Vizitinė kortelė"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Nuskaitoma „vCard“..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importuotieji"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Netaikoma"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Visi susieti adresatai"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Susieti adresatai"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Pareigos"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Skyrius"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Grupės vardas"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Pridėti paskyrą"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Nariai pridedami prie grupės..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Rodyti"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "Adresatai: %d"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Pervardyti"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Ryšiai"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Istorijos nėra"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Nėra veiklų"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Pridedama..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Papildoma informacija"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Pašto dėžutė"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Valstija"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Draugai"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Šeima"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Bendradarbiai"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Darbas"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Vibravimo pavyzdys"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Nustatyti kaip numatytąjį"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Įvykis"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Bendrinti kontaktinę informaciją"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 adresatas"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "„Wi-Fi Direct“"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Eksportuoti į SIM kortelę"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Inform."
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Istorija"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Veikla"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Grupės žinutė"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Grupės laiškas"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Nėra vardo"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Neteisingas el. pašto adresas"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Užpildykite bent vieną lauką ir įrašykite vardą"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Nepavyko pasiekti duomenų bazės"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Jau įtraukta"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Grupės pavadinimas jau naudojamas"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Nėra grupės"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Nėra numerio"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Nėra el. pašto adresų"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Nėra adresatų"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM atmintis tuščia"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Viršytas didžiausias įrašų skaičius"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Neteisingas numeris"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM kortelės atmintis pilna"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Galite importuoti adresatus iš SIM kortelės į savo telefoną Nustatymuose > "
+"Importuoti adresatus arba sinchronizuoti su žiniatinklio paskyros adresatais "
+"naudodami paskyras nustatymuose"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Žurnalų nėra. Kai skambinate / skambina jums arba siunčiate / priimate "
+"žinutę, rodomi žurnalai"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Neįmanoma siųsti vizitinių kortelių"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Pažymėti kaip numatytąjį skaičių"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Pažymėti kaip numatytąjį el. paštą"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Vaizdas"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Fotografuoti"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Šalinti nuotrauką"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Pridėti pradžios ekrane"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Išsaugoti adresatą"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Išsaugoti"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importuoti SIM adresatus"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Pirmiausia vardas"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Pirmiausia pavardė"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Rodyti"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Nerodyti"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Siųsti vardo kortelę"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Sukurti grupę"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Pasirinkti grupę"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Impor. adresat."
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Susieti adresatą"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Atsieti"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Visi susieti adresatai bus ištrinti"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Įtraukti į Parankinius"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Redaguoti grupės narį"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Prid.narį"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Pridėti prie grupės"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Įtrauktas į Parankinius"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Nežinomas"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Gimtadienis"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Sukaktis"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "„Google Talk“"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "„Windows Live Messenger“"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "„Facebook“"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "„Skype“"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Sekmadienis"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Pirmadienis"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Antradienis"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Trečiadienis"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Ketvirtadienis"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Penktadienis"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Šeštadienis"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Asistentas"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Brolis"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Vaikas"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Civilinis partn."
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Tėvas"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Draugas"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Tvarkyklė"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Motina"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Tėvas / motina"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partneris"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Remiantis"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Giminaitis (-ė)"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Sesuo"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Sutuoktinis"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Daugiau informacijos"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistanas"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albanija"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Alžyras"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Amerikos Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andora"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Angilija"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigva ir Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armėnija"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australija"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Australijos Išorinės Teritorijos"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austrija"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaidžanas"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamos"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahreinas"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladešas"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbadosas"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Baltarusija"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgija"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belizas"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Beninas"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermudai"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Butanas"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivija"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Boneras, Sint Eustatijus ir Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnija ir Hercegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botsvana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazilija"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Didžiosios Britanijos Mergelių Salos"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunėjaus Darusalamas"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgarija"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Fasas"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundis"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kambodža"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerūnas"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Žaliasis Kyšulys"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Kaimanų Salos"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Centrinė Afrikos Respublika"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Chadas"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Čilė"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Kinija"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Kolumbija"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Komorai"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongas"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Kuko Salos"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Kosta Rika"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Dramblio Kaulo Krantas"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Kroatija"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Kiurasao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Kipras"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Čekijos Respublika"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Korėjos Liaudies Demokratinė Respublika"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Kongo Demokratinė Respublika"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Rytų Timoras"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danija"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garsija"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Džibutis"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominika"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominikos Respublika"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ekvadoras"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egiptas"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "Salvadoras"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Pusiaujo Gvinėja"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrėja"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estija"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopija"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Folklando Salos"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Farerų Salos"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fidžis"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Suomija"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Prancūzija"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Prancūzijos Pietų Sritys"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Prancūzijos Gviana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Prancūzijos Polinezija"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabonas"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambija"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Džordžija"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Vokietija"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Gana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltaras"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Graikija"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grenlandija"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Gvadelupa"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Gvamas"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Gvatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Gvinėja"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Gvinėja Bisau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Gajana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haitis"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Hondūras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Honkongas"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Vengrija"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islandija"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Indija"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonezija"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iranas"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irakas"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Airija"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Izraelis"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italija"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaika"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japonija"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordanija"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazachstanas"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenija"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribatis"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korėja"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuveitas"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgizija"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Laoso Liaudies Demokratinė Respublika"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Latvija"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Libanas"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotas"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberija"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libija"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Lichtenšteinas"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lietuva"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Liuksemburgas"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Makao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagaskaras"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malavis"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaizija"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldyvai"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Malis"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Maršalo Salos"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinika"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritanija"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Mauricijus"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Meksika"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronezija"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldova"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monakas"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolija"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Juodkalnija"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montseratas"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marokas"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambikas"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Mianmaras"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibija"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepalas"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Nyderlandai"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Naujoji Kaledonija"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Naujoji Zelandija"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nikaragva"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Nigeris"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigerija"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niujė"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Marianos Šiaurinės Salos"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norvegija"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Omanas"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistanas"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Naujoji Gvinėja"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paragvajus"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipinai"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Lenkija"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugalija"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rikas"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Kataras"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Rumunija"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Rusijos Federacija"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Šv. Elenos Sala"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Sent Kitsas ir Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Sent Lusija"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Sen Pjeras ir Mikelonas"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Sent Vinsentas ir Grenadinai"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marinas"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "San Tomė ir Prinsipė"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudo Arabija"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegalas"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbija"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seišeliai"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Siera Leonė"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapūras"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sen Martenas"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovakija"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovėnija"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Saliamono Salos"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalis"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Pietų Afrika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Ispanija"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Šri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudanas"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinamas"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Svazilandas"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Švedų"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Šveicarija"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Sirijos Arabų Respublika"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taivanas"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadžikistanas"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzanija"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tailandas"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Buvusioji Jugoslavijos Respublika Makedonija"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togas"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidadas ir Tobagas"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunisas"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turkija"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmėnistanas"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Terksas ir Kaikosas"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraina"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Jungtiniai Arabų Emyratai"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Jungtinė Didžiosios Britanijos ir Šiaurės Airijos Karalystė"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Jungtinės Amerikos Valstijos"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Jungtinių Valstijų Mergelių Salos"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Urugvajus"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistanas"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatikano Miesto Valstybė"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venesuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnamas"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Voliso ir Futūnos Salos"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Jemenas"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambija"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabvė"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobilusis telefonas (namų)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobilusis (darbo)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "„Google“"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Išsaugota į"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importuoti iš SD kortelės"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grupė ir grupės nariai"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s išsaugota %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Šis adresatas bus panaikintas"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Nuotrauka"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Rinkiklis"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Atsarginė kopija"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "„Exchange“"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Tik grupė"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Nauja grupė"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Pasirinkti grupę"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobilusis 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Pridėta"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Perkelta"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Pasirinkta"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Atšaukti"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Nepakanka atminties"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Pašalinta"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Ieškoti"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Uždaryti"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Ištrinta"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Klaida"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Skambutis"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Nėra SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Pasirinkti viską"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Nepavyko"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Pavyko"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Išsaugoti"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Pridėti adresatą"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Padėjėjo vardas"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Ištrinti grupę"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Grupės vardas"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Grup.skmb.tonas"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Įrašyti vaizdo įrašą"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Pakeisti"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Spartusis rinkimas"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Žinutė"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Nustatyti skambučio toną"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Visi adresatai"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Įmonė"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Redaguoti adresatus"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Gauti el. laiškų"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Gauti numerį"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Nėra grupės"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Dalyvis"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Nustatyti vaizdą"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Speed dial not in use"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Trinti adresatus"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Redaguoti grupes"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "El. paštas"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Įtraukti į parankinius"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Redaguoti grupės narį"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Tuščia"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Išsaugoti adresatą"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Pasirinkite adresatą"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Įtraukti grupę"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Atmintis pilna"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Šalinama..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Neįmanoma pridėti adresato prie grupės"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Atnaujinti"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Atšaukti"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "„Bluetooth“"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Adresatai"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopijuoti"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Kurti"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "El. paštas"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Žinutė"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Perkelti"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefonas"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Nežinomas"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Vaizdo skambutis"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Trinti"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Atlikta"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Redaguoti"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "Gerai"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Siųsti išsamią informaciją apie adresatą"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Ieškoti „Exchange“ serveryje"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Vardas Pavardė"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Pavardė Vardas"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Jei reikia daugiau laukelių, dešinėje pusėje bakstelėkite mygtuką"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/lv.po b/po/lv.po
new file mode 100644
index 0000000..6f5f3b9
--- /dev/null
+++ b/po/lv.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Tastatūra"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Izlase"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Ātrā numura sastādīšana"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Balss pasts"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Žurnāli"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Nav ātrā zvana numura. Vai piešķirt kādu tūlīt?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Pieprasījums neizdevās"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Pieprasījums izdevās"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Ārkārtas zvans"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Nav žurnālu"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Nav izlašu"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Ziņa izdzēsta"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Pārsniegts maksimālais tālruņa numura garums"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Dzēš žurnālus..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Dzēš izlasi..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Notiek inicializēšana. Mēģiniet vēlāk..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Izslēgt skaņu"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Ieslēgt skaņu"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Iepriekš. ekrāns"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Atpakaļ uz zvanu"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Ienākošais zvans"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Izejošais zvans"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Neatbildēts zvans"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Nosūtītā ziņa"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Saņemtā ziņa"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Noraidīts zvans"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Bloķēts zvans"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Rediģēt numuru pirms zvana"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Sūtīt e-pasta ziņu"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Izvēlēties žurnālus"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Izvēlēties ātro zvanu kontaktus"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Atbloķēt"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Mainīt kontaktu"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Pievienot %d sekunžu pauzi"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Pievienot gaidīšanu"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Neatbildētie"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Iziet"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Pielāgot"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobilais"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Mājas"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Darbā"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Faksa numurs (mājas)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Faksa numurs (darba)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Palīga tālruņa numurs"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Peidžera numurs"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Cits"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Tālrunis"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fakss"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Automašīnas tālruņa numurs"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Mājas 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Uzņēmuma galvenais"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Visi kontakti"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Nav piešķirts"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Pakalpojuma numurs"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Tālrunis"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grupas"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Noklusējums"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Zvana signāls"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Vietne"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-pasts"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Numurs"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Piezīme"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Pasta adrese"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Dati"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Uzņēmums"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Parādāmā vārda secība"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Savs numurs"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Vārds"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Uzvārds"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Otrs vārds"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Piedēklis"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Segvārds"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Eksportēt kontaktus"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Kontaktu izvēle"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Pasta indekss"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Valsts"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Province"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Pilsēta"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Iela"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Saglabāts mapē %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Personas, ar kurām visbiežāk sazināties"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Nokopēts"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Eksportēts"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Dzēš kontaktus..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Pārvieto..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopē..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importē SIM kartes kontaktus..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importē kontaktus no vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Eksportē kontaktus no %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Nolasa vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importēts"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Nav pieejams"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Visiem saistīt.kontak."
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Saistītie kontakti"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Amata nosaukums"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Nodaļa"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Grupas nosaukums"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Konta pievienošana"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Pievieno grupai dalībniekus..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Skatīt"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d kontakti"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Pārdēvēt"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Attiecības"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Nav vēstures"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Nav darbību"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Pievieno..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Papildinformācija"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Pastkastīte"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Štats"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Draugi"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Ģimene"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Darba biedri"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Darbs"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Vibrācijas veids"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Iestatīt noklusējumu"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Notikums"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Kopīgot kontaktinformāciju"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 kontakts"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Eksportēt uz SIM karti"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Inform."
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Vēsture"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Darbības"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Grupas ziņa"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Grupas e-pasta ziņa"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Nav vārda"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Nederīga e-pasta adrese"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Aizpildiet vismaz vienu lauku, kā arī ierakstiet nosaukumu"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Neizdevās piekļūt datu bāzei"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Jau pievienots"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Grupas nosaukums jau tiek lietots"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Nav grupas"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Nav numura"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Nav e-pasta adrešu"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Kontaktu nav"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM atmiņa tukša"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Pārsniegts maksimālais ierakstu skaits"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Nederīgs numurs"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM atmiņa pilna"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Varat importēt kontaktus no SIM kartes savā tālrunī, dodoties uz sadaļu "
+"Iestatījumi > Importēt kontaktus, vai sinhronizēt tos ar tīmekļa konta "
+"kontaktiem, izmantojot sadaļas Iestatījumi izvēlni Konti"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Nav žurnālu. Pēc tam, kad veiksit/saņemsit zvanu vai nosūtīsit/saņemsit "
+"ziņu, tiks parādīti žurnāli"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Nevar nosūtīt vizītkartes"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Atzīmēt kā noklusējuma numuru"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Atzīmēt kā noklusējuma e-pastu"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Attēls"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Fotografēt"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Noņemt fotoattēlu"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Pievienot sākuma ekrānam"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Saglabāt kontaktu"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Saglabāt"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importēt SIM kontaktus"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Vispirms vārds"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Vispirms uzvārds"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Rādīt"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Slēpt"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Sūtīt vizītkarti"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Izveidot grupu"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Atlasīt grupu"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Imp. kontaktus"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Saistīt kontaktu"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Noņemt saistījumu"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Visi saistītie kontakti tiks izdzēsti"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Pievienot izlasēm"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Rediģēt grupas dalībnieku"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Piev.dal."
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Pievienot grupai"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Pievienots izlasē"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Nezināms"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Dzimšanas diena"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Jubileja"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Svētdiena"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Pirmdiena"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Otrdiena"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Trešdiena"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Ceturtdiena"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Piektdiena"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Sestdiena"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Palīgs"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Brālis"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Bērns"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Viet. partneris"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Tēvs"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Draugs"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Vadītājs"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Māte"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Vecāki"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partneris"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Piedāvāja"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Radinieks"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Māsa"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Dzīvesbiedrs"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Papildinformācija"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistāna"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albānija"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Alžīrija"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Amerikāņu Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andora"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Angvilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigva un Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentīna"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armēnija"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Austrālija"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Austrālijas ārējās teritorijas"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austrija"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaidžāna"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamu salas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahreina"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladeša"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbadosa"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Baltkrievija"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Beļģija"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Beliza"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "BENINA"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Butāna"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolīvija"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sintēstatiusa un Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnija un Hercegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botsvāna"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazīlija"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Britu Virdžīnu salas"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Bruneja Darusalama"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgārija"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkinafaso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundija"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kambodža"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerūna"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanāda"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Kaboverde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Kaimanu salas"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Centrālāfrikas Republika"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "ČADA"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Čīle"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Ķīna"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Kolumbija"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "KOMORU SALAS"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Kuka salas"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Kostarika"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Kotdivuāra"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Horvātija"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Kirasao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Kipra"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Čehijas Republika"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Korejas Tautas Demokrātiskā Republika"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Kongo Demokrātiskā Republika"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Austrumtimora"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Dānija"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garsia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Džibutija"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominika"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominikāna"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ekvadora"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Ēģipte"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "Salvadora"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Ekvatoriālā Gvineja"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritreja"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Igaunija"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopija"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Folklendas salas"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Fēru salas"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fidži"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Somija"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Francija"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Francijas Dienvidu teritorijas"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Franču Gviāna"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Franču Polinēzija"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabona"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambija"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Gruzija"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Vācija"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Gana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltārs"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grieķija"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grenlande"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenāda"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Gvadelupa"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guama"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Gvatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Gvineja"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Gvineja-Bisava"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Gajāna"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Hondurasa"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Honkonga"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Ungārija"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islande"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Indija"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonēzija"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Irāna"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irāka"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Īrija"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Izraēla"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Itālija"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaika"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japāna"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordānija"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazahstāna"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenija"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Koreja"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuveita"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgizstāna"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Laosas Tautas Demokrātiskā Republika"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Latvija"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Libāna"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesoto"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Libērija"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Lībija"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Lihtenšteina"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lietuva"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luksembruga"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Makao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "MADAGASKARA"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malāvija"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaizija"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldīvija"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Māršala salas"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinika"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAURITĀNIJA"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAURĪCIJA"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Meksika"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronēzija"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldova"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monako"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolija"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Melnkalne"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrata"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Maroka"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambika"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Mjanma"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "NAMĪBIJA"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepāla"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Nīderlande"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Jaunkaledonija"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Jaunzēlande"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nikaragva"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Nigēra"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigērija"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Ziemeļu Marianas salas"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Novēģija"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Omāna"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistāna"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua-Jaungvineja"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paragvaja"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipīnas"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polija"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugāle"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puertoriko"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Katara"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Rumānija"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Krievijas Federācija"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Svētās Helēnas sala"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Sentkitsa un Nevisa"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Sentlūsija"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Senpjēra un Mikelona"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Sentvinsenta un Grenadīnas"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "Sanmarīno"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Santome un Prinsipi"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saūda Arābija"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegāla"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbija"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seišelu salas"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sjerraleone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapūra"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sintmārtena"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovākija"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovēnija"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Zālamana salas"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somālija"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Dienvidāfrika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Spānija"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Šrilanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudāna"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinama"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Svazilenda"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Zviedrija"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Šveice"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Sīrijas Arābu Republika"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taivāna"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadžikistāna"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzānija"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Taizeme"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Bijusī Dienvidslāvijas Republika Maķedonija"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidāda un Tobāgo"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunisija"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turcija"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistāna"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Tērksas un Kaikosas salas"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraina"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Apvienotie Arābu Emirāti"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Lielbritānijas un Ziemeļīrijas Apvienotā Karaliste"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Amerikas Savienotās Valstis"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "ASV Virdžīnu salas"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Urugvaja"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistāna"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatikāna pilsētvalsts"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venecuēla"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vjetnama"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Volisa un Futunas salas"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Jemena"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambija"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabve"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobilā tālruņa numurs (mājas)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobilā tālruņa numurs (darba)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Saglabāts mapē"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importēt no SD kartes"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grupa un grupas dalībnieki"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s saglabāts mapē %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Šis kontakts tiks dzēsts"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Fotoattēls"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Zvanītājs"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Dublējums"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Tikai grupu"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Jauna grupa"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Atlasīt grupu"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "2. mobilais"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Pievienots"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Pārvietots"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Izvēlēts"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Atcelt"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Atmiņa pilna"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Noņemts"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Meklēt"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Aizvērt"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Izdzēsts"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Kļūda"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Zvans"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Nav SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Izv. visu"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Neizdevās"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Veiksmīgi"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Saglabāt"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Pievienot kontaktus"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Palīga vārds"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Dzēst grupu"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Grupas nosaukums"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Grupas zv.sign"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Ierakstīt video"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Aizstāt"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Ātrā numura sastādīšana"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Ziņa"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Iestatīt zvana signālu"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Visi kontakti"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Uzņēmums"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Kontaktu rediģēšana"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Iegūt e-pasta ziņu"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Iegūt numuru"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Nav grupas"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Dalībnieks"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Iestatīt attēlu"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Speed dial not in use"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Dzēst kontaktus"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Rediģēt grupas"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-pasts"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Pievienot izlasēm"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Rediģēt grupas dalībnieku"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Tukšs"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Saglabāt kontaktu"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Izvēlēties kontaktu"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Pievienot grupu"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Atmiņa pilna"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Noņem..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Nevar pievienot kontaktu grupai"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Atjaunināt"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Atcelt"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Kontakti"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopēt"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Izveidot"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-pasts"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Ziņa"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Pārvietot"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Tālrunis"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Nezināms"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videozvans"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Dzēst"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Gatavs"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Rediģēt"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "Labi"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Sūtīt kontaktinformāciju"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Meklēt Exchange serveri"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Vārds, uzvārds"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Uzvārds, vārds"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Lai atvērtu citus laukus, pieskarieties pogai labajā pusē"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/mk.po b/po/mk.po
new file mode 100644
index 0000000..138c9bb
--- /dev/null
+++ b/po/mk.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Таст."
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Омилени"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Брзи повици"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Говорна пошта"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Дневници"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Нема број за брзо бирање. Назначи сега?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Неуспешно барање"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Успешно барање"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "SOS повик"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Нема дневници"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Нема омилени"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Пораката е избришана"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Надмината е максималната должина за телефонски број"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Се бришат дневниците..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Се бришат омилените..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Се иницира. Обидете се подоцна..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Исклучен звук"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Вклучен звук"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Претходен екран"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Назад на повикот"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Дојдовен повик"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Појдовен повик"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Пропуштен повик"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Пратена порака"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Примена порака"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Одбиен повик"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Блокиран повик"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Измени број пред повик"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Прати e-mail"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Одбери дневници"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Изберете контакти за брзо бирање"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Одблок."
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Смени контакт"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Додај пауза од %d секунди"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Додај чекање"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Пропушт."
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Излез"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Одредено"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Мобилен"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Дома"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Работа"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Факс (домашен)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Факс (Работа)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Број на помошникот"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Пејџер"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Друго"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Телефон"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Факс"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Телефон во автомобил"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Домашен 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Главен број на фирмата"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Радио"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Сите записи"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Не е назначено"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Услужен број"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Телефон"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Групи"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Основно"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Тон на ѕвонење"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Страница на интернет"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-mail"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Број"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Забелешка"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Поштенска адреса"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Детали"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Фирма"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Редослед за прикажување на имињата"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Сопствен број"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Име"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Презиме"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Татково име"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Наставка"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Прекар"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Извези контакти"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Избери контакти"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Поштенски број"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Држава"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Подрачје"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Град"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Улица"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Сочувано во %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Често контактирани"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Копирано"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Извезено"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Се бришат контакти..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Се преместува..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Се копира..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Се увезуваат контактите од SIM-от..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Се увезуваат контакти од vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Се извезуваат контакти во %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vcard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Се чита vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Увезено"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Нема"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Сите поврзани контакти"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Поврзани контакти"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Работно место"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Оддел"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Име на група"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Додај сметка"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Се додаваат членови во групата..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Прикажи"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d контакти"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Преименувај"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Врска"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Нема истории"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Нема активности"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Се додава..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Дополнителни податоци"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Поштенски фах"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Држава"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Пријатели"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Семејство"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Колеги"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Работа"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Шема на вибрации"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Постави како основно"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Настан"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Сподели информации за контакт"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 контакт"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Извези во SIM-картичка"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Информ."
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Историја"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Активности"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Групна порака"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Групен email"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Организация"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Нема име"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Погрешна email адреса"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Пополнете барем уште едно поле освен името"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Не можеше да се пристапи до базата"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Веќе е додадено"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Името на групата веќе се користи"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Без група"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Нема број"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Нема адреси за email"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Нема записи"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM memory empty"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Надминат е максималнот број записи"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Погрешен број"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Меморијата на SIM е полна"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Може да увезете контакти од SIM-картичката на телефонот во Опции > Увези "
+"контакти или да синхронизирате со контакти од сметка на интернет преку "
+"Сметки во Опции"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Нема дневници. Откако ќе упатите или примите повик или ќе пратите или "
+"примите порака, ќе се прикажат дневниците"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Не може да се пратат визит-картички"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Означи како основен број"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Означи како основен email"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Слика"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Фотографирај"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Избриши фотографија"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Додај на основниот екран"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Сочувај запис во"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Меморирај во"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Увези контакти од SIM-от"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Првo името"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Прво презимето"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Прикажи"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Прикриј"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Прати картичка со име"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Нова група"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Избери група"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Увези контакти"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Поврзи контакт"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Отповрзи"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Сите поврзани контакти ќе се избришат"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Додај во Омилени"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Измени група"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Дод. член"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Додај во група"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Додај во Омилени"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Непознато"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Роденден"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Годишнина"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Недела"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Понеделник"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Вторник"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Среда"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Четврток"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Петок"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Сабота"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Помошник"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Брат"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Дете"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Домашен партнер"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Татко"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Пријател"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Управник"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Мајка"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Родител"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Партнер"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Препорачано од"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Роднина"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Сестра"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Сопруг/а"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "Инстант-пораки"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Повеќе информации"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Авганистан"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Албанија"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Алжир"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Американска Самоа"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Андора"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Ангола"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Ангвила"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Антигва и Барбуда"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Аргентина"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Ерменија"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Аруба"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Австралија"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Австралиски надворешни територии"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Австрија"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Азербејџан"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Бахамски острови"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Бахрејн"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Бангладеш"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Барбадос"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Белорусија"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Белгија"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Белизе"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Бенин"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Бермуди"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Бутан"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Боливија"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Бонер, Синт Евстатиј и Саба"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Босна и Херцеговина"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Боцвана"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Бразил"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Британски Девствени острови"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Брунеј Дарусалам"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Бугарија"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Буркина Фасо"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Бурунди"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Камбоџа"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Камерун"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Канада"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Капе Верде"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Кајмански острови"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Централно-африканска Република"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Чад"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Чиле"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Кина"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Колумбија"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Коморос"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Конго"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Кукови острови"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Костарика"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Брег на Слоновата Коска"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Хрватска"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Куба"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Куракао"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Кипар"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Чешка Република"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Демократска Народна Република Кореја"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Демократска Република Конго"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Тимор-Лесте"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Данска"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Диего Гарсија"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Џибути"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Доминика"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Доминиканска република"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Еквадор"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Египет"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "Ел Салвадор"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Екваторијална Гвинеја"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Еритреја"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Естонија"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Етиопија"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Фолкландски острови"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Фарски острови"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Фиџи"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Финска"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Француски Јужни Територии"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Француска Гвајана"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Француска Полинезија"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Габон"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Гамбија"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Џорџија"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Германија"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Гана"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Гибралтар"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Greece"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Гренланд"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Гренада"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Гвадалупе"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Гвам"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Гватемала"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Гвинеја"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Гвинеја Бисао"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Гвајана"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Хаити"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Хондурас"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Хонгконг"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Унгарија"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Исланд"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Индија"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Индонезија"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Меѓународна услуга за бесплатни разговори"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Меѓународна услуга за врвна цена (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Меѓународна услуга за делен трошок (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Иран"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Ирак"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Ирска"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Израел"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Јамајка"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Јапонија"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Јордан"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Казахстан"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Кенија"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Кирибати"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Кореја"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Кувајт"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Киргистан"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Народна Демократска Република Лао"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Летонија"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Либан"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Лесото"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Либерија"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Либија"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Лихтенштајн"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Литванија"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Луксембург"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Макао"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Мадагаскар"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Малави"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Малезија"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Малдиви"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Мали"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Малта"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Маршалски острови"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Мартиник"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Мавританија"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Маврициус"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Мексико"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Микронезија"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Молдавија"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Монако"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Монголија"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Црна Гора"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Монсерат"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Мароко"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Мозамбик"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Мијанмар"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Намибија"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Науру"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Непал"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Холандија"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Нова Каледонија"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Нов Зеланд"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Никарагва"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Нигер"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Нигерија"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Ниуе"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Северно Маријански острови"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Норвешка"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Оман"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Пакистан"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Палау"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Панама"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Папуа Нова Гвинеја"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Парагвај"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Перу"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Филипини"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Полска"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Порторико"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Катар"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Романија"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Руска Федерација"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Руанда"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Света Елена"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Сент Китс и Невис"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Санта Лучија"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Сен Пјер и Микелон"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Св. Винсент и Гренадински острови"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Самоа"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "Сан Марино"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Сао Томе и Принципе"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Саудиска Арабија"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Сенегал"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Србија"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Сејшелски острови"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Сиера Леоне"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Сингапур"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Сан Мартан"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Словачка"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Словенија"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Соломонови острови"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Сомалија"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Јужна Африка"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Шпанија"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Шри Ланка"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Судан"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Суринам"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Свазиленд"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Шведска"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Швајцарија"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Сириска Арапаска Република"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Тајван"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Таџикистан"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Танзанија"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Телекомуникации за помош при катастрофи (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Тајланд"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Македонија"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Того"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Токелау"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Тонга"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Тринидад и Тобаго"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Тунис"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Турција"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Туркменистан"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Острови Туркс и Каикос"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Тувалу"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Уганда"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Украина"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Обединети Арапски Емирати"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Обединето Кралство на Велика Британија и Северна Ирска"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Соединети Американски Држави"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Девствени острови на САД"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Универзална Лична Телекомуникациска Услуга (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Уругвај"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Узбекистан"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Вануату"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Град-држава Ватикан"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Венецуела"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Виетнам"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Волис и Футуна"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Јемен"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Замбија"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Зимбабве"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Мобилен телефон (домашен)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Мобилен (Работа)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Меморирано во"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Увези од SD-картичка"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Група и членови"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s е сочувано во %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Овој контакт ќе се избрише"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Фотографија"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Повикувач"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Резервна копија"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Само група"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Нова група"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Избери група"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Мобилен 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Додадено"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Преместено"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Избрано"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Откажи"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Нема доволно меморија"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Отстрането"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Побарај"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Затвори"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Избришано"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Грешка"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Повик"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Нема SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Избери ги сите"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Неуспешно"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Успешно"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Сочувај"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Додај запис"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Име на помошникот"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Избриши група"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Име на група"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Ѕвон. за група"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Сними видео-запис"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Замени"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Брзи повици"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Порака"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Постави ѕвонење"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Сите записи"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Фирма"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Измени контакти"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Земи email"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Земи број"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Без група"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Учесник"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Одреди слика"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Брзото бирање не се користи"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Избриши контакти"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Измени групи"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Додај во омилени"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Измени група"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Празно"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Меморирај број"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Одберете контакт"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Додај група"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Меморијата е полна"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Отстранување..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Контактот не може да се додаде во групата"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Ажурирај"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Откажи"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Именик"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Копирај"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Ново"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Порака"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Премести"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Телефон"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Непознато"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Видео повик"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Избриши"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Готово"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Измени"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Прати детали за контакт"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Пребарај сервер Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Име Презиме"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Презиме Име"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "За повеќе полиња, допрете го копчето оддесно"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/nb.po b/po/nb.po
new file mode 100644
index 0000000..cfa13e7
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Tastatur"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favor."
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Hurtigtast"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Mobilsvar"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Logger"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Ingen hurtigvalgnummer. Tilordne et nå?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Forespørsel mislyktes"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Forespørsel vellykket"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Nødanrop"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Ingen logger"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Ingen favoritter"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Melding slettet"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Maksimal lengde på telefonnummer oversteget"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Sletter logger..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Sletter favoritter..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Initialiserer. Prøv igjen senere..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Lyd av"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Lyd på"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Forrige skjerm"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Tilbake til anrop"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Innkommende samtale"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Utgående anrop"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Ubesvart anrop"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Sendt melding"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Mottatt melding"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Avvist anrop"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Sperret anrop"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Rediger nummer før anrop"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Send e-post"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Velg logger"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Velg hurtigkontakter"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Opphev blokk."
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Endre kontakt"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Legg til %d sek pause"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Legg til ventetid"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Ubesvart"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Avslutt"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Egendefinert"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobil"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Hjem"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Arbeid"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Faks (hjem)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Faks (arbeid)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Assistents nummer"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Personsøker"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Annet"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Faks"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Biltelefon"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Hjem 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Hovedtelefon firma"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Alle kontakter"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Ikke tilordnet"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Tjenestenummer"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grupper"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Standard"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Ringetone"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Webområde"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-post"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Nummer"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Notat"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Postadresse"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Detaljer"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Selskap"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Rekkefølge på visningsnavn"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Eget nummer"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Fornavn"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Etternavn"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Mellomnavn"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Suffiks"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Kallenavn"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Eksporter kontakter"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Velg kontakter"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Postnummer"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Land"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Region"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Sted"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Gate"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Lagret i %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Ofte kontaktet"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Kopiert"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Eksportert"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Sletter kontakter ..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Flytter..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopierer..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importerer SIM-kontakter..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importere kontakter fra vKort..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Eksportere kontakter til %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vKort"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Leser vKort..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importert"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Utilgjengelig"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Alle koblede kontakter"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Koblede kontakter"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Jobbtittel"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Avdeling"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Gruppenavn"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Legg til konto"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Legger til medlemmer i gruppe..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Vis"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d kontakter"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Endre navn"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relasjon"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Ingen poster"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Ingen aktiviteter"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Legger til..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Tilleggsinformasjon"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Postboks"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Stat"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Venner"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Familie"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Medarbeidere"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Arbeid"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Vibreringsmønster"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Angi standard"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Hendelse"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Del kontaktinformasjon"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 kontakt"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Eksporter til SIM-kort"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Historikk"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Aktiviteter"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Gruppemelding"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Gruppe-e-post"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Ingen navn"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Ugyldig e-postadresse"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Fyll ut minst ett felt i tillegg til navn"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Ingen tilgang til databasen"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Allerede lagt til"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Gruppenavn allerede i bruk"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Ingen grupper"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Ingen nummer"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Ingen e-postadresser"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Ingen kontakter"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM-minne tomt"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Maksimalt antall oppføringer oversteget"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Ugyldig nummer"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM-minne fullt"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Du kan importere kontakter fra SIM-kortet til telefonen i Innstillinger > "
+"Importer kontakter eller synkronisere med webkontokontakter med kontoer i "
+"innstillinger"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Ingen logger. Når du har ringt ut/mottatt et anrop eller sendt/mottatt en "
+"melding, vises logger"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Kan ikke sende visittkort"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Merk som standardnummer"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Merk som standard e-post"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Bilde"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Ta et bilde"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Fjern bilde"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Legg til på startskjerm"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Lagre kontakt i"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Lagre i"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importere SIM-kontakter"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Fornavn først"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Etternavn først"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Vis"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Skjul"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Send visittkort"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Opprett gruppe"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Velg gruppe"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Imp. kontakter"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Koble kontakt"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Koble fra"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Alle koblede kontakter vil bli slettet"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Legg til i Favoritter"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Rediger gruppe"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Tilf. medl."
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Legg til i gruppe"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Lagt til i Favoritter"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Ukjent"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Fødselsdag"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Årsdag"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Søndag"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Mandag"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Tirsdag"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Onsdag"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Torsdag"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Fredag"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Lørdag"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistent"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Bror"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Barn"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Samboer"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Far"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Venn"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Leder"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Mor"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Forelder"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Henvist av"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Slektning"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Søster"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Ektefelle"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Mer informasjon"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afghanistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albania"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algerie"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Amerikansk Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua og Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Australias eksterne territorier"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Østerrike"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Aserbajdsjan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Hviterussland"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgia"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius og Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnia og Herzegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brasil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "De britiske jomfruøyene"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kambodsja"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Kapp Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Caymanøyene"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Den sentralafrikanske republikk"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Chad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Kina"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Komorene"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cook-øyene"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Elfenbenskysten"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Kroatia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curacao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Kypros"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Den tsjekkiske republikk"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Den demokratiske folkerepublikken Korea"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Den demokratiske republikken Kongo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor-Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danmark"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Den dominikanske republikk"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egypt"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Ekvatorial-Guinea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estland"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falklandsøyene"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Færøyene"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finland"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Frankrike"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "De franske sørterritorier"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Fransk Guiana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Fransk Polynesia"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Tyskland"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Hellas"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grønland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hongkong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Ungarn"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Island"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irland"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italia"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japan"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordan"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kasakhstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgisistan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Den demokratiske folkerepublikken Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Latvia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Libanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libya"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Litauen"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxemburg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagascar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaysia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldivene"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshalløyene"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritania"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Mauritius"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexico"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronesia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldova"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marokko"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mosambik"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "NAMIBIA"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Nederland"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "New Caledonia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "New Zealand"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Nord-Marianene"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norge"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua New Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filippinene"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polen"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Romania"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Den russiske føderasjon"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Saint Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "St. Kitts og Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint-Pierre-et-Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent og Grenadinene"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome og Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudi-Arabia"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychellene"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapore"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Saint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovakia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Solomon-øyene"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Sør-Afrika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Spania"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Sverige"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Sveits"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Den arabiske republikk Syria"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadsjikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thailand"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Den tidligere jugoslaviske republikken Makedonia"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad og Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunisia"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Tyrkia"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks- og Caicosøyene"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraina"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "De forente arabiske emirater"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Storbritannia og Nord-Irland"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "USA"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "De amerikanske Jomfruøyene"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Usbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatikanstaten"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis og Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Jemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobil (hjem)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobil (arbeid)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Lagret i"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importer fra SD-kort"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Gruppe og gruppemedlemmer"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s lagret i %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Denne kontakten vil bli slettet"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Foto"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Tastatur"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Sikkerhetskopiering"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Bare gruppe"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Ny gruppe"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Velg gruppe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobil 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Lagt til"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Flyttet"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Valgt"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Avbryt"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Ikke nok minne"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Fjernet"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Søk"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Lukk"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Slettet"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Feil"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Ring"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Mangler SIM-kort"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Merk alt"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Det oppstod en feil"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Fullført"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Lagre"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Legg til kontakter"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Assistents navn"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Slett gruppe"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Gruppenavn"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Grupperingetone"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Spill inn video"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Erstatt"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Hurtigtast"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Meld."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Velg som ringetone"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Alle kontakter"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Selskap"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Rediger kontakter"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Hent e-post"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Hent nummer"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Ingen grupper"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Deltaker"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Angi bilde"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Kortnummer er ikke i bruk"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Slett kontakter"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Rediger grupper"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-post"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Legg til i favoritter"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Rediger gruppe"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Tom"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Lagre kontakt"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Velg kontakt"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Ny gruppe"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Minnet er fullt"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Tar bort..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Kan ikke legge til kontakt i gruppe"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Oppdater"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Avbryt"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Kontakter"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopier"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Opprett"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-post"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Melding"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Flytt"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Ukjent"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videoanrop"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Slett"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Utført"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Rediger"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Send kontaktinformasjon"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Søk Exchange server"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Fornavn Etternavn"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Etternavn Fornavn"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "For flere felt trykker du på knappen til høyre"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/nl_NL.po b/po/nl_NL.po
new file mode 100644
index 0000000..c4160e9
--- /dev/null
+++ b/po/nl_NL.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Toetsen- bord"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favo- rieten"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Snelkiezen"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Voicemail"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Logbestanden"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Geen snelkiesnummer. Nu toewijzen?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Aanvraag mislukt"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Verzoek geaccepteerd"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Noodoproep"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Geen gegevens"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Geen favorieten"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Bericht is verwijderd"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Maximale lengte telefoonnummer overschreden"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Logbestanden verwijderen..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Favorieten verwijderen..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Bezig met initialiseren. Probeer het later..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Geluid uit"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Geluid aan"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Vorig scherm"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Terug naar oproep"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Inkomende oproep"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Uitgaande oproep"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Gemiste oproep"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Verzonden bericht"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Bericht ontvangen"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Geweigerde oproep"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Geblokk. oproep"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Nummer bewerken voor oproep"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "E-mail verzenden"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Logbestanden selecteren"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Snelkiesnummers voor contacten selecteren"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Ontgrendelen"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Contact wijzigen"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "%d sec pauze toevoegen"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Wachttijd toevoegen"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Gemist"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Sluiten"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Aangepast"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobiel"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Privé"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Zakelijk"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (privé)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (werk)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Nummer assistent"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pieper"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Overige"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefoon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Autotelefoon"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Privé 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Hoofdnummer bedrijf"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Alle contacten"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Niet toegewezen"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Servicenummer"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefoon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Groepen"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Sjabloon"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Beltoon"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Website"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-mail"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Nummer"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Notitie"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Postadres"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Gegevens"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Bedrijf"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Weergavevolgorde"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Eigen nummer"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Voornaam"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Achternaam"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Tweede naam"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Suffix"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Bijnaam"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Contacten exporteren"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Contacten selecteren"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Postcode"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Land"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Provincie"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Plaats"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Straat"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Opgeslagen in %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Frequent contact"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Gekopieerd"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Geëxporteerd"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Contacten verwijderen..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Verplaatsen..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopiëren..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Contacten op SIM importeren..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Contacten importeren van vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Contacten exporteren naar %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "vCard lezen..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Geïmporteerd"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N.v.t."
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Alle gekopp. contacten"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Gekoppelde contacten"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Functie"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Afdeling"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Groepsnaam"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Account toevoegen"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Leden toevoegen aan groep..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Weergeven"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d contacten"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Naam wijzigen"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relatie"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Geen geschiedenis"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Geen activiteiten"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Toevoegen..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Extra info"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Postbus"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Provincie"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Vrienden"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Familie"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Medewerkers"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Zakelijk"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Trilpatroon"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Instellen als standaard"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Gebeurtenis"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Contactgegevens delen"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 contact"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Exporteren naar SIM-kaart"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Geschiedenis"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Activiteiten"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Groepsbericht"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Groepse-mail"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Geen naam"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Ongeldig e-mailadres"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Vul ten minste één veld en een naam in"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Kan geen toegang krijgen tot database"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Al toegevoegd"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Groepsnaam bestaat al"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Geen groep"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Geen nummer"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Geen e-mailadressen"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Geen contactpersonen"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM-geheugen leeg"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Maximumaantal items overschreden"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Ongeldig getal"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM-geheugen vol"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"U kunt contacten van uw SIM-kaart importeren in de telefoon met Instellingen "
+"> Contacten importeren of synchroniseren met webaccountcontacten via "
+"accounts in Instellingen"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Geen logbestanden. Nadat u belt/wordt gebeld of een bericht verzendt/"
+"ontvangt, worden logbestanden weergegeven"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Kan geen visitekaartjes verzenden"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Markeren als standaardnummer"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Markeren als standaard e-mailadres"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Afbeelding"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Foto maken"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Foto verwijderen"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Toevoegen aan startscherm"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Contact opslaan in"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Opslaan in"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Contacten vanaf SIM-kaart importeren"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Voornaam eerst"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Achternaam eerst"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Tonen"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Verberg."
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Visitekaartje verzenden"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Nieuwe groep"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Groep selecteren"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Contct. import."
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Contactpersoon koppelen"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Koppeling opheffen"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Alle gekoppelde contacten worden verwijderd"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Toevoegen aan favorieten"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Groep bewerken"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Nw lid"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Toevoegen aan groep"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Toegevoegd aan favorieten"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Onbekend"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Verjaardag"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Verjaardag"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Zondag"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Maandag"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Dinsdag"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Woensdag"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Donderdag"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Vrijdag"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Zaterdag"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistent"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Broer"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Kind"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Medebewoner"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Vader"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Vriend"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Manager"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Moeder"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Ouder"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Doorverwezen door"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Verwant"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Zus"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Partner"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Meer informatie"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afghanistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albanië"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algerije"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Amerikaans-Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua en Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentinië"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenië"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australië"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Australian External Territories"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Oostenrijk"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbeidzjan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahama's"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrein"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Wit-Rusland"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "België"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "BENIN"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius en Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnië en Herzegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazilië"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Maagdeneilanden (Brits)"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgarije"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Cambodja"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kameroen"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Kaapverdië"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Caymaneilanden"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Centraal Afrikaanse Republiek"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "TSJAAD"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chili"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "China"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "COMOREN"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cookeilanden"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Ivoorkust"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Kroatië"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curaçao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Cyprus"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Tsjechische Republiek"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Democratische Volksrepubliek Korea"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Democratische Republiek Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Oost-Timor"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Denemarken"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominicaanse Republiek"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egypte"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Jadida"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Equatoriaal Guinea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estland"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Ethiopië"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falklandeilanden"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Faerøer"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finland"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Frankrijk"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Zuidelijke Franse gebiedsdelen"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Frans-Guyana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Frans-Polynesië"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgië"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Duitsland"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Griekenland"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Groenland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Granada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinee-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haïti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Hongarije"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "IJsland"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesië"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Ierland"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israël"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italië"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japan"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordanië"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazachstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Koeweit"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgizië"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Democratische Volksrepubliek Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Letland"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Libanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libië"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Litouwen"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxemburg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "MADAGASCAR"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Maleisië"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldiven"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshall-eilanden"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAURITANIË"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAURITIUS"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexico"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronesia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldavië"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolië"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marokko"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambique"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "NAMIBIË"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Nederland"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nieuw-Caledonië"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nieuw-Zeeland"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "NIGER"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Noordelijke Marianen"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Noorwegen"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papoea-Nieuw-Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipijnen"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polen"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Roemenië"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Russische Federatie"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Saint Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts en Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre et Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent en de Grenadines"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tomé en Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudi-Arabië"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Servië"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychellen"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapore"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slowakije"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenië"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Salomonseilanden"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalië"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Zuid-Afrika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Spanje"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Soedan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Zweden"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Zwitserland"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Syrische Arabische Republiek"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadzjikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thailand"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Voormalige Joegoslavische Republiek Macedonië"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad en Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunesië"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turkije"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks- en Caicoseilanden"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Oeganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Oekraïne"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Verenigde Arabische Emiraten"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Verenigd Koninkrijk en Noord-Ierland"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Verenigde Staten van Amerika"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Verenigde Staten Maagdeneilanden"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Oezbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vaticaanstad"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis en Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Jemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobiel (privé)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobiel (werk)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Opgeslagen in"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importeren van SD-kaart"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Groep en groepsleden"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s opgeslagen in %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Deze contactpersoon wordt verwijderd"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Foto"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Kiezer"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Back-up"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Alleen groep"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Nieuwe groep"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Groep selecteren"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobiel 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Toegevoegd"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Verplaatst"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Geselecteerd"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Annuleren"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Onvoldoende geheugen"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Verwijderd"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Zoeken"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Sluiten"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Verwijderd"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Fout"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Oproep"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Geen SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Alles selecteren"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Mislukt"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Voltooid"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Opslaan"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Contactpersoon toevoegen"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Naam assistent"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Groep verwijderen"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Groepsnaam"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Groepsbeltoon"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Video opnemen"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Vervangen"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Snelkiezen"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Ber."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Beltoon instellen"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Alle contacten"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Bedrijf"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Contacten bewerken"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "E-mail ophalen"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Nummer ophalen"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Geen groep"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Deelnemer"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Beeld instellen"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Snelkiesnummer niet in gebruik"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Contacten verwijderen"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Groepen bewerken"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Toevoegen aan favorieten"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Groep bewerken"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Leeg"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Contact opslaan"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Contactpersoon selecteren"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Groep toevoegen"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Geheugen vol"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Verwijderen..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Kan contact niet toevoegen aan groep"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Bijwerken"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Annul."
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Contacten"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopiëren"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Nieuw"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Bericht"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Verplaatsen"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefoon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Onbekend"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Video-oproep"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Wissen"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Gereed"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Bewerken"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Contactgegevens verzenden"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Exchange-server zoeken"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Voornaam Achternaam"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Achternaam Voornaam"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Tik voor meer velden op de knop rechts"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/phone.pot b/po/phone.pot
new file mode 100644
index 0000000..3ad7af2
--- /dev/null
+++ b/po/phone.pot
@@ -0,0 +1,771 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr ""
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr ""
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr ""
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr ""
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr ""
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr ""
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr ""
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr ""
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr ""
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr ""
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr ""
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr ""
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr ""
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr ""
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr ""
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr ""
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr ""
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr ""
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr ""
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr ""
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr ""
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr ""
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr ""
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr ""
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr ""
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr ""
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr ""
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr ""
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr ""
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr ""
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr ""
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr ""
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr ""
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr ""
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr ""
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr ""
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr ""
+
+msgid "IDS_CST_POP_DELETE"
+msgstr ""
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr ""
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr ""
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr ""
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr ""
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr ""
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr ""
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr ""
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr ""
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr ""
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr ""
+
+msgid "IDS_REMOVE"
+msgstr ""
+
+msgid "IDS_CREATE_CONTACT"
+msgstr ""
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr ""
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr ""
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr ""
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr ""
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr ""
+
+msgid "IDS_CALLS"
+msgstr ""
+
+msgid "IDS_MESSAGES"
+msgstr ""
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr ""
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr ""
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr ""
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr ""
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr ""
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr ""
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr ""
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr ""
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr ""
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr ""
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr ""
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr ""
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr ""
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr ""
+
+msgid "IDS_PB_BODY_HOME"
+msgstr ""
+
+msgid "IDS_PB_BODY_WORK"
+msgstr ""
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr ""
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr ""
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr ""
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr ""
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr ""
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr ""
+
+msgid "IDS_PB_BODY_FAX"
+msgstr ""
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr ""
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr ""
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr ""
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr ""
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr ""
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr ""
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr ""
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr ""
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr ""
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr ""
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr ""
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr ""
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr ""
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr ""
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr ""
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr ""
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr ""
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr ""
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr ""
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr ""
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr ""
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr ""
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr ""
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr ""
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr ""
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr ""
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr ""
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr ""
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr ""
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr ""
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr ""
+
+msgid "IDS_PB_BODY_CITY"
+msgstr ""
+
+msgid "IDS_PB_BODY_STREET"
+msgstr ""
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr ""
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr ""
+
+msgid "IDS_PB_POP_COPIED"
+msgstr ""
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr ""
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr ""
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr ""
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr ""
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr ""
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr ""
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr ""
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr ""
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr ""
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr ""
+
+msgid "IDS_COM_BODY_NA"
+msgstr ""
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr ""
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr ""
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr ""
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr ""
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr ""
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr ""
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr ""
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr ""
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr ""
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr ""
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr ""
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr ""
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr ""
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr ""
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr ""
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr ""
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr ""
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr ""
+
+msgid "IDS_PB_BODY_STATE"
+msgstr ""
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr ""
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr ""
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr ""
+
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr ""
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr ""
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr ""
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr ""
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr ""
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr ""
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr ""
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr ""
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr ""
+
+msgid "IDS_PB_SK3_INFO"
+msgstr ""
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr ""
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr ""
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr ""
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr ""
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr ""
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr ""
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr ""
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr ""
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr ""
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr ""
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr ""
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr ""
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr ""
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr ""
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr ""
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr ""
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr ""
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr ""
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr ""
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr ""
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr ""
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr ""
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr ""
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr ""
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr ""
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr ""
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr ""
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr ""
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr ""
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr ""
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr ""
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr ""
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr ""
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr ""
+
+msgid "IDS_ST_SK_SHOW"
+msgstr ""
+
+msgid "IDS_ST_SK_HIDE"
+msgstr ""
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr ""
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr ""
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr ""
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr ""
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr ""
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr ""
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr ""
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr ""
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr ""
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr ""
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr ""
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr ""
+
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr ""
+
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr ""
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr ""
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr ""
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr ""
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr ""
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr ""
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr ""
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr ""
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr ""
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr ""
+
+msgid "IDS_PB_OPT_QQ"
+msgstr ""
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr ""
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr ""
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr ""
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr ""
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr ""
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr ""
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr ""
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr ""
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr ""
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr ""
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr ""
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr ""
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr ""
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr ""
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr ""
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr ""
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr ""
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr ""
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr ""
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr ""
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr ""
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr ""
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr ""
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr ""
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr ""
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr ""
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr ""
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr ""
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr ""
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 0000000..7274446
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Klawiat."
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Ulubione"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Szybkie wybieranie"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Poczta głosowa"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Raporty"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Brak numerów szybkiego wybierania. Przypisać teraz?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Błąd żądania"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Żądanie zakończone powodzeniem"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Połączenie alarmowe"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Brak wpisów"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Brak ulubionych"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Wiadomość usunięta"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Przekroczono maksymalną długość numeru telefonu"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Usuwanie dzienników..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Usuwanie ulubionych..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Inicjowanie. Spróbuj później..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Dźwięk wyłączony"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Dźwięk włączony"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Poprzed. ekran"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Powrót do połączenia"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Połączenie"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Połączenie wychodzące"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Połączenie nieodebrane"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Wysłano wiadomość"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Odebrano wiadomość"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Połącz. odrzucone"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Zablok. połączenie"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Edytuj numer"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Wyślij e-mail"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Wybór dzienników"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Wybierz kontakty szybkiego wybierania"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Odblok."
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Zmień kontakt"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Dodaj %d s przerwy"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Dodaj oczekiwanie"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Nieodebrane"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Wyjdź"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Niestand."
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Komórkowy"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Domowy"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Praca"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Faks (prywatny)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Faks (praca)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Numer zastępcy"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pager"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Inne"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Faks"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Telefon w samochodzie"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Domowy 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Główny telefon firmowy"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio FM"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Wszystkie kontakty"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Nieprzypisane"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Numery usług"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grupy"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Domyślnie"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Dzwonek"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Strona WWW"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-mail"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Numer"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Notatka"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Adres pocztowy"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Szczegóły"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Firma"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Kolejność wyświetlania nazw"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Własne numery"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Imię"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Nazwisko"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Drugie imię"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Nick"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Pseudonim"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Eksportuj kontakty"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Wybierz kontakty"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Kod pocztowy"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Kraj"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Okręg"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Miasto"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Ulica"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Zapisano w %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Często wybierane"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Skopiowano"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Wyeksportowano"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Usuwanie kontaktów..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Przenoszenie..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopiowanie..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importowanie kontaktów z karty SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importowanie kontaktów z wizytówki..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Eksportowanie kontaktów do %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vWizytówka"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Odczytywanie wizytówki..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Zaimportowane"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Brak"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Wsz. podłącz. kontakty"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Podłączone kontakty"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Stanowisko"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Dział"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Nazwa grupy"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Dodaj konto"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Dodawanie członków do grupy..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Podgląd"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "Kontaktów: %d"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Zmień nazwę"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Związek"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Brak historii"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Brak aktywności"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Dodawanie..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Dodatkowe informacje"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Skrzynka pocztowa"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Województwo"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Przyjaciele"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Rodzina"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Współpracownicy"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Praca"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Wzór wibracji"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Ustaw jako domyślne"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Wydarzenie"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Udostępnij informacje kontaktowe"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 kontakt"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Eksportuj na kartę SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Inform."
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Historia"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Aktywność"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Wiadomość grupowa"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Grupowa wiadomość e-mail"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Bez nazwy"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Nieprawidłowy adres e-mail"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Wypełnij co najmniej jedno pole i podaj imię"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Nie można uzyskać dostępu do bazy danych"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Już dodano"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Nazwa grupy już istnieje"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Brak grupy"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Brak numeru"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Brak adresów e-mail"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Brak kontaktów"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Pamięć SIM pusta"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Przekroczono maksymalną liczbę pozycji"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Nieprawidłowy numer"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Pamięć SIM pełna"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Kontakty można importować z karty SIM do telefonu, klikając kolejno opcje "
+"Ustawienia > Importuj kontakty, lub synchronizować z kontaktami konta, "
+"używając kont w ustawieniach"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Brak dzienników. Po wykonaniu/odebraniu połączenia lub wysłaniu/odebraniu "
+"wiadomości pojawi się dziennik"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Nie można wysłać wizytówek"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Zaznacz jako numer domyślny"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Zaznacz jako domyślny adres e-mail"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Obraz"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Zrób zdjęcie"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Usuń zdjęcie"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Dodaj do ekranu początkowego"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Zapisz kontakt w"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Zapisz w"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importuj kontakty z karty SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Najpierw imię"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Najpierw nazwisko"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Pokaż"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Ukryj"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Wyślij wizytówkę"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Utwórz grupę"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Wybierz grupę"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Importuj kont."
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Podłącz kontakt"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Odłącz"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Wszystkie podłączone kontakty zostaną usunięte"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Dodaj do ulubionych"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Edytuj grupę"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Dod. czł."
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Dodaj do grupy"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Dodano do ulubionych"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Nieznana"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Urodziny"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Rocznica"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Niedziela"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Poniedziałek"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Wtorek"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Środa"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Czwartek"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Piątek"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Sobota"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Asystent"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Brat"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Dziecko"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Partner życiowy"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Ojciec"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Przyjaciel"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Kierownik"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Matka"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Rodzic"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Z polecenia"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Krewny"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Siostra"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Małżonek"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "Adres URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "Komunikator"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Więcej informacji"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albania"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algieria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Samoa Amerykańskie"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andora"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua i Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentyna"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Australijskie Terytoria Zależne"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbejdżan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamy"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrajn"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesz"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Białoruś"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgia"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermudy"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Boliwia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius i Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bośnia i Hercegowina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazylia"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Brytyjskie Wyspy Dziewicze"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bułgaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kambodża"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Wyspy Zielonego Przylądka"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Kajmany"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Republika Środkowo-Afrykańska"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Czad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Chiny"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Kolumbia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Komory"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Wyspy Cooka"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Kostaryka"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Wybrzeże Kości Słoniowej"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Chorwacja"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curaçao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Cypr"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Czechy"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Koreańska Republika Ludowo-Demokratyczna"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Republika Demokratyczna Kongo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor Wschodni"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Dania"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Dżibuti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominika"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominikana"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ekwador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egipt"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "Salwador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Gwinea Równikowa"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Erytrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falklandy"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Wyspy Owcze"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fidżi"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finlandia"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Francja"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Francuskie Terytoria Południowe"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Gujana Francuska"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Polinezja Francuska"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Niemcy"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grecja"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grenlandia"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Gwadelupa"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Gwatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Gwinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Gwinea Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Gujana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hongkong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Węgry"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islandia"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Indie"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonezja"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irlandia"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Izrael"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Włochy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamajka"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japonia"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordania"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazachstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenia"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwejt"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgistan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Laotańska Republika Ludowo-Demokratyczna"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Łotwa"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Liban"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libia"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Litwa"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luksemburg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Makao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "MADAGASKAR"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malezja"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Malediwy"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Wyspy Marshalla"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martynika"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAURETANIA"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAURITIUS"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Meksyk"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronezja"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Mołdawia"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monako"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Czarnogóra"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Maroko"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambik"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Birma"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibia"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Holandia"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nowa Kaledonia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nowa Zelandia"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nikaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Mariany Północne"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norwegia"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Nowa Gwinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paragwaj"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipiny"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polska"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugalia"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Portoryko"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Katar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Rumunia"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Federacja Rosyjska"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Święta Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts i Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint-Pierre i Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent i Grenadyny"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Wyspy Świętego Tomasza i Książęca"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Arabia Saudyjska"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seszele"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Słowacja"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Słowenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Wyspy Salomona"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Republika Południowej Afryki"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Hiszpania"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Suazi"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Szwecja"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Szwajcaria"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Syryjska Republika Arabska"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Tajwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadżykistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tajlandia"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Była Jugosłowiańska Republika Macedonii"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trynidad i Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunezja"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turcja"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks i Caicos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraina"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Zjednoczone Emiraty Arabskie"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Zjednoczone Królestwo Wielkiej Brytanii i Irlandii Północnej"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Stany Zjednoczone"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Wyspy Dziewicze Stanów Zjednoczonych"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Urugwaj"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Państwo Watykańskie"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Wenezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Wietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis i Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Jemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Komórkowy (prywatny)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Telefon komórkowy (praca)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Zapisano w"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importuj z karty pamięci"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grupy i członkowie grup"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "Plik %s został zapisany w katalogu %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Kontakt zostanie usunięty"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Zdjęcie"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Wybier."
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Backup"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Tylko grupa"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Nowa grupa"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Wybierz grupę"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Komórkowy 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Dodano"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Przeniesiono"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Wybrane"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Anuluj"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Brak pamięci"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Usunięto"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Szukaj"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Zamknij"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Usunięto"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Błąd"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Połączenie"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Brak karty SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Zaznacz wszystko"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Błąd"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Zakończono"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Zapisz"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Dodaj kontakty"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Nazwisko zastępcy"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Usuń grupę"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Nazwa grupy"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Dzwonek grupy"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Nagraj film"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Zastąp"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Szybkie wybieranie"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Wiad."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Ustaw sygnał dzwonka"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Wszystkie kontakty"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Firma"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Edytuj kontakty"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Pobierz e-mail"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Pobierz numer"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Brak grupy"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Uczestnik"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Ustaw obraz"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Szybkie wybieranie nie jest używane"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Usuń kontakty"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Edytuj grupy"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Dodaj do Ulubionych"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Edytuj grupę"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Pusta"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Zapisz kontakt"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Wybierz kontakt"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Dodaj grupę"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Pamięć pełna"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Usuwanie..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Nie można dodać kontaktu do grupy"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Uaktualnij"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Anuluj"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Kontakty"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopiuj"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Utwórz"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Wiadomość"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Przenieś"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Nieznana"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Połączenie wideo"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Usuń"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Gotowe"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Edytuj"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Wyślij szczegóły kontaktu"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Szukaj na serwerze Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Imię Nazwisko"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Nazwisko Imię"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Dotknij przycisku po prawej stronie, aby wyświetlić więcej pól"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/poManager b/po/poManager
new file mode 100755
index 0000000..29d745c
--- /dev/null
+++ b/po/poManager
@@ -0,0 +1,141 @@
+#!/bin/bash
+
+usage()
+{
+ echo "Usage: `basename $0` [-h|--help] [-l|--line] [-f|--file] [-m|--message] [-d|--delete]
+ -h, --help Show this message.
+ -l, --line Add line to end of each file
+ -f, --file Append text file to each *.po file
+ -m, --message Add message <msgid \"...\" msgstr \"...\">
+ -d, --delete Delete n lines in all files
+
+ Samples:
+
+ To add line feed run: <`basename $0` -l>
+
+ <`basename $0` -m PRESS_THE_BUTTON 'Press the button'> will add the following text:
+ msgid \"PRESS_THE_BUTTON\"
+ msgstr \"Press the button\"
+
+ Delete command ignores the last line feed in files. So if you have file with:
+ 1
+ 2
+ 3
+
+ <`basename $0` -d 2> converts file to:
+ 1
+
+ Delete and add message command automatically inserts line feed"
+}
+
+
+add_from_file()
+{
+ local TEMP_FILE="$1"
+
+ for FILE in *.po
+ do
+ local LAST_LINE=`tail -1 "$FILE"`
+ if [ "$LAST_LINE" != "$LF" ]
+ then
+ echo "$LF" >> "$FILE"
+ fi
+ cat "$TEMP_FILE" >> "$FILE"
+ done
+}
+
+get_temp_file()
+{
+ local TEMP_FILE=temp
+ while [ -f "$TEMP_FILE" ]
+ do
+ TEMP_FILE+="_tmp"
+ done
+ echo "$TEMP_FILE"
+}
+
+add_line()
+{
+ for FILE in *.po ;
+ do
+ echo "$1" >> "$FILE" ;
+ done
+}
+
+add_message()
+{
+ TEMP_FILE=$(get_temp_file)
+ echo "msgid \""$1"\"" > "$TEMP_FILE"
+ echo "msgstr \""$2"\"" >> "$TEMP_FILE"
+ echo "$LF" >> "$TEMP_FILE"
+ add_from_file "$TEMP_FILE"
+ rm "$TEMP_FILE"
+}
+
+del_n_lines_from_tail_one_file()
+{
+ local FILE="$1"
+ local LINES_COUNT="$2"
+ local LAST_LINE=`tail -1 "$FILE"`
+ if [ "$LAST_LINE" = "$LF" ]
+ then
+ LINES_COUNT="$[$2+1]"
+ fi
+ local TEMP_FILE=$(get_temp_file)
+ head -n "-$LINES_COUNT" "$FILE" > "$TEMP_FILE"
+ echo "$LF" >> "$TEMP_FILE"
+ mv "$TEMP_FILE" "$FILE"
+}
+
+del_n_lines_from_tail()
+{
+ local LINES_COUNT="$1"
+ for FILE in *.po
+ do
+ del_n_lines_from_tail_one_file "$FILE" "$LINES_COUNT"
+ done
+}
+
+if [ -z "$1" ]
+then
+ usage
+ exit 0
+else
+ ACT="$1"
+ VAL="$2"
+ case $ACT in
+ -f|--file)
+ if [ ! -f "$VAL" ]
+ then
+ echo "File does not exist"
+ else
+ add_from_file "$VAL"
+ fi
+ ;;
+ -l|--line)
+ add_line "$VAL"
+ ;;
+ -m|--message)
+ if [ -z "$VAL" ]
+ then
+ echo "Enter '<msgid> <msgstr>'"
+ else
+ add_message "$2" "$3"
+ fi
+ ;;
+ -d|--delete)
+ if [ -z "$VAL" ]
+ then
+ echo "Enter count of lines"
+ else
+ del_n_lines_from_tail "$VAL"
+ fi
+ ;;
+ -h|--help)
+ ;&
+ *)
+ usage
+ exit 1
+ ;;
+ esac
+fi
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 0000000..95e9713
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Teclado"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favoritos"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Discagem rápida"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Caixa Postal"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Registros"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Nenhum número de discagem rápida. Atribuir um agora?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Falha na solicitação"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Êxito na solicitação"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Chamada de emergência"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Nenhum registro"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Nenhum favorito"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Mensagem apagada"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Tamanho máximo do número de telefone excedido"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Excluindo logs..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Excluindo favoritos..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Inicializando. Tente mais tarde..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Desligar som"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Ligar som"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Tela anterior"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Voltar à chamada"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Chamada recebida"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Chamada efetuada"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Chamada Perdida"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Mensagem enviada"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Mensagem recebida"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Chamada recusada"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Chamada bloqueada"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Editar nº antes de chamar"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Enviar e-mail"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Selecionar logs"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Selecionar contatos de discagem rápida"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Desbloquear"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Alterar contatos"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Adicionar pausa de %d segundos"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Adicionar espera"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Perdidas"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Sair"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Personalizar"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Celular"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Início"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Trabalho"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (casa)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (Trabalho)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Número do assistente"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pager"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Outros"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefone"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Telefone do carro"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Casa 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Principal da empresa"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Rádio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Todos os contatos"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Não atribuído"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Nº de serviços"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefone"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grupos"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Padrão"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Toque"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Site da Web"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-mail"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Número"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Nota"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Endereço postal"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Detalhes"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Empresa"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Ordem de exibição"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Meu número"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Primeiro nome"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Sobrenome"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Segundo nome"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Sufixo"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Apelido"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Exportar contatos"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Selecionar contatos"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Código postal"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "País"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Província"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Cidade"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Rua"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Salvo em %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Contatado com frequência"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Copiado"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exportado"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Apagando contatos..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Movendo…"
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Copiando..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importando contatos do cartão SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importando contatos do vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Exportando contatos para %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "Cartão de visita"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Lendo cartão de visita..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importado"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/A"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Todos contat. ligados"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Contatos associados"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Título do trabalho"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Departamento"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Nome do grupo"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Adicionar conta"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Adicionando membros ao grupo..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Ver"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d contatos"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Renomear"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relacionamento"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Nenhum histórico"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Nenhuma atividade"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Adicionando..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Informações adicionais"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Caixa postal"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Estado"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Amigos"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Família"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Colegas de trabalho"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Trabalho"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Padrão de vibração"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Definir padrão"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Evento"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Compartilhar info. de contato"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 contato"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Exportar para cartão SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Histórico"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Atividades"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Mensagem de grupo"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "E-mail de grupo"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Sem nome"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Endereço de e-mail inválido"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Preencher pelo menos um campo, bem como o nome"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Falha ao acessar a base de dados"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Já adicionado"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Nome de grupo já utilizado"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Nenhum grupo"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Sem número"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Nenhum endereço de e-mail"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Sem contatos"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Memória do SIM vazia"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Número máximo de entradas excedido"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Número inválido"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Memória SIM cheia"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Você pode importar contatos do cartão SIM para o telefone em Definições > "
+"Importar contatos ou sincronizar com contatos de conta Web utilizando as "
+"contas nas configurações"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Sem registros. Após fazer/receber uma chamada ou enviar/receber uma "
+"mensagem, os registros serão exibidos"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Impossível enviar cartões de visita"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Marcar como número padrão"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Marcar como e-mail padrão"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Imagem"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Tirar uma foto"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Remover foto"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Adicionar à tela principal"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Salvar contatos no"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Salvar em"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importar contatos SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Nome próprio primeiro"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Sobrenome primeiro"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Exibir"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Ocultar"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Enviar cartão de visita"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Criar grupo"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Selecionar grupo"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Importar Contatos"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Associar contato"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Desassociar"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Todos os contatos associados serão apagados"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Adicionar aos favoritos"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Editar grupo"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Adic. membro"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Adicionar ao grupo"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Adicionar aos favoritos"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Desconhecido"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Aniversário"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Data comemorativa"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Domingo"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Segunda"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Terça"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Quarta"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Quinta"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Sexta"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Sábado"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistente"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Irmão"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Criança"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Parceiro local"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Pai"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Amigo"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Gerenciador"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Mãe"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Pais"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Parceiro"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Mencionado por"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Relativo"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Irmã"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Esposa"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Mais informações"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afeganistão"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albânia"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Argélia"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Samoa Americana"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguila"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antígua e Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Arménia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Austrália"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territórios externos australianos"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Áustria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaijão"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Bielorrússia"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Bélgica"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "BENIM"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermudas"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Butão"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolívia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Santo Eustáquio e Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bósnia e Herzegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brasil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Ilhas Virgens Britânicas"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgária"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Camboja"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Camarões"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canadá"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cabo Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Ilhas Caimã"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "República Central Africana"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Tchade"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "China"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colômbia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "COMORES"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Ilhas Cook"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Costa do Marfim"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Croácia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curaçao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Chipre"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "República Tcheca"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "República Popular Democrática da Coreia"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "República Democrática do Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor-Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Dinamarca"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Jibuti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "República Dominicana"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Equador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egito"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Guiné Equatorial"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritreia"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estônia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiópia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Ilhas Falkland"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Ilhas Faroe"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finlândia"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Francês"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territórios Franceses do Sul"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Guiana Francesa"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Polinésia Francesa"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabão"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gâmbia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Geórgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Alemanha"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Gana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grécia"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Groenlândia"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Granada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadalupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guiné"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guiné Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guiana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Hungria"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islândia"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Índia"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonésia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Serviço de chamadas internacionais gratuitas"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Serviço internacional de tarifa majorada (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Serviço de chamadas internacionais de custo compartilhado (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Irã"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Iraque"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irlanda"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Itália"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japão"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordânia"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Cazaquistão"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Quênia"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Quiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Coreia"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Quirguistão"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Letônia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Líbano"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesoto"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Libéria"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Líbia"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lituânia"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxemburgo"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macau"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagascar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malásia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldivas"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Ilhas Marshall"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinica"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritânia"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Ilhas Maurício"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "México"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronésia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldávia"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Mônaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongólia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marrocos"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Moçambique"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "NAMÍBIA"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Holanda"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nova Caledônia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nova Zelândia"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicarágua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Níger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigéria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Ilhas Mariana do Norte"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Noruega"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Omã"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Paquistão"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panamá"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Nova Guiné"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguai"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipinas"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polônia"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Porto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Romênia"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Federação Russa"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Santa Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "São Cristóvão e Neves"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Santa Lúcia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre e Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "São Vicente e Granadinas"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "São Tomé e Príncipe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Arábia Saudita"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Sérvia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seicheles"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Serra Leoa"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapura"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Eslováquia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Eslovênia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Ilhas Salomão"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somália"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "África do Sul"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Espanha"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudão"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Suazilândia"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Suécia"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Suíça"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "República Árabe da Síria"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tajiquistão"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzânia"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tailândia"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Antiga República Iugoslava da Macedônia"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trindade e Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunísia"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turquia"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turquemenistão"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Ilhas Turcas e Caicos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ucrânia"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Emirados Árabes Unidos"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Reino Unido da Grã-Bretanha e Irlanda do Norte"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Estados Unidos da América"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Ilhas Virgens dos Estados Unidos"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguai"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbequistão"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Estado da Cidade do Vaticano"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnã"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis e Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Iêmen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zâmbia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabue"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Celular (casa)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Celular (Trabalho)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Salvo em"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importar do cartão de memória"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grupo e membros do grupo"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s salvo em %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Este contato será apagado"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Foto"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Discador"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Backup"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Apenas grupo"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Novo grupo"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Selecionar grupo"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Celular 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Adicionado"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Movido"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Selecionado"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Cancelar"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Memória insuficiente"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Removido"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Pesquisar"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Fechar"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Apagado"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Erro"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Chamada"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Sem Cartão SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Selecionar tudo"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Falhou"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Sucesso"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Salvar"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Adicionar contatos"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Nome do assistente"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Apagar grupo"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Nome do grupo"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Toque do grupo"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Gravar vídeo"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Substituir"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Discagem rápida"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Mens."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Definir toque"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Todos os contatos"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Empresa"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Editar contatos"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Obter e-mail"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Obter número"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Nenhum grupo"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Participante"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Definir imagem"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "A discagem rápida não está em uso"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Apagar contatos"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Editar grupos"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Adicionar aos favoritos"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Editar grupo"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Vazio"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Salvar contato"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Selecionar contato"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Adicionar grupo"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memória cheia"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Apagando..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Impossível adicionar contato ao grupo"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Atualizar"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Cancelar"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Contatos"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Copiar"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Criar"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Mensagem"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Mover"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefone"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Desconhecido"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videochamada"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Apagar"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Concluído"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Editar"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Enviar detalhes de contato"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Procurar servidor Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Nome Sobrenome"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Sobrenome Nome"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Para obter mais campos, toque no botão à direita"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/pt_PT.po b/po/pt_PT.po
new file mode 100644
index 0000000..7be2640
--- /dev/null
+++ b/po/pt_PT.po
@@ -0,0 +1,1772 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Teclado"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favorit."
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Marcação rápida"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Correio de voz"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Registos"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Nenhum número de marcação rápida. Atribuir um agora?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Pedido falhou"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Sucesso do pedido"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Chamada de emergência"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Nenhum registo"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Nenhuns favoritos"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Mensagem apagada"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Comprimento máximo do número de telefone excedido"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "A eliminar registos..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "A eliminar favoritos..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "A iniciar. Tente mais tarde..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Som desactivado"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Som activado"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Ecrã anterior"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Regressar à chamada"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Chamada recebida"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Chamada efectuada"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Chamada não atendida"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Mensagem enviada"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Mensagem recebida"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Chamada rejeitada"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Chamada bloqueada"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Editar número antes da chamada"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Enviar e-mail"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Seleccionar registos"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Seleccionar contactos de marcação rápida"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Desbloq."
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Trocar contacto"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Adicionar pausa de %d segundos"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Adicionar espera"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Perdidas"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Sair"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Personalizar"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Telemóvel"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Pessoal"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Empresa"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (casa)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (Trabalho)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Número do assistente"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pager"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Outro"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefone"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Telefone do automóvel"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Casa 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Principal da empresa"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Rádio FM"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Todos os contactos"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Não atribuído"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Número do serviço"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefone"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grupos"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Padrão"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Tom de toque"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Site da Web"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-mail"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Número"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Nota"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Endereço postal"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Detalhes"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Empresa"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Ordem do nome de apresentação"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Número próprio"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Nome próprio"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Apelido"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Segundo nome"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Sufixo"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Pseudónimo"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Exportar contactos"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Seleccionar contactos"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Código postal"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "País"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Província"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Cidade"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Rua"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Guardado em %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Frequentemente contactados"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Copiado"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exportado"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "A eliminar contactos..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "A mover..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "A copiar..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "A importar contactos SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "A importar contactos do vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "A exportar contactos para %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "A ler vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importado"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/A"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Todos contact. ligados"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Contactos ligados"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Título"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Departamento"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Nome do grupo"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Adicionar conta"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "A adicionar membros ao grupo..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Ver"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d contactos"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Mudar nome"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relação"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Nenhuns históricos"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Nenhumas actividades"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "A adicionar..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Informações adicionais"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Caixa postal"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Estado"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Amigos"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Família"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Colegas de trabalho"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Empresa"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Padrão da vibração"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Definir padrão"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Evento"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Partilhar informações de contacto"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 contacto"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Exportar para cartão SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Histórico"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Actividades"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Mensagem de grupo"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "E-mail de grupo"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Sem nome"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Endereço de e-mail inválido"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Preencher pelo menos um campo, bem como o nome"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Falha ao aceder à base de dados"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Já adicionado"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Nome do grupo já existente"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Nenhum grupo"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Sem número"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Nenhuns endereços de e-mail"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Sem contactos"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Memória do SIM vazia"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Número máximo de entradas excedido"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Número inválido"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Memória do SIM cheia"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Pode importar contactos do cartão SIM para o telefone em Definições > "
+"Importar contactos ou sincronizar com contactos de conta Web utilizando as "
+"contas nas definições"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Sem registos. Depois de efectuar/receber uma chamada ou de enviar/receber "
+"uma mensagem, são mostrados registos"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Impossível enviar cartões de visita"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Marcar como número padrão"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Marcar como e-mail padrão"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Imagem"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Tirar uma fotografia"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Remover foto"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Adicionar ao ecrã principal"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Guardar contacto em"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Guardar em"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importar contactos SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Nome próprio primeiro"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Apelido primeiro"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Mostrar"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Ocultar"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Enviar cartão de visita"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Criar grupo"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Seleccionar grupo"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Import. contac."
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Ligar contacto"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Desligar"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Todos os contactos ligados serão apagados"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Adicionar aos Favoritos"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Editar grupo"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Ad membro"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Adicionar a grupo"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Adicionar aos favoritos"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Desconhecido"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Data de nascimento"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Aniversário"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Domingo"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Segunda-feira"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Terça-feira"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Quarta-feira"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Quinta-feira"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Sexta-feira"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Sábado"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistente"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Irmão"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Criança"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Parceiro domést."
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Pai"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Amigo"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Gestor"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Mãe"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Progenitor"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Parceiro"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Referido por"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Parente"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Irmã"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Esposa"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "MI"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Mais informações"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afeganistão"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albânia"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Argélia"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Samoa Americana"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguila"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antígua e Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Arménia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Austrália"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territórios Exteriores Australianos"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Áustria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaijão"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Baamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Bielorrússia"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Bélgica"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "BENIM"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermudas"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Butão"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolívia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Santo Eustáquio e Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bósnia e Herzegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brasil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Ilhas Virgens Britânicas"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgária"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Camboja"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Camarões"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canadá"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cabo Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Ilhas Caimão"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "República Central Africana"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "TCHADE"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "China"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colômbia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "COMOROS"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Ilhas Cook"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Costa do Marfim"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Croácia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curaçau"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Chipre"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "República Checa"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "República Popular Democrática da Coreia"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "República Democrática do Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Dinamarca"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Jibuti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "República Dominicana"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Equador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egipto"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Guiné Equatorial"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritreia"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estónia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiópia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Ilhas Falkland"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Ilhas Faroé"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finlândia"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Territórios Franceses do Sul"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Guiana Francesa"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Polinésia Francesa"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabão"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gâmbia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Geórgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Alemanha"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Gana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grécia"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Gronelândia"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Granada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadalupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guiné"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guiné-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guiana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Hungria"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islândia"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Índia"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonésia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Serviço de chamadas gratuitas internacionais"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Serviço de chamadas de valor acrescentado internacionais (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Serviço de chamadas de custo partilhado internacionais (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Irão"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Iraque"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irlanda"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japão"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordânia"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Cazaquistão"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Quénia"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Quiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Coreia"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Quirguizistão"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "República Democrática Popular do Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Letónia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Líbano"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesoto"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Libéria"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Líbia"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lituânia"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxemburgo"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macau"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "MADAGÁSCAR"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malásia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldivas"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Ilhas Marshall"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinica"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAURITÂNIA"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAURÍCIAS"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "México"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronésia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldávia"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Mónaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongólia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marrocos"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Moçambique"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "NAMÍBIA"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Holanda"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nova Caledónia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nova Zelândia"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicarágua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "NÍGER"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigéria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Ilhas Marianas do Norte"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Noruega"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Omã"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Paquistão"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panamá"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Nova Guiné"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguai"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipinas"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polónia"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Porto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Roménia"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Federação Russa"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Santa Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "São Cristóvão e Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Santa Lúcia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "São Pedro e Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "São Vicente e Granadinas"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "São Marinho"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "São Tomé and Príncipe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Arábia Saudita"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Sérvia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seicheles"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Serra Leoa"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapura"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Eslováquia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Eslovénia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Ilhas Salomão"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somália"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "África do Sul"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Espanha"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudão"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Suazilândia"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Suécia"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Suíça"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "República Árabe da Síria"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tajiquistão"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzânia"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecomunicações para assistência em catástrofes (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tailândia"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "A antiga República Jugoslava da Macedónia"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trindade e Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunísia"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turquia"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turquemenistão"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Ilhas Turcas e Caicos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ucrânia"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Emiratos Árabes Unidos"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Reino Unido da Grã-Bretanha e da Irlanda do Norte"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Estados Unidos da América"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Ilhas Virgens dos Estados Unidos"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Serviço de telecomunicações pessoal universal (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguai"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbequistão"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Estado da Cidade do Vaticano"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietname"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis e Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Iémen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zâmbia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabué"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Telemóvel (casa)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Telemóvel (Trabalho)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Guardado em"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importar do cartão SD"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grupo e membros do grupo"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s guardado em %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Este contacto será eliminado"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Foto"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Marcador"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Cóp. segur."
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Só grupo"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Novo grupo"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Seleccionar grupo"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Telemóvel 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Adicionado"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Movido"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Seleccionado"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Cancelar"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Cartão SD cheio"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Removido"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Procurar"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Fechar"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Eliminado"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Erro"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Ligar"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Sem SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Selec. tudo"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Falha"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Concluído"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Guardar"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Adicionar contactos"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Nome do assistente"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Eliminar grupo"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Nome do grupo"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Tom toque grupo"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Gravar vídeo"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Substituir"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Marcação rápida"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Msg."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Definir tom de toque"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Todos os contactos"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Empresa"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Editar contactos"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Obter e-mail"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Obter número"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Nenhum grupo"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Participante"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Definir imagem"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Marcação rápida não utilizada"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Eliminar contactos"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr ""
+#~ "Editar\n"
+#~ "grupos"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Adicionar aos favoritos"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Editar grupo"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Vazio"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Guardar contacto"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Seleccionar contacto"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Adicionar grupo"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memória cheia"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "A remover..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Impossível adicionar contacto ao grupo"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Actualizar"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Canc."
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Contactos"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Copiar"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Criar"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Mensagem"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Mover"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefone"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Desconhecido"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Vídeochamada"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Eliminar"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Concluído"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Editar"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Enviar detalhes de contacto"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Procurar servidor Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Nome Apelido"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Apelido Nome"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Para obter mais campos, toque no botão à direita"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/ro.po b/po/ro.po
new file mode 100644
index 0000000..c2237f4
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Tastat."
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favorite"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Apelare rapidă"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Mesagerie vocală"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Jurnale"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Nu există niciun număr de apelare rapidă. Alocaţi unul acum?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Solicitare nereuşită"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Solicitare reuşită"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Apel de urgenţă"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Nu există jurnale"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Niciun element favorit"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Mesaj şters"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Lungimea maximă a numărului de telefon a fost depăşită"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Se şterg jurnalele..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Se şterg favoritele..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Se iniţializează. Încercaţi mai târziu..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Sunet oprit"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Sunet activat"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Ecranul anterior"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Înapoi la apel"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Apel de intrare"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Apel de ieşire"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Apel pierdut"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Mesaj trimis"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Mesaj primit"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Apel respins"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Apel blocat"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Editare număr înainte de apelare"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Trimitere email"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Selectare jurnale"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Selectare contacte pentru apelare rapidă"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Debloc."
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Modificare contact"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Adăugare pauză de %d secunde"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Adăugare aşteptare"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Ratat"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Ieşire"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Particularizat"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobil"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Acasă"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Serviciu"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (Domiciliu)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (Serviciu)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Număr asistent"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pager"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Alte"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Telefon maşină"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Acasă 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Număr principal firmă"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Toate contactele"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Neatribuit"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Număr serviciu"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grupuri"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Implicit"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Ton sonerie"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Site Web"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Email"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Număr"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Notă"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Adresă poştală"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Detalii"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Firmă"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Ordine afişare nume"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Număr propriu"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Nume"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Prenume"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Al doilea nume"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Sufix"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Pseudonim"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Export contacte"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Selectare contacte"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Cod poştal"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Ţară"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Provincie"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Oraş"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Stradă"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Salvat în %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Contactate frecvent"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Copiat"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exportat"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Se şterg contactele..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Mutare"
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Copiere..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Se importă contactele SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Se importă contactele de pe vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Se exportă contactele pe %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Se citeşte vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importat"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Nedisponibil"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Toate contact. conect."
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Contacte conectate"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Funcţie"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Departament"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Nume grup"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Adăugare cont"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Se adaugă membri la grup..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Vizualizare"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d contacte"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Redenumire"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relaţie"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Niciun istoric"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Nicio activitate"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Se adaugă..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Info suplimentare"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Căsuţă poştală"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Stat"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Prieteni"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Familie"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Colegi de muncă"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Serviciu"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Model vibraţie"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Setare valori implicite"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Eveniment"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Partajare informaţii de contact"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 contact"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Export pe cartela SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Inform."
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Istoric"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Activit."
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Mesaj grup"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "E-mail grup"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Nici un nume"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Adresă e-mail invalidă"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Completaţi minimum un câmp, precum şi numele"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Accesarea bazei de date a eşuat"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Deja adăugat"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Numele grupului deja în uz"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Niciun grup"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Nici un număr"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Nu există adrese e-mail"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Niciun contact"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Memorie SIM goală"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "S-a depăşit numărul maxim de intrări"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Număr incorect"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Memorie SIM plină"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Puteţi importa contacte din cartela SIM în telefon în Setări > Import "
+"contacte sau puteţi sincroniza cu contactele contului Web utilizând opţiunea "
+"Conturi din Setări"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Nu există niciun jurnal. După ce efectuaţi/primiţi un apel sau trimiteţi/"
+"primiţi un mesaj, vor fi afişate jurnalele"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Imposibil de trimis cărţile de vizită"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Marcare ca număr implicit"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Marcare ca e-mail implicit"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Imagine"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Fotografiere"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Eliminare foto"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Adăugare la ecranul de pornire"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Salvare contact în"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Salvare în"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Import contacte SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Mai întâi prenumele"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Mai întâi numele"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Afişare"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Ascundere"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Trimitere carte de vizită"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Creare grup"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Selectare grup"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Import contacte"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Conectare contact"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Anulare conectare"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Toate contactele conectate vor fi şterse"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Adăugare la Favorite"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Editare membru grup"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Ad. memb."
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Adăugare la grup"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Adăugare la favorite"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Necunoscut"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Zi de naştere"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Aniversare"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Duminică"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Luni"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Marţi"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Miercuri"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Joi"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Vineri"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Sâmbătă"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Asistent"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Frate"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Copil"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Partener intern"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Tată"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Prieten"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Manager"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Mamă"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Părinte"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partener"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Denumit după"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Rudă"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Soră"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Soţ/Soţie"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Mai multe informaţii"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albania"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algeria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Samoa Americană"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua şi Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Teritoriile australiene externe"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaidjan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrein"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Belarus"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgia"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius şi Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnia şi Herţegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazilia"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Insulele Virgine Britanice"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Cambodgia"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Camerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Capul Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Insulele Cayman"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Republica Centrafricană"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Ciad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "China"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Columbia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Comore"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Insulele Cook"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Coasta de Fildeş"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Croaţia"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Cuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curacao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Cipru"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Republica Cehă"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Republica Democratică Populară Coreeană"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Republica Democrată Congo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timorul de Est"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danemarca"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Republica Dominicană"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egipt"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Guineea Ecuatorială"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritreea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Insulele Falkland"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Insulele Faroe"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finlanda"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Franta"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Teritoriile Franceze de Sud"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Guyana Franceză"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Polinezia Franceză"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Germania"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grecia"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Groenlanda"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadelupa"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guineea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Ungaria"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islanda"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonezia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Serviciul de telefonie internaţională gratuită"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Serviciul internaţional cu taxe premium (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Serviciul internaţional cu costuri partajate (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irlanda"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italia"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japonia"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Iordania"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazahstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Coreea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuweit"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kârgâzstan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Republica Democratică Populară Lao"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Letonia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Liban"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libia"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lituania"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxemburg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagascar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaezia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldive"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Insulele Marshall"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinica"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritania"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Mauritius"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexic"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Micronezia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldova"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Muntenegru"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Maroc"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambic"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibia"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Olanda"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Noua Caledonie"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Noua Zeelandă"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Insulele Mariane de Nord"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norvegia"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Noua Guinee"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipine"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polonia"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugalia"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "România"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Federaţia Rusă"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Sfânta Elena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts şi Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Sfânta Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre şi Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Sfântul Vincenţiu şi Grenadinele"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome şi Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Arabia Saudită"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbia"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychelles"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapore"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sfântul Martin"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovacia"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Insulele Solomon"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Africa de Sud"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Spania"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Suedia"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Elveţia"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Siria"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadjikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecomunicaţii pentru ajutor în caz de calamităţi (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thailanda"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Fosta Republică Iugoslavă a Macedoniei"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad şi Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunisia"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turcia"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Insulele Turks şi Caicos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ucraina"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Emiratele Arabe Unite"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Regatul Unit al Marii Britanii şi Irlandei de Nord"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Statele Unite ale Americii"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Insulele Virgine Americane"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Serviciul universal de telecomunicaţii personale (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Oraşul-stat Vatican"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis şi Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobil (Domiciliu)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobil (Serviciu)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Salvată în"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Import de pe cartela SD"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grup şi membri ai grupului"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s a fost salvat în %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Acest contact va fi şters"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Fotografie"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Ec. apel."
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Copie de rezervă"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Numai grupul"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Grup nou"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Selectare grup"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobil 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Adăugat"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Mutat"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Selectat"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Anulare"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Memorie plină"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Eliminat"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Căutare"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Închidere"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Şters"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Eroare"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Apel"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Fără SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Selectare toate"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Nereuşit"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Succes"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Salvare"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Adăugare contacte"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Nume asistent"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Ştergere grup"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Nume grup"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Sonerie grup"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Înregistrare videoclip"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Înlocuire"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Apelare rapidă"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Mesaj"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Setare ton sonerie"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Toate contactele"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Firmă"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Editare contacte"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Obţinere e-mail"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Obţinere număr"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Niciun grup"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Participant"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Setare imagine"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Apelarea rapidă nu este în uz"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Ştergere contacte"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Editare grupuri"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Adăugare la favorite"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Editare membru grup"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Liber"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Salvare contact"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Selectare contact"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Adãugare grup"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memorie plină"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Eliminare..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Imposibil de adăugat contactul la grup"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Actualizare"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Anul."
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Contacte"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Copiere"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Creare"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Mesaj"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Mutare"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Necunoscut"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Apel video"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Ştergere"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Gata"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Editare"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Trimitere detalii de contact"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Căutare server Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Prenume Nume"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Nume Prenume"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Pentru mai multe câmpuri, atingeţi butonul din dreapta"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/ru_RU.po b/po/ru_RU.po
new file mode 100644
index 0000000..68d1d1d
--- /dev/null
+++ b/po/ru_RU.po
@@ -0,0 +1,1772 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Клавиатура"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Избранное"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Быстрый набор"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Голосовая почта"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Журналы"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Нет номеров быстрого набора. Назначить номер?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Сбой запроса"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Запрос успешно выполнен"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Экстренный вызов"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Нет журналов"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Нет избранных"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Сообщение удалено"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Превышена максимальная длина номера телефона"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Удаление журналов..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Удаление избранного..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Инициализация. Повторите попытку позже..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Звук выкл."
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Звук вкл."
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Предыдущий экран"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Вернуться к вызову"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Входящий вызов"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Исходящий вызов"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Пропущенный вызов"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Отправленное сообщение"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Полученное сообщение"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Отклоненный вызов"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Заблокиров. вызов"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Изменить номер перед вызовом"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Несохраненный"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Удалить %d журнал(ов)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Удалить"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Создать контакт"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Номер по умолчанию"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Отослать контакт как текст"
+
+msgid "IDS_CALLS"
+msgstr "Звонки"
+
+msgid "IDS_MESSAGES"
+msgstr "Сообщения"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Отправить E-mail"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Выбрать журналы"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Выбрать контакты для быстрого набора"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Разблокировать"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Изменить контакт"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Добавить паузу %d сек."
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Добавление ожидания"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Пропущенные"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Выход"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Создать свой"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Мобильный"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Домашний"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Рабочий"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Факс (домашний)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Факс (рабочий)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Номер телефона помощника"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Пейджер"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Другой"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Телефон"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Факс"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Телефон в машине"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Домашний 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Основной рабочий"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Радио"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Все контакты"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Не назначено"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Служебный номер"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Телефон"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Группы"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "По умолчанию"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Мелодия звонка"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Веб-сайт"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-mail"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Номер"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Заметка"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Почтовый адрес"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Свойства"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Компания"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Сортировка контактов"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Мой номер"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Имя"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Фамилия"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Отчество"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Суффикс"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Псевдоним"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Экспорт контактов"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Выберите контакты"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Почтовый индекс"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Страна"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Область"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Город"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Улица"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Сохранено в %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Частые контакты"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Скопировано"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Экспортировано"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Удаление контактов..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Перемещение..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Копирование..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Импорт контактов с SIM-карты..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Импорт контактов из vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Экспорт контактов в %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Чтение vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Импортировано"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Н/Д"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Все связанные контакты"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Связанные контакты"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Добавить другое поле"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Должность"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Отдел"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Имя группы"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Добавить уч. запись"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Добавление участников в группу..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Просмотреть"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "Контактов: %d"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Переименовать"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Отношения"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Нет журналов"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Нет событий"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Добавление..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Дополнительные сведения"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "П/Я"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Состояние"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Друзья"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Семья"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Коллеги"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Работа"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Пример вибровызова"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "По умолч."
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Событие"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Отправить контактные сведения"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 контакт"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Экспорт на SIM-карту"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Сведения"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Журнал"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "История"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Сообщение группы"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Эл. почта группы"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Организация"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Нет имени"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Неправильный адрес эл. почты"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Заполните как минимум одно поле, а также укажите имя"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Сбой при доступе к базе данных"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Уже добавлено"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Имя группы уже используется"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Группа отсутствует"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Нет номера"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Нет адресов электронной почты"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Нет контактов"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr ""
+"Память SIM-карты\n"
+"пуста"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Максимальное число записей превышено"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Неправильный номер"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Память SIM-карты заполнена"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Можно импортировать контакты с SIM-карты на телефон в меню Параметры > "
+"Импорт контактов или выполнить синхронизацию с контактами из учетной записи "
+"в веб-службе с помощью меню Параметры> Уч. записи"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Нет журналов. Выполняемые и принимаемые вызовы, а также отправляемые и "
+"получаемые сообщения добавляются в журналы"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Не удалось отправить визитки"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Сделать номером по умолчанию"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Отметить как адрес по умолчанию"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Картинка"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Сделать фото"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Удалить фото"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Добавить на главный экран"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Сохранить контакт"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Сохранить в"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Импортировать контакты с SIM-карты"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Сначала имя"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Сначала фамилия"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Показать"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Скрыть"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Отправить визитку"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Создать группу"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Выберите группу"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Импорт контактов"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Связать контакт"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Отменить связь"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Все связанные контакты будут удалены"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Добавить в Избранное"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Изменить"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Доб.конт."
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Добавить в группу"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Добавлено в избранное"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Неизвестно"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "День рождения"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Годовщина"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Воскресенье"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Понедельник"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Вторник"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Среда"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Четверг"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Пятница"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Сyббота"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Помощник"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Брат"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Ребенок"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Партнер"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Отец"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Друг"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Менеджер"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Мать"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Родители"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Партнер"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Рекомендация"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Родственник"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Сестра"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Супруг(а)"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Контакт заблокирован"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Контакт разблокирован"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Разблокировать контакт"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "Чат"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Подробнее"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Афганистан"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Албания"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Алжир"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Американское Самоа"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Андорра"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Ангола"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Ангилья"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Антигуа и Барбуда"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Аргентина"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Армения"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Аруба"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Австралия"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Австралийские внешние территории"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Австрия"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Азербайджан"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Багамы"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Бахрейн"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Бангладеш"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Барбадос"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Беларусь"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Бельгия"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Белиз"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Бенин"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Бермудские острова"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Бутан"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Боливия"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Бонайре, Синт-Эстатиус и Саба"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Босния и Герцеговина"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Ботсвана"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Бразилия"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Британские Виргинские острова"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Бруней Даруссалам"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Болгария"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Буркина-Фасо"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Бурунди"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Камбоджа"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Камерун"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Канада"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Кабо-Верде"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Каймановы острова"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Центрально-Африканская Республика"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Чад"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Чили"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Китай"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Колумбия"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Коморы"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Конго"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Острова Кука"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Коста-Рика"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Кот-д’Ивуар"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Хорватия"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Куба"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Кюрасао"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Кипр"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Чешская Республика"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Корейская Народно-Демократическая Республика"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Демократическая Республика Конго"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Восточный Тимор"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Дания"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Диего-Гарсия"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Джибути"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Доминика"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Доминиканская Республика"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Эквадор"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Египет"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "Сальвадор"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Экваториальная Гвинея"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Эритрея"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Эстония"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Эфиопия"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Фолклендские острова"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Фарерские острова"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Фиджи"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Финляндия"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Франция"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Французские Южные Территории"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Французская Гвиана"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Французская Полинезия"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Габон"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Гамбия"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Джорджия"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Германия"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Гана"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Гибралтар"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Греция"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Гренландия"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Гренада"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Гваделупа"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Гуам"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Гватемала"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Гвинея"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Гвинея-Бисау"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Гайана"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Гаити"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Гондурас"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Гонконг"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Венгрия"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Исландия"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Индия"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Индонезия"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Иран"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Ирак"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Ирландия"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Израиль"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Италия"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Ямайка"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Япония"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Иордан"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Казахстан"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Кения"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Кирибати"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Корея"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Кувейт"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Киргизия"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Лаосская Народно-Демократическая Республика"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Латвия"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Ливан"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Лесото"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Либерия"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Ливия"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Лихтенштейн"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Литва"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Люксембург"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Макао"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Мадагаскар"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Малави"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Малайзия"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Мальдивы"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Мали"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Мальта"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Маршалловы острова"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Мартиника"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "МАВРИТАНИЯ"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Маврикий"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Мексика"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Микронезия"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Молдова"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Монако"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Монголия"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Черногория"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Монсеррат"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Марокко"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Мозамбик"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Мьянма"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Намибия"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Науру"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Непал"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Нидерланды"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Новая Каледония"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Новая Зеландия"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Никарагуа"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Нигер"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Нигерия"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Ниуэ"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Северные Марианские острова"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Норвегия"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Оман"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Пакистан"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Палау"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Панама"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Папуа — Новая Гвинея"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Парагвай"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Перу"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Филиппины"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Польша"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Португалия"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Пуэрто-Рико"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Катар"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Румыния"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Российская Федерация"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Руанда"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Остров Святой Елены"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Сент-Китс и Невис"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Сент-Люсия"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Сен-Пьер и Микелон"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Сент-Винсент и Гренадины"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Самоа"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "Сан-Марино"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Сан-Томе и Принсипи"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Саудовская Аравия"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Сенегал"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Сербия"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Сейшельские острова"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Сьерра-Леоне"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Сингапур"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Синт-Маартен"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Словакия"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Словения"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Соломоновы острова"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Сомали"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Южно-Африканская Республика"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Испания"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Шри-Ланка"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Судан"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Суринам"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Свазиленд"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Швеция"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Швейцария"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Сирийская Арабская Республика"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Тайвань"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Таджикистан"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Танзания"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Таиланд"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Бывшая Югославская Республика Македония"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Того"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Токелау"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Тонга"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Тринидад и Тобаго"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Тунис"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Турция"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Туркменистан"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Острова Тёркс и Кайкос"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Тувалу"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Уганда"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Украина"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Объединенные Арабские Эмираты"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Соединенное Королевство Великобритании и Северной Ирландии"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "США"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Виргинские острова (США)"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Уругвай"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Узбекистан"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Вануату"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Ватикан"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Венесуэла"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Вьетнам"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Уоллис и Футуна"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Йемен"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Замбия"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Зимбабве"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Мобильный (домашний)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Мобильный (рабочий)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Сохранено в"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Импорт с карты памяти SD"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Группа и ее члены"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "Файл %s сохранен в %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Этот контакт будет удален"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Фото"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Набор"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Архивировать"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Только группа"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Новая группа"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Выберите группу"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Мобильный 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Добавлено"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Перемещено"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Выбрано"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Отмена"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Недостаточно памяти"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Удалено"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Поиск"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Закрыть"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Удалено"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Ошибка"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Вызов"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Нет SIM-карты"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Выбрать все"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Сбой"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Успешно"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Соxранить"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Добавить контакты"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Имя помощника"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Удалить группу"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Имя группы"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Мелодия группы"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Записать видео"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Заменить"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Быстрый набор"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Сбщ."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Установить мелодию вызова"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Все контакты"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Компания"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Изменить контакты"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Получить сведения об адресе эл. почты"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Получить сведения о номере"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Группа отсутствует"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Участник"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Выбрать изображение"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Быстрый набор не используется"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Удалить контакты"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Изменить группы"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Добавить в избранное"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Изменить"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Пусто"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Сохранить контакт"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Выбрать контакт"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Добавить группу"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Память заполнена"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Удаление..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Не удается добавить контакт в группу"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Обновить"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Отмена"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Контакты"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Копировать"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Создать"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Сообщение"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Переместить"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Телефон"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Неизвестно"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Видеовызов"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Удалить"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Готово"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Изменить"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "Да"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Отправить сведения о контакте"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Поиск на сервере Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Имя Фамилия"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Фамилия Имя"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Чтобы использовать другие поля, нажмите кнопку справа"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/sk.po b/po/sk.po
new file mode 100644
index 0000000..f39ddc3
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Klávesnica"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Obľúbené"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Rýchla voľba"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Hlasová pošta"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Denníky"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Žiadne číslo rýchlej voľby. Priradiť nejaké teraz?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Požiadavka sa nepodarila"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Žiadosť bola úspešná"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Tiesňový hovor"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Žiadne denníky"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Žiadne obľúbené položky"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Správa vymazaná"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Prekročila sa maximálna dĺžka telefónneho čísla"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Odstraňujú sa denníky..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Odstraňujú sa obľúbené položky..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Inicializuje sa. Skúste to neskôr..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Vypnúť zvuk"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Zapnúť zvuk"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Predch. obraz."
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Späť na hovor"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Prichádzajúci hovor"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Odchádzajúci hovor"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Zmeškaný hovor"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Odoslaná správa"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Prijatá správa"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Odmietnutý hovor"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Blokovaný hovor"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Upraviť číslo pred hovorom"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Odoslať e-mail"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Vybrať denníky"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Vybrať kontakty rýchlej voľby"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Odblokovať"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Zmeniť kontakt"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Pridať %d-sekundovú pauzu"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Pridať čakanie"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Zmeškané"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Koniec"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Vlastné"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobilné"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Domov"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Práca"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (domov)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (práca)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Číslo asistenta"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pager"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Ďalšie"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefón"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Autotelefón"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Domov 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Firemné hlavné"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Rádio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Všetky kontakty"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Nepriradené"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Číslo služby"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefón"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Skupiny"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Predvolený"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Zvonenie"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Webová lokalita"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-mail"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Číslo"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Poznámka"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Poštová adresa"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Podrobnosti"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Spoločnosť"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Poradie zobrazovania mien"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Vlastné číslo"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Meno"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Priezvisko"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Druhé krstné meno"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Titul za menom"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Prezývka"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Exportovať kontakty"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Vybrať kontakty"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "PSČ"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Krajina"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Kraj"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Mesto"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Ulica"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Uložené do %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Často kontaktované"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Skopírované"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exportované"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Odstraňujú sa kontakty..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Presúvanie..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopírovanie..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importujú sa kontakty karty SIM..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importujú sa kontakty z vizitky..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Exportujú sa kontakty do %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Číta sa vizitka..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importované"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Nedá sa použiť"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Všetky prep. kontakty"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Prepojené kontakty"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Pracovná funkcia"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Oddelenie"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Názov skupiny"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Pridať konto"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Pridávajú sa členovia do skupiny..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Zobraziť"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "Kontakty: %d"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Premenovať"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Vzťah"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Žiadne histórie"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Žiadne aktivity"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Pridávanie..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Ďalšie informácie"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Poštová schránka"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Štát"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Priatelia"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Rodina"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Spolupracovníci"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Práca"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Vzor vibrovania"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Predvoliť"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Udalosť"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Zdieľať kontaktné údaje"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 kontakt"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Exportovať na kartu SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Inform."
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "História"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Aktivity"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Skupinová správa"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Skupinový e-mail"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Žiadny názov"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Neplatná e-mailová adresa"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Vyplňte meno a aspoň jedno ďalšie pole"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Nepodarilo sa získať prístup k databáze"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Už pridané"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Názov skupiny už existuje"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Žiadna skupina"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Žiadne číslo"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Žiadne e-mailové adresy"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Žiadne kontakty"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Pamäť karty SIM je prázdna"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Prekročil sa maximálny počet položiek"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Neplatné číslo"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Pamäť SIM karty je plná"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Môžete importovať kontakty z karty SIM do telefónu v menu Nastavenia > "
+"Importovať kontakty alebo synchronizovať s kontaktmi webových kont použitím "
+"kont v nastaveniach"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Žiadne denníky. Po uskutočnení/prijatí hovoru alebo odoslaní/prijatí správy "
+"sa zobrazia denníky"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Vizitky sa nedajú odoslať"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Označiť ako predvolené číslo"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Označiť ako predvolený e-mail"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Obrázok"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Fotografovať"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Odstrániť fotografiu"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Pridať na úvodnú obrazovku"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Uložiť kontakt do"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Uložiť do"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importovať kontakty z karty SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Najprv krstné meno"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Najprv priezvisko"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Zobraziť"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Skryť"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Odoslať vizitku"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Vytvoriť skupinu"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Vyberte skupinu"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Imp. kontakty"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Prepojiť kontakt"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Zrušiť prepojenie"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Všetky prepojené kontakty sa vymažú"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Pridať do obľúbených"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Upraviť skupinu"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Pr. člena"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Pridať do skupiny"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Pridaný do obľúbených položiek"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Neznáme"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Narodeniny"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Výročie"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Nedeľa"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Pondelok"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Utorok"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Streda"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Štvrtok"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Piatok"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Sobota"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Asistent"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Brat"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Dieťa"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Domáci partner"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Otec"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Priateľ"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Manažér"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Matka"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Rodič"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Odporučil"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Príbuzný"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Sestra"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Manžel(ka)"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "Komunikátor"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Ďalšie informácie"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albánsko"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Alžírsko"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Americká Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguila"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua a Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentína"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Arménsko"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Austrália"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Austrálske externé územia"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Rakúsko"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbajdžan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamy"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrajn"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladéš"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Bielorusko"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgicko"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermudy"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bután"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolívia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius a Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosna a Hercegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazília"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Britské Panenské ostrovy"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Sultanát Brunej"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulharsko"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kambodža"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Kapverdy"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Kajmanie ostrovy"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Stredoafrická republika"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Čad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Čile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Čína"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Kolumbia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Komory"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cookove ostrovy"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Kostarika"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Pobrežie Slonoviny"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Chorvátsko"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curacao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Cyprus"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Česká republika"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Kórejská ľudovodemokratická republika"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Konžská demokratická republika"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Východný Timor"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Dánsko"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Džibutsko"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominika"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominikánska republika"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ekvádor"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egypt"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Rovníková Guinea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estónsko"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiópia"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falklandy"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Faerské ostrovy"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fidži"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Fínsko"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Francúzsko"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Francúzske južné a antarktické územia"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Francúzska Guayana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Francúzska Polynézia"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Gruzínsko"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Nemecko"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltár"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grécko"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grónsko"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Maďarsko"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Island"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonézia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Medzinárodná bezplatná telefónna služba"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Medzinárodná prémiová tarifná služba (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Medzinárodná služba so zdieľaním nákladov (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Irán"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Írsko"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Izrael"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Taliansko"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamajka"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japonsko"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordánsko"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazachstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Keňa"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Kórea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuvajt"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgizsko"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Laoská ľudovodemokratická republika"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Lotyšsko"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Libanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Libéria"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Líbya"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Lichtenštajnsko"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Litva"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxemburg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagaskar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malajzia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldivy"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshallove ostrovy"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinik"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAURETÁNIA"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Maurícius"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexiko"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronézia"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldavsko"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monako"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolsko"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Čierna hora"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Maroko"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambik"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Mjanmarsko"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namíbia"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepál"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Holandsko"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nová Kaledónia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nový Zéland"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nikaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigéria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Severné Mariánske ostrovy"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Nórsko"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Omán"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua-Nová Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguaj"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipíny"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Poľsko"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugalsko"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Portoriko"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Katar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Rumunsko"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Ruská federácia"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Svätá Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Svätý Kitts a Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Svätá Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Svätý Pierre a Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Svätý Vincent a Grenadíny"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Maríno"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Svätý Tomáš a Princov ostrov"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudská Arábia"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Srbsko"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychely"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Svätý Martin"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovensko"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovinsko"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Šalamúnove ostrovy"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somálsko"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Južná Afrika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Španielsko"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Srí Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudán"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Svazijsko"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Švédsko"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Švajčiarsko"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Sýrska arabská republika"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadžikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzánia"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telekomunikácie na pomoc pri katastrofách (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thajsko"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Bývalá juhoslovanská republika Macedónsko"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad a Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunis"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turecko"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkménsko"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Ostrovy Turks a Caicos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukrajina"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Spojené arabské emiráty"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Spojené kráľovstvo Veľkej Británie a Severného Írska"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Spojené štáty americké"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Panenské ostrovy (USA)"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Univerzálna osobná telekomunikačná služba (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguaj"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatikán"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis a Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Jemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobil (domov)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobil (práca)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Uložené do"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Importovať z karty SD"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Skupina a členovia skupiny"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "Súbor %s je uložený v priečinku %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Tento kontakt bude vymazaný"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Fotografia"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Vytáčanie"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Zálohovanie"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Iba skupina"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Nová skupina"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Vyberte skupinu"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobilný telefón 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Pridané"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Presunuté"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Vybrané"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Zrušiť"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Nedostatok pamäte"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Odstránené"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Hľadať"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Zavrieť"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Odstránené"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Chyba"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Hovor"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Žiadna SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Vybrať všetky"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Nepodarilo sa"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Dokončené"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Uložiť"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Pridať kontakty"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Meno asistenta"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Odstrániť skupinu"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Názov skupiny"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Zvon. skupiny"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Nahrať video"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Nahradiť"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Rýchla voľba"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Správa"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Nastaviť zvonenie"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Všetky kontakty"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Spoločnosť"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Upraviť kontakty"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Získať e-mail"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Získať číslo"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Žiadna skupina"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Účastník"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Nastaviť obrázok"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Rýchla voľba sa nepoužíva"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Vymazať kontakty"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Upraviť skupiny"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Pridať do obľúbených položiek"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Upraviť skupinu"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Prázdne"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Uložiť kontakt"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Vybrať kontakt"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Pridať skupinu"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Pamäť plná"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Odstraňovanie..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Kontakt sa nedá pridať do skupiny"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Aktualizovať"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Zruš."
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Kontakty"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopírovať"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Vytvoriť"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-mail"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Správa"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Presunúť"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefón"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Neznáme"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videohovor"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Odstrániť"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Hotovo"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Upraviť"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Odoslať kontaktné údaje"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Hľadať na serveri Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Krstné meno Priezvisko"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Priezvisko Krstné meno"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Ďalšie polia zobrazíte ťuknutím na tlačidlo vpravo"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/sl.po b/po/sl.po
new file mode 100644
index 0000000..4c4a519
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Tipkov."
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Priljub."
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Hitro klicanje"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Odzivnik"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Dnevniki"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Ni številke za hitro izbiranje. Določim zdaj?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Zahteva ni uspela"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Zahteva uspešna"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Klic v sili"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Ni dnevnikov"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Ni priljubljenih"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Sporočilo je izbrisano"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Največja dovoljena dolžina telefonske številke je presežena"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Brisanje dnevnikov ..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Brisanje priljubljenih ..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Inicializacija. Poskusite pozneje ..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Zvok izklopljen"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Zvok vklopljen"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Prejšnji zaslon"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Nazaj na klic"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Dohodni klic"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Odhodni klic"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Neodgovorjen klic"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Poslano sporočilo"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Prejeto sporočilo"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Zavrnjen klic"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Blokiran klic"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Uredi številko pred klicem"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Pošlji e-pošto"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Izberi dnevnike"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Izberite stike za hitro izbiranje"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Preklic blokade"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Spremeni stik"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Dodaj %d sekund premora"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Dodaj čakanje"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Neodgovorjeno"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Izhod"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Osebne"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobilni"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Domači"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Službeni"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Faks (doma)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Faks (služba)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Številka pomočnika"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pozivnik"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Drugo"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Faks"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Telefon v avtomobilu"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Doma 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Glavna številka podjetja"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Vse vizitke"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Ni dodeljeno"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Številka storitve"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Skupine"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Privzeto"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Melodija zvonjenja"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Spletno mesto"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-pošta"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Številka"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Beležka"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Poštni naslov"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Podrobnosti"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Podjetje"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Zaporedje prikazanega imena"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Lastna številka"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Ime"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Priimek"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Srednje ime"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Pripona"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Vzdevek"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Izvozi stike"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Izberi stike"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Poštna številka"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Država"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Provinca"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Mesto"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Ulica"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Shranjeno v %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Pogosto v stiku"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Kopirano"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Izvoženo"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Brisanje stikov ..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Premikam"
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopiram ..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Uvažanje stikov SIM ..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Uvažam stike iz kartice vCard ..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Izvoz stikov v %s ..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vKartica"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Branje kartice vCard ..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Uvoženo"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Ni nastavljeno"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Vsi povezani stiki"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Povezani stiki"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Službeni naziv"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Oddelek"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Ime skupine"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Dodaj račun"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Dodajam člane v skupino ..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Prikaži"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d stikov"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Preimenuj"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Stan"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Ni zgodovin"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Ni dejavnosti"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Dodajam..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Dodatne informacije"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Poštni predal"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Država"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Prijatelji"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Družina"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Sodelavci"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Služba"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Vzorec tresenja"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Nastavi privzeto vrednost"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Dogodek"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Deli podatke o stiku z drugimi"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 stik"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Izvozi na kartico SIM"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Zgodovina"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Dejavnosti"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Sporočilo skupine"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "E-pošta skupine"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Brez imena"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Neveljaven e-poštni naslov"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Izpolnite vsaj eno polje, skupaj z imenom"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Dostop do podatkovne zbirke ni mogoč"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Že dodano"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Ime skupine že obstaja"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Ni skupine"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Ni številke"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Ni e-poštnih naslovov"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Ni stikov"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM pomnilnik je prazen"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Preseženo je največje dovoljeno število vnosov"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Neveljavna številka"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Pomnilnik kartice SIM je poln"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Stike lahko uvozite v telefon iz kartice SIM prek menija Nastavitve > Uvozi "
+"stike ali pa jih sinhronizirate s stiki iz spletnih računov z uporabo "
+"računov v nastavitvah"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Ni dnevnikov. Ko opravite/prejmete klic ali pošljete/prejmete sporočilo, "
+"bodo prikazani dnevniki"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Ni mogoče poslati imena kartic"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Označi kot privzeto številko"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Označi kot privzeto e-pošto"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Slika"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Naredi fotografijo"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Odstrani fotografijo"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Dodaj na domači zaslon"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Stik shrani v"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Shrani v"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Uvozi stike iz kartice SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Najprej ime"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Najprej priimek"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Prikaži"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Skrij"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Pošlji vizitko"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Ustvari skupino"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Izberite skupino"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Uvozi stike"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Poveži stik"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Odstrani povezavo"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Vsi povezani stiki bodo izbrisani"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Dodaj med priljubljene"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Uredi skupino"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Dod.člana"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Dodaj skupini"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Dodano med priljubljene"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Neznano"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Rojstni dan"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Obletnica"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Nedelja"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Ponedeljek"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Torek"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Sreda"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Četrtek"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Petek"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Sobota"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Pomočnik"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Brat"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Otrok"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Domači partner"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Oče"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Prijatelj"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Upravitelj"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Mati"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Starš"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Priporočil"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Sorodnik"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Sestra"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Zakonec"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Več informacij"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albanija"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Alžirija"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Ameriška Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andora"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Angvila"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigva in Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenija"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Avstralija"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Avstralski zunanji teritoriji"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Avstrija"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbajdžan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahami"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrajn"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladeš"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Belorusija"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgija"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "BENIN"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermudi"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Butan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivija"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius in Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosna in Hercegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Bocvana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazilija"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Britanski Deviški otoki"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunej Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bolgarija"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kambodža"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Zelenortski otoki"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Kajmanski otoki"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Srednjeafriška republika"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "ČAD"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Čile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Kitajska"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Kolumbija"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "COMOROS"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cookovi otoki"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Kostarika"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Slonokoščena obala"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Hrvaška"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curacao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Ciper"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Češka republika"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Demokratična ljudska republika Koreja"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Demokratična republika Kongo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Republika Timor-Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danska"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Džibuti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominika"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominikanska republika"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ekvador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egipt"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Ekvatorialna Gvineja"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritreja"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonija"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopija"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falklandski otoki"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Ferski otoki"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fidži"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finska"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Francosko južno ozemlje"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Francoska Gvajana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Francoska Polinezija"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambija"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Nemčija"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Gana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grčija"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grenlandija"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Gvatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Gvineja"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Gvineja Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Gvajana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Madžarska"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islandija"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Indija"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonezija"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Storitev mednarodnega brezplačnega klicanja"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Mednarodna storitev z dodatno vrednostjo (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Storitev mednarodnega klicanja z deljenimi stroški (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irska"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Izrael"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamajka"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japonska"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordanija"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazahstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenija"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Koreja"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuvajt"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgizistan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Demokratična ljudska republika Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Latvija"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Libanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesoto"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberija"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libija"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Lihtenštajn"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Litva"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luksemburg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "MADAGASKAR"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malavi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malezija"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldivi"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshallovi otoki"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinik"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAVRETANIJA"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAURITIUS"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mehika"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronezija"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldavija"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monako"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolija"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Črna gora"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Maroko"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambik"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Mjanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "NAMIBIJA"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Nizozemska"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nova Kaledonija"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nova Zelandija"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nikaragva"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigerija"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Severni Marianski otoki"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norveška"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Nova Gvineja"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paragvaj"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipini"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Poljska"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugalska"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Portoriko"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Katar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Romunija"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Ruska federacija"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Sveta Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts in Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre in Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent in Grenadine"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome in Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Savdska Arabija"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Srbija"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Sejšeli"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovaška"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenija"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Salomonovi otoki"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalija"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Južna Afrika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Španija"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Šrilanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Svazi"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Švedska"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Švica"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Arabska republika Sirija"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Tajvan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadžikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzanija"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telekomunikacije za pomoč pri katastrofi (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tajska"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Nekdanja jugoslovanska republika Makedonija"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad in Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunizija"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turčija"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Otoki Turks in Caicos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukrajina"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Združeni arabski emirati"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Združeno kraljestvo Velike Britanije in Severne Irske"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Združene države Amerike"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Ameriški Deviški otoki"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Univerzalna osebna telekomunikacijska storitev (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Urugvaj"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatikanska mestna država"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis in Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Jemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambija"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabve"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobilni telefon (doma)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobilni telefon (služba)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Shranjeno v"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Uvozi iz kartice SD"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Skupina in člani skupine"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "Datoteka %s shranjena v mapo %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Ta stik bo izbrisan"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Fotografija"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Izbirnik"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Varnostno kopiranje"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Samo skupina"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Nova skupina"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Izberite skupino"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobilni 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Dodano"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Premaknjeno"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Izbrano"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Prekliči"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Ni dovolj pomnilnika"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Odstranjeno"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Iskanje"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Zapri"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Izbrisano"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Napaka"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Klic"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Ni SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Izberi vse"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Ni uspelo"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Uspeh"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Shrani"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Dodaj stike"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Ime pomočnika"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Zbriši skupino"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Ime skupine"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Mel.zv. skupina"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Posnemi video"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Zamenjaj"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Hitro klicanje"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Spor."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Nastavi melodijo zvonjenja"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Vse vizitke"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Podjetje"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Uredi stike"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Pridobi e-pošto"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Pridobi številko"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Ni skupine"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Udeleženec"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Nastavi sliko"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Hitro izbiranje ni v uporabi"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Izbriši stike"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Uredi skupine"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-pošta"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Dodaj med priljubljene"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Uredi skupino"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Izprazni"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Shrani vizitko"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Izberi stik"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Dodaj skupino"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Pomnilnik je poln"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Odstranjujem ..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Stika ni mogoče dodati v skupino"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Posodobitev"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Prekliči"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Imenik"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopiraj"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Ustvari"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-pošta"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Sporočilo"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Premakni"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Neznano"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Video klic"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Izbriši"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Končano"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Uredi"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "V redu"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Pošlji podrobnosti stika"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Poišči v strežniku Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Ime Priimek"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Priimek Ime"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Za več polj pritisnite gumb na desni"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/sr.po b/po/sr.po
new file mode 100644
index 0000000..da30c93
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Tastatura"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Omiljeni"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Brzo biranje"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Govorna pošta"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Dnevnici"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Nema brojeva za brzo biranje. Dodeli jedan sada?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Zahtev neuspešan"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Uspešan zahtev"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Pozivi u hitnim slučajevima"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Nema dnevnika"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Nema omiljenih"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Poruka obrisana"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Prekoračena je maksimalna dužina broja telefona"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Brisanje dnevnika..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Brisanje omiljenih..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Inicijalizacija je u toku. Pokušaj kasnije..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Zvuk isključen"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Zvuk uključen"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Prethod. ekran"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Povratak na poziv"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Dolazni poziv"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Odlazni poziv"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Propušten poziv"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Poslata poruka"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Primljena poruka"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Odbijeni poziv"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Blokirani poziv"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Izmeni broj pre pozivanja"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Pošalji e-poruku"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Izaberi dnevnike"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Izaberi brzo biranje kontakata"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Deblokiraj"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Promeni kontakt"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Dodaj pauzu od %d s"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Dodaj čekanje"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Propušteni"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Izlaz"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Prilagođeno"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobilni"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Kuća"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Posao"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Faks (privatni)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Faks (poslovni)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Broj asistenta"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Pejdžer"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Ostalo"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Faks"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Telefon u kolima"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Kuća 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Glavni telefon preduzeća"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Svi kontakti"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Nedodeljeno"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Uslužni broj"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grupe"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Podrazumevano"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Ton zvona"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Sajt"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-pošta"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Broj"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Beleška"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Poštanska adresa"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Detalji"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Kompanija"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Redosled prikaza imena"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Sopstveni broj"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Ime"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Prezime"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Srednje ime"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Sufiks"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Nadimak"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Izvezi kontakte"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Izaberi kontakte"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Poštanski broj"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Zemlja"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Regija"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Grad"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Ulica"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Sačuvano u %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Često kontaktirani"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Iskopirano"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Izvezeno"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Brisanje kontakata..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Premeštanje"
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopiranje..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Uvoz kontakata iz SIM-a..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Uvoz kontakata sa vCard kartice..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Izvoz kontakata u %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Čitanje vCard kartice..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Uvezeno"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Nema"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Svi povezani kontakti"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Povezani kontakti"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Radno mesto"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Odeljenje"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Naziv grupe"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Dodaj nalog"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Dodavanje članova grupi..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Prikaži"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d kontakti"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Preimenuj"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Veza"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Nema istorija"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Nema aktivnosti"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Dodavanje..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Dodatne informacije"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Poštanski fah"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Država"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Prijatelji"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Porodica"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Saradnici"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Posao"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Šablon vibracije"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Podesi podrazumevano"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Događaj"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Deli Informacije o kontaktu"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 kontakt"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Izvezi na SIM karticu"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Istorija"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Aktivnosti"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Grupna poruka"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Grupna e-poruka"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Nema imena"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Neispravna adresa e-pošte"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Osim imena, popuni bar još jedno polje"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Neuspešno ažuriranje baze podataka"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Već dodato"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Ime grupe se već koristi"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Nema grupe"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Nema broja"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Nema adresa e-pošte"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Nema kontakata"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Memorija SIM kartice prazna"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Dostignut maksimalan broj unosa"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Neispravan broj"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Memorija SIM kartice puna"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Kontakte sa SIM kartice možete da uvezete na telefon u meniju „Podešavanja” "
+"> „Uvezi kontakte” ili da ih sinhronizujte pomoću kontakata web naloga "
+"koristeći naloge u podešavanjima"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Nema dnevnika. Nakon što uputiš/primiš poziv ili pošalješ/primiš poruku, "
+"prikazaće se dnevnici"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Nemoguće poslati vizitkarte"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Označi kao podrazumevani broj"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Označi kao podrazumevanu e-poruku"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Slika"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Snimi fotografiju"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Ukloni fotografiju"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Dodajte na početni ekran"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Sačuvaj kontakt u"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Sačuvaj u"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Uvezi kontakte iz SIM kartice"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Prvo ide ime"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Prvo ide prezime"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Prikaži"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Sakrij"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Pošalji vizitkartu"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Kreiraj grupu"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Izaberi grupu"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Uvezi kontakte"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Poveži kontakt"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Razdvoj"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Biće obrisani svi povezani kontakti"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Dodaj u Omiljene"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Izmeni grupu"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Dodaj čl."
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Dodaj u grupu"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Dodato u omiljene"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Nepoznato"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Rođendan"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Godišnjica"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Nedelja"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Ponedeljak"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Utorak"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Sreda"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Četvrtak"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Petak"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Subota"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Asistent"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Brat"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Dete"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Domaći partner"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Otac"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Prijatelj"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Menadžer"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Majka"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Roditelj"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Određuje"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Rođak/a"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Sestra"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Supružnik"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Više informacija"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Avganistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albanija"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Alžir"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Američka Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andora"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Angilja"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigva i Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Jermenija"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australija"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Države i teritorije Australije"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austrija"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbejdžan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahami"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrein"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladeš"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Belorusija"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgija"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Butan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivija"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Boner, Sveti Eustahije i Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosna i Hercegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Bocvana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Britanska Devičanska Ostrva"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunej"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bugarska"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kambodža"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Zelenortska ostrva"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Kajmanska Ostrva"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Centralnoafrička Republika"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Čad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Čile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Kina"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Kolumbija"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Komori"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Kukova ostrva"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Kostarika"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Obala Slonovače"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Hrvatska"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Kurasao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Kipar"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Češka"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Demokratska Narodna Republika Koreja"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Demokratska Republika Kongo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Istočni Timor"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danska"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Dijego Garsija"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Džibuti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominika"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominikanska Republika"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ekvador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egipat"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Ekvatorijalna Gvineja"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritreja"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonija"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopija"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Folklandska ostrva"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Farska ostrva"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fidži"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finska"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Francuska"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Južne francuske teritorije"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Francuska Gvajana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Francuska Polinezija"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambija"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Džordžija"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Nemačka"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Gana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grčka"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grenland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Gvadalupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Gvam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Gvatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Gvineja"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Gvineja Bisao"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Gijana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Mađarska"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Island"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Indija"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonezija"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Međunarodna usluga besplatnog telefoniranja"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Međunarodna usluga vrhunskog protoka (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irska"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Izrael"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italija"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamajka"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japan"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordan"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazahstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenija"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Južna Koreja"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuvajt"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgistan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Demokratska Narodna Republika Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Letonija"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Liban"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesoto"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberija"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libija"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Lihtenštajn"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Litvanija"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luksemburg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Makao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagaskar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malavi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malezija"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldivi"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Maršalova ostrva"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinik"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritanija"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Mauricijus"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Meksiko"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronezija"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldavija"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monako"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolija"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Crna Gora"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Monserat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Maroko"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambik"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Mijanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibija"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Holandija"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nova Kaledonija"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Novi Zeland"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nikaragva"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigerija"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Severna Marijanska ostrva"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norveška"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Nova Gvineja"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paragvaj"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipini"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Poljska"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Portoriko"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Katar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Rumunija"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Ruska Federacija"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Sveta Jelena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Sent Kits i Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Santa Lucija"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Sen Pjer i Mikelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Sen Vinsent i Grenadini"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome i Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudijska Arabija"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Srbija"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Sejšeli"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sijera Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Marten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovačka"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenija"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Solomonska Ostrva"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalija"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Južnoafrička Republika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Španija"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Šri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Svazilend"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Švedska"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Švajcarska"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Sirijska Arapska Republika"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Tajvan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadžikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzanija"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Centar za obaveštavanje i uzbunjivanje (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tajland"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Bivša Jugoslovenska Republika Makedonija"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad i Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunis"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turska"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks i Kajkos"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukrajina"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Ujedinjeni Arapski Emirati"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Ujedinjeno Kraljevstvo Velike Britanije i Severne Irske"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Sjedinjene Američke Države"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Američka Devičanska Ostrva"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Urugvaj"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatikan"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venecuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vijetnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Valis i Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Jemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambija"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabve"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobilni telefon (privatni)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobilni (poslovni)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Sačuvano u"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Uvezi sa SD kartice"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grupa i članovi grupe"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s sačuvano u %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Ovaj kontakt će biti obrisan"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Fotografija"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Birač"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Bekap"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Samo grupa"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Nova grupa"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Izaberi grupu"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobilni 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Dodato"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Premešteno"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Izabrano"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Poništi"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Nedovoljna memorija"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Uklonjeno"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Pretraži"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Zatvori"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Obrisano"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Greška"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Poziv"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Nema SIM kartice"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Izaberi sve"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Neuspešno"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Uspeh"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Sačuvaj"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Dodaj kontakte"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Ime asistenta"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Obriši grupu"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Naziv grupe"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Ton zvona grupe"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Snimi video zapis"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Zameni"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Brzo biranje"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Poruka"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Podesi ton zvona"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Svi kontakti"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Kompanija"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Izmeni kontakte"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Primi e-poštu"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Primi broj"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Nema grupe"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Učesnik"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Podesi sliku"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Brzo biranje nije u upotrebi"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Obriši kontakte"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Izmeni grupe"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-pošta"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Dodaj u Omiljene"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Izmeni grupu"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Prazno"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Sačuvaj kontakt"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Izaberi kontakt"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Dodaj grupu"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Memorija puna"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Uklanjanje..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Nemoguće dodati kontakt u grupu"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Ažuriraj"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Otkaži"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Kontakti"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopiraj"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Kreiraj"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-pošta"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Poruka"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Premesti"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Nepoznato"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Video poziv"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Obriši"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Gotovo"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Izmeni"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Pošalji kontakt podatke"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Pretraži Exchange server"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Ime Prezime"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Prezime Ime"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Kucni na dugme koje se nalazi sa desne strane za više polja"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..1d53228
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,1770 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Knappsats"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favorit."
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Kortnummer"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Röstmeddelande"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Loggar"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Inget angivet kortnummer. Vill du ange ett nummer?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Begäran misslyckades"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Begäran genomförd"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Nödsamtal"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Inga loggar"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Inga favoriter"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Meddelande raderat"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Högsta längd för telefonnummer har överskridits"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Tar bort loggar..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Tar bort favoriter..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Initierar. Försök senare..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Ljud av"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Ljud på"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Föreg. skärm"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Tillbaka till samtal"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Inkommande samtal"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Utgående samtal"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Missat samtal"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Skickat meddelande"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Mottaget meddelande"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Avvisat samtal"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Blockerat samtal"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Redigera nummer före samtal"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Skicka e-post"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Välj loggar"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Välj kortnummerkontakter"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Avblock-era"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Ändra kontakt"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Lägg till %d s. paus"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Lägg till väntetid"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Missade"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Avsluta"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Egen"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobil"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Hem"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Arbete"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Fax (hem)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Fax (arbetet)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Assistentens nummer"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Personsökare"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Annat"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Biltelefon"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Hemma 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Huvudnummer, företag"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Alla kontakter"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Inte tilldelad"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Tjänstnummer"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Grupper"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Standard"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Ringsignal"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Webbplats"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-post"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Nummer"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Notering"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Postadress"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Detaljer"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Företag"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Namnordning"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Eget nummer"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Förnamn"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Efternamn"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Mellannamn"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Suffix"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Smeknamn"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Exportera kontakter"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Välj kontakter"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Postnr"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Land"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Region"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Ort"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Gata"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Sparat i %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Ofta kontaktad"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Kopierad"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exporterad"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Raderar kontakter..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Flyttar..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopierar..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Importerar SIM-kontakter..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Importerar kontakter från vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Exportera kontakter till %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Läser vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Importerad"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Saknas"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Alla länkade kontakter"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Länkade kontakter"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Befattning"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Avdelning"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Gruppnamn"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Lägg till konto"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Lägger till medlemmar i gruppen..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Visa"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d kontakter"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Byt namn"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Relation"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Inga berättelser"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Inga aktiviteter"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Lägger till..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Tilläggsinfo"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Postbox"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Stat"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Vänner"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Familj"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Kollegor"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Arbete"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Vibrationsmönster"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Ange som standard"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Händelse"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Dela kontaktinformation"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 kontakt"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Exportera till SIM-kort"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Info"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Tidigare"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Aktiviteter"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Gruppmeddelande"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "E-post till grupp"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Inget namn"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Ogiltig e-postadress"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Fyll i åtminstone ett fält och namn"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Det gick inte att nå databasen"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Redan tillagd"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Gruppnamnet används redan"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Ingen grupp"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Inget nummer"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Inga e-postadresser"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Inga kontakter"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM-minnet tomt"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Högsta tillåtna antalet inmatningar är överskridet"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Ogiltigt nummer"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM-minnet fullt"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Du kan importera kontakter från SIM-kort till telefonen i Inställningar > "
+"Importera kontakter eller synkronisera med webbkontokontakter med inställda "
+"konton"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Inga loggar. Efter att du ringer/tar emot ett samtal eller skickar/tar emot "
+"ett meddelande visas loggarna"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Det går inte att skicka visitkort"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Markera som huvudnummer"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Markera som standard-e-post"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Bild"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Ta ett foto"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Ta bort foto"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Lägg till på hemskärmen"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Spara kontakt i"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Spara i"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Importera SIM-kontakter"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Förnamn först"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Efternamn först"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Visa"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Dölj"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Skicka visitkort"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Skapa grupp"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Välj grupp"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Imp kontakter"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Länka kontakt"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Ta bort länk"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Alla länkade kontakter raderas"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Lägg till i Favoriter"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Redigera grupp"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Ny medlem"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Lägg till i grupp"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Lägg till i Favoriter"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Okänd"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Födelsedag"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Årsdag"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "söndag"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "måndag"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "tisdag"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "onsdag"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "torsdag"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "fredag"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "lördag"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Assistent"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Bror"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Barn"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Nation. partner"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Far"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Vän"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Chef"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Mor"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Förälder"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Partner"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Refererad av"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Släkting"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Syster"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Make/maka"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "Chatt"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Mer information"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afghanistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albanien"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algeriet"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Amerikanska Samoa"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua och Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenien"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australien"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Australian External Territories"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Österrike"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbajdzjan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamas"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahrain"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Vitryssland"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgien"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "BENIN"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius och Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnien och Hercegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brasilien"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Brittiska Jungfruöarna"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgarien"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kambodja"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Kap Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Caymanöarna"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Centralafrikanska republiken"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "TCHAD"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Kina"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "COMOROS"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cooköarna"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Costa Rica"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Elfenbenskusten"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Kroatien"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curaçao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Cypern"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Tjeckien"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Demokratiska folkrepubliken Korea"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Demokratiska republiken Kongo"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor-Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danmark"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominica"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominikanska republiken"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Egypten"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Ekvatorialguinea"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritrea"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estland"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiopien"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falklandsöarna"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Färöarna"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finland"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "Frankrike"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Franska Sydterritorierna"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Franska Guyana"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Franska Polynesien"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgien"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Tyskland"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Ghana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Grekland"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grönland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Guinea"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Guinea-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Ungern"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Island"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Indien"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesien"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irland"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italien"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaica"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japan"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Jordanien"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazakstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuwait"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kirgizistan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Demokratiska folkrepubliken Laos"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Lettland"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Libanon"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberia"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libyen"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Litauen"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Luxemburg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "MADAGASKAR"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaysia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldiverna"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshallöarna"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "MAURITANIEN"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAURITIUS"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexiko"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronesien"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldavien"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongoliet"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Marocko"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambique"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Burma"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "NAMIBIA"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Nederländerna"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Nya Kaledonien"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Nya Zeeland"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeria"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Nordmarianerna"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norge"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Nya Guinea"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filippinerna"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polen"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugal"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto Rico"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Rumänien"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Ryska federationen"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Saint Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts och Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint-Pierre och Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent och Grenadinerna"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "São Tomé och Príncipe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudiarabien"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbien"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seychellerna"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapore"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovakien"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenien"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Salomonöarna"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somalia"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Sydafrika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Spanien"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Suriname"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Sverige"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Schweiz"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Arabrepubliken Syrien"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Taiwan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tadzjikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzania"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thailand"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "f.d. jugoslaviska republiken Makedonien"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad och Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunisien"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turkiet"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks- och Caicosöarna"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraina"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Förenade arabemiraten"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Storbritannien och Nordirland"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "USA"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Amerikanska Jungfruöarna"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatikanstaten"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis och Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambia"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobil (hem)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobil (arbetet)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Sparat i"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Import från SD-kort"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grupp och gruppmedlemmar"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s har sparats i %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Denna kontakt kommer att raderas"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Foto"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Uppring."
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Säkerhetskopiering"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Endast grupp"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Ny grupp"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Välj grupp"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobil 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Tillagd"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Flyttad"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Vald"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Avbryt"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Minnet fullt"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Borttagen"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Sök"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Stäng"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Raderad"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Fel"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Samtal"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Inget SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Välj alla"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Misslyckades"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Slutfört"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Spara"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Lägg till kontakter"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Assistentens namn"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Radera grupp"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Gruppnamn"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Gruppringsignal"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Spela in video"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Ersätt"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Kortnummer"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Medd."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Ställ in ringsignal"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Alla kontakter"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Företag"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Redigera kontakter"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Hämta e-post"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Hämta nummer"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Ingen grupp"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Deltagare"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Ange bild"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Kortnummer används inte"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Radera kontakter"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Redigera grupper"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-post"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Lägg till i favoriter"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Redigera grupp"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Tom"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Spara kontakt"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Välj kontakt"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Lägg till grupp"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Minnet fullt"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Tar bort..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Det går inte att lägga till kontakten till gruppen"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Uppdatera"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Avbryt"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Kontakter"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopiera"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Skapa"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-post"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Meddelande"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Flytta"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Okänd"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Videosamtal"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Radera"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Klar"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Redigera"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Skicka kontaktinfo"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Sök Exchange-server"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Förnamn Efternamn"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Efternamn Förnamn"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Tryck på knappen till höger för fler fält"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/tr_TR.po b/po/tr_TR.po
new file mode 100644
index 0000000..446f88d
--- /dev/null
+++ b/po/tr_TR.po
@@ -0,0 +1,1772 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Tuşlar"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Favoriler"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Hızlı arama"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Sesli posta"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Günlükler"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Hızlı arama numarası yok. Şimdi atansın mı?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "İstek hatası"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Talep başarılı"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Acil arama"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Kayıt yok"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Favori yok"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Mesaj silindi"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Maksimum telefon numarası uzunluğu aşıldı"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Kayıtlar siliniyor..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Favoriler siliniyor..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Başlatılıyor. Sonra deneyin..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Ses kapalı"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Ses açık"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Önceki ekran"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Çağrıya dön"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Gelen arama"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Yapılan arama"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Cevapsız arama"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Gönderilen mesaj"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Alınan mesaj"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Reddedilmiş arama"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Engellenen arama"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Çağrıdan önce numarayı düzenle"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Search"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "E-posta gönder"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Kayıtları seç"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Hızlı arama kişilerini seç"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Engelleme yok"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Kişiyi değiştir"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "%d sn duraklama ekle"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Bekleme ekle"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Cevapsız"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Çıkış"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Özel"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Cep Telefonu"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Ev"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "İş"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Faks (Ev)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Faks (İş)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Asistanın numarası"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Çağrı cihazı"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Diğer"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Faks"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Araç telefonu"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Ev 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "İşi sabit telefonu"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radyo"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Tüm kişiler"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Atanmadı"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Servis numarası"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Gruplar"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Varsayılan"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Zil sesi"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Websitesi"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-posta"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Numara"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Not"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Posta adresi"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Ayrıntılar"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Şirket"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "İsim görünümü"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Numaram"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Ad"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Soyad"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "İkinci ad"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Son ek"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Takma ad"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Kişileri dışa aktarın"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Kişileri seç"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Posta kodu"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Ülke"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Bölge"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Şehir"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Cadde"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "%s içine kaydedildi"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Sık bağlantı kurulanlar"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Kopyalandı"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Dışarı verildi"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Kişiler siliniyor..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Taşıyor..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Kopyalanıyor..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "SIM kişileri alınıyor..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Kartvizitten kişiler alınıyor..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Kişiler %s üzerinden veriliyor..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vKart"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "vKart okunuyor..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "İçe aktarıldı"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Geçerli değil"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Tüm bağlantılı kişiler"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Bağlantılı kişiler"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "İş ünvanı"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Departman"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Grup ismi"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Hesap ekle"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Üyeler gruba ekleniyor..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Göster"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d kişi"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Yeniden adlandır"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "İlişki"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Geçmiş yok"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Etkinlik yok"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Ekleniyor..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Ek bilgi"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "PO kutusu"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Eyalet"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Arkadaşlar"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Aile"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Meslektaşlar"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "İş"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Titreşim modeli"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Varsayılanı ayarla"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Etkinlik"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Kişi bilgilerini paylaş"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 kişi"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "SIM karta aktar"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Bilgi"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Geçmiş"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Aktiviteler"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Grup mesajı"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Grup e-postası"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "İsim yok"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Geçersiz e-posta adresi"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Adla birlikte en az bir alanı daha tamamlayın"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Veritabanına erişilemiyor"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Zaten eklenmiş"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Grup ismi zaten var"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Grup yok"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Numara yok"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "E-posta adresi yok"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Kişi yok"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM hafızası boş"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Maksimum girdi sayısına ulaşıldı"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Geçersiz numara"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr ""
+"SIM\n"
+"belleği dolu"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Ayarlar > Kişileri al yolundan SIM kartınızdaki kişileri telefonunuza "
+"alabilirsiniz veya ayarlardaki hesapları kullanarak web hesabı kişileri ile "
+"senkr edebilirsiniz"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Kayıt yok. Bir arama yapar/alırsanız veya mesaj gönderir/alırsanız, kayıtlar "
+"gösterilir"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "İsim kartları gönderilemiyor"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Varsayılan numara olarak işaretle"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Varsayılan e-posta olarak işaretle"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Görüntü"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Fotoğraf çek"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Fotoyu kaldır"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Ana ekrana ekle"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Kişinin kaydedileceği yer"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Kayıt yeri"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "SIM kişilerini al"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Önce ilk adı"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Önce soyadı"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Göster"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Gizle"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Kartvizit gönder"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Grup oluştur"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Grup seç"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Kişileri al"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Bağlantılı kişiler"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Bağlantı kaldır"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Tüm bağlantılı kişiler silinecek"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Favorilere ekle"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Grup düzenle"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Üye ekle"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Gruba ekle"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Favorilere eklendi"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Bilinmeyen"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Doğum günü"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Yıl dönümü"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Pazar"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Pazartesi"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Salı"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Çarşamba"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Perşembe"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Cuma"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Cumartesi"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Asistan"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Erkek kardeş"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Çocuk"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Hayat arkadaşı"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Baba"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Arkadaş"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Yönetici"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Anne"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Ebeveyn"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Ortak"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Öneren"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Akraba"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Kız kardeş"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Eşi"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Daha fazla bilgi"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afganistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Arnavutluk"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algeria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Amerikan Samoası"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua ve Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Arjantin"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Ermenistan"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Avustralya"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Avustralya Dış Bölgesi"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Avusturya"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Azerbaycan"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bahamalar"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Bahreyn"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladeş"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Belarus"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belçika"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermuda"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivya"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Bonaire, Sint Eustatius ve Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosna Hersek"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botswana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brezilya"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "İngiliz Virgin Adaları"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Sultanlığı"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaristan"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Kamboçya"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Kanada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Cape Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Cayman Adaları"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Merkezi Afrika Cumhuriyeti"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Chad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Şili"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Çin"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Kolombiya"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Komor Adaları"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Kongo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Cook Adaları"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Kosta Rika"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Cote d’Ivoire"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Hırvatistan"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Küba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Curacao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Kıbrıs"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Çek Cumhuriyeti"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Kore Demokratik Halk Cumhuriyeti"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Kongo Demokratik Cumhuriyeti"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor-Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Danimarka"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diego Garcia"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Cibuti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominik"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominik Cumhuriyeti"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ekvador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Mısır"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "El Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Ekvator Ginesi"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritre"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonya"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Etiyopya"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falkland Adaları"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Faroe Adaları"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finlandiya"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Fransız Güney Toprakları"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Fransız Guyanası"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Fransız Polonezyası"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambiya"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Gürcistan"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Almanya"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Gana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Cebelitarık"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Yunanistan"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grönland"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Guadeloupe"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Gine"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Gine-Bisav"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Honduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Hong Kong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Macaristan"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "İzlanda"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Endonezya"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "Uluslararası Ücretsiz Telefon Hizmeti"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "Uluslararası Özel Tarifeli Hizmet (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "Uluslararası Maliyet Paylaşımlı Hizmet (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Irak"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "İrlanda"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "İsrail"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Jamaika"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japonya"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Ürdün"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazakistan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Korea"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Kuveyt"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Kırgızistan"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Lao Demokratik Halk Cumhuriyeti"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Letonya"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Lübnan"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesoto"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberya"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libya"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Litvanya"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Lüksemburg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Macao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagaskar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malawi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malezya"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldivler"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshall Adaları"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinique"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Moritanya"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "MAURITIUS"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Meksika"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikronezya"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldova"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monaco"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Moğolistan"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Karadağ"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Montserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Morocco"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambik"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanmar"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibya"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Hollanda"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "New Kaledonya"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Yeni Zelanda"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nikaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Nijerya"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nijerya"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Kuzey Mariana Adaları"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norveç"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Oman"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua Yeni Gine"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Kiremit"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Filipinler"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Polonya"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portekiz"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Porto Riko"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Katar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Romanya"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Rusya Federasyonu"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Rwanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Saint Helena"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Saint Kitts ve Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Saint Pierre ve Miquelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Saint Vincent ve Grenadines"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome ve Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Arabistan"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Sırbistan"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seyşel Adaları"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapur"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovakya"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenya"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Solomon Adaları"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somali"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Güney Afrika"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "İspanya"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "İsveç"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "İsviçre"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Suriye Arap Cumhuriyeti"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Tayvan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tacikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzanya"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Afet Yardım Telekomünikasyonu (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Tayland"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Eski Yugoslavya Makedonya Cumhuriyeti"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad ve Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunus"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Türkiye"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Türkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Türk ve Caicos Adaları"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukrayna"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Birleşik Arap Emirlikleri"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Büyük Britanya ve Kuzey İrlanda Birleşik Krallığı"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Amerika Birleşik Devletleri"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "ABD Virgin Adaları"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Uluslararası Kişisel Telekomünikasyon Hizmeti (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Özbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatican Şehir Devleti"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezüella"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vietnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Wallis ve Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yemen"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambiya"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Cep telefonu (Ev)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Cep telefonu (İş)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Kayıt yeri"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "SD kartından al"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Grup ve grup üyeleri"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s, %s içine kaydedildi"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Bu kişi silinecek:"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Fotoğraf"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Yedekle"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Değişim"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Yalnızca grup"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Yeni grup"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Grup seç"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobil 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Eklendi"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Taşındı"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Seçili"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "İptal"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Yeterli hafıza yok"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Kaldırıldı"
+
+#~ msgid "IDS_COM_BODY_SEARCH"
+#~ msgstr "Akıllı Arama"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Kapat"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Silindi"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Hata"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Arama"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "SIM yok"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Hepsini seç"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Başarısız"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Başarılı"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Kaydet"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Kişi ekle"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Asistanın adı"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Grubu sil"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Grup ismi"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Grup zil sesi"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Video kaydet"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Değiştir"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Hızlı arama"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Msj."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Zil sesi ayarla"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Tüm kişiler"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Şirket"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Kişileri düzenle"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "E-posta al"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Numarayı al"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Grup yok"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Katılımcı"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Resim ayarla"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Hızlı arama kullanımda değil"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Kişileri sil"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Grupları düzenle"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-posta"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Favorilere ekle"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Grup düzenle"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Boş"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Kişiyi kaydet"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Kişi seçin"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Grup ekle"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Bellek dolu"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Çıkartılıyor..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Kişi gruba eklenemiyor"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Güncelle"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "İptal"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Rehber"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Kopyala"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Oluştur"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-posta"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Mesaj"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Taşı"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Bilinmeyen"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Video arama"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Sil"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Kaydet"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Düzenle"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "Tamam"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Kişi ayrıntılarını gönder"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Exchange sunucusu ara"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Ad, Soyad"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Soyad, Ad"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Daha fazla alan için, sağdaki düğmeye dokunun"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/uk.po b/po/uk.po
new file mode 100644
index 0000000..9225560
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,1769 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Клавіат."
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Обране"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Швидкий набір"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Голосова пошта"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Журнали"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Немає номера швидкого набору. Призначити його зараз?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "Збій запиту"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "Запит виконано"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Екстрений виклик"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Журнали відсутні"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Немає об’єктів обраного"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Повідомлення видалено"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Перевищено максимальну довжину номера телефону"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Видалення журналів..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Видалення обраного..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Ініціалізація. Спробуйте пізніше..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Звук вимк."
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Звук увімк."
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Попередній екран"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Повернутися до виклику"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Вхідний виклик"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Вихідний виклик"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Пропущений виклик"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Надіслане повідомлення"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Отримане повідомлення"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Відхилений виклик"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Заблоков. виклик"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Відредагувати номер перед здійсненням виклику"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Не збережений"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Видалити %d журнал(ів)?"
+
+#, fuzzy
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Пошук"
+
+msgid "IDS_REMOVE"
+msgstr "Видалити"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Створити контакт"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Номер за замовчуванням"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Відіслати контакт як текст"
+
+msgid "IDS_CALLS"
+msgstr "Дзвінки"
+
+msgid "IDS_MESSAGES"
+msgstr "Повідомлення"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "Надіслати Email"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Вибір журналів"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Вибір контактів швидкого набору"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Розблок."
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Змінити контакт"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "Додати паузу тривалістю %d сек."
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Додано паузу"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "Пропущені"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Вихід"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Особливий"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Мобільний"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Домашній"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Робота"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Факс (домашній)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Факс (робочий)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Номер помічника"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Пейджер"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Інші"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Телефон"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Факс"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Автомобільний телефон"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Домашній 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Головний робочий"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Радіо"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Всі контакти"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Не призначено"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Сервісний номер"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Телефон"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Групи"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "За замовчуванням"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Звук дзвінка"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Веб-сайт"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "Email"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Цифри"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Нотатка"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Поштова адреса"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Деталі"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Організація"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Порядок відображення імен"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "Власний номер"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Ім'я"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Прізвище"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Друге ім’я"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Суфікс"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Псевдонім"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Експортувати контакти"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Вибір контактів"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Поштовий індекс"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Країна"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Провінція"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Місто"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Вулиця"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "Збережено в %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Обрані контакти"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Скопійовано"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Експортовано"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Видалення контактів..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Переміщення..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Копіювання..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "Триває імпорт контактів SIM-картки..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "Імпортування контактів із vCard..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "Експорт контактів на %s..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "Візитівка"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "Читання vCard..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Імпортовано"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "Н/Д"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Усі зв’язані контакти"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Зв’язані контакти"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Додати інше поле"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Посада"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Відділ"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Ім’я групи"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Дод. обл. запис"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Додавання учасників до групи..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Переглянути"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d контактів"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Перейменувати"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Відношення"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Немає історій"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Немає справ"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Додавання..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Додаткова інформація"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Поштова скринька"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Штат"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Друзі"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Сім'я"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Співробітники"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Робота"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Зразок вібрації"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Встановити за замовчуванням"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Подія"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Спільний доступ до контактних даних"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "Контактів: 1"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "Експортувати на SIM-картку"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Інформ."
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Історія"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Діяльність"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Повідомлення для групи"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Email для групи"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Організація"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Немає імені"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Хибна адреса Email"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Заповніть принаймні одне поле, а також введіть ім’я"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Не вдалося отримати доступ до бази даних"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Вже додано"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Назва групи вже використовується"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Немає групи"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Немає номера"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Немає адреси Email"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Немає контактів"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "Пам’ять SIM пуста"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Перевищено максимальну кількість записів"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Хибний номер"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "Пам'ять SIM заповнено"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Можна імпортувати контакти із SIM-картки на телефон, скориставшись меню "
+"Установки > Імпортувати контакти, або синхронізувати їх із контактами веб-"
+"облікового запису за допомогою облікових записів в установках"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Немає журналів. Вікно журналу відбражається щоразу після здійснення/"
+"отримання виклику або надіслання/отримання повідомлення"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Неможливо надіслати візитівку"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Позначити як стандартний номер"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Позначити як стандартну адресу Email"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Зображення"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Зробити фото"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Видалити фотографію"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Додати на головний екран"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Зберегти контакт до"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Зберегти в"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "Імпорт контактів SIM"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Спочатку ім’я"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Спочатку прізвище"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Показати"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Приховати"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Надіслати візитівку"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Створити групу"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Вибрати групу"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Імпор. контакти"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Зв’язати контакт"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Скасувати зв’язування"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Усі зв’язані контакти буде видалено"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Додати до обраного"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Редагувати групу"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "Дод.учас."
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Додати до групи"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Додано до обраного"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Невідомо"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "День народження"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Річниця"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Неділя"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Понеділок"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Вівторок"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Середа"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Четвер"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "П'ятниця"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Субота"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Помічник"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Брат"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Дитина"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Локальн. партнер"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Батько"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Друг"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Керівник"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Мати"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Батьки"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Партнер"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Має відношення до"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Родич"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Сестра"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Подружжя"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Контакт заблоковано"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Контакт розблоковано"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Розблокувати контакт"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Подробиці"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Афганістан"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Албанія"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Алжир"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Американське Самоа"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Андорра"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Ангола"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Ангілья"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Антигуа і Барбуда"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Аргентина"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Вірменія"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Аруба"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Австралія"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Зовнішні території Австралії"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Австрія"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Азербайджан"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Багамські острови"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Бахрейн"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Бангладеш"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Барбадос"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Білорусь"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Бельгія"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Беліз"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Бенін"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Бермудські острови"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Бутан"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Болівія"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Бонер, Сінт-Естатіус і Саба"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Боснія і Герцеговина"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Ботсвана"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Бразилія"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Британські Віргінські острови"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Бруней Даруссалам"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Болгарія"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Буркіна-Фасо"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Бурунді"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Камбоджа"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Камерун"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Канада"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Кабо-Верде"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Кайманові острови"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Центральноафриканська Республіка"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Чад"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Чилі"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "Китай"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Колумбія"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Комори"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Конго"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Острови Кука"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Коста-Ріка"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Кот-Д’Івуар"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Хорватія"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Куба"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Кюрасао"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Кіпр"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Чехія"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Корейська Народно-Демократична Республіка"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Демократична Республіка Конго"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Східний Тимор"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Данія"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Дієго-Гарсія"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Джибуті"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Домініка"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Домініканська Республіка"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Еквадор"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Єгипет"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "Сальвадор"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Екваторіальна Гвінея"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Еритрея"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Естонія"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Ефіопія"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Фолклендські острови"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Фарерські острови"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Фіджі"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Фінляндія"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Французькі Південні Території"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Французька Гвіана"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "Французька Полінезія"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Габон"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Гамбія"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Джорджія"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Німеччина"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Гана"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Гібралтар"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Греція"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Гренландія"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Гренада"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Гваделупа"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Гуам"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Гватемала"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Гвінея"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Гвінея-Бісау"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Гайана"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Гаїті"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Гондурас"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Гонконг"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Угорщина"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Ісландія"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "Індія"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Індонезія"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Іран"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Ірак"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Ірландія"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Ізраїль"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Ямайка"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Японія"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Йорданія"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Казахстан"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Кенія"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Кірибаті"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Корея"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Кувейт"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Киргизстан"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Лаоська Народно-Демократична Республіка"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Латвія"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Ліван"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Лесото"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Ліберія"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Лівія"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Ліхтенштейн"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Литва"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Люксембург"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Макао"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Мадагаскар"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Малаві"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Малайзія"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Мальдіви"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Малі"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Мальта"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Маршаллові Острови"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Мартиніка"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "МАВРИТАНІЯ"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Маврікій"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Мехіко"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Мікронезія"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Молдова"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Монако"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Монголія"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Чорногорія"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Монтсеррат"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Марокко"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Мозамбік"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "М’янма"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Намібія"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Науру"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Непал"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Нідерланди"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "Нова Каледонія"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "Нова Зеландія"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Нікарагуа"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Нігер"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Нігерія"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Ніує"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Північні Маріанські острови"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Норвегія"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Оман"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Пакістан"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Палау"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Панама"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Папуа-Нова Гвінея"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Парагвай"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Коричневий"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Філіппіни"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Польща"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Португалія"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Пуерто-Ріко"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Катар"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Румунія"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Російська Федерація"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Руанда"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Острів Святої Єлени"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Сент-Кіттс і Невіс"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Сент-Люсія"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Сен-П’єр і Мікелон"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Сент-Вінсент і Гренадини"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Самоа"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "Сан-Марино"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Сан-Томе і Прінсіпі"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Саудівська Аравія"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Сенегал"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Сербія"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Сейшельські острови"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Сьєрра-Леоне"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Сінгапур"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Сінт-Маартен"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Словаччина"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Словенія"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Соломонові острови"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Сомалі"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "Південна Африка"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Іспанія"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Шрі-Ланка"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Судан"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Сурінам"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Свазіленд"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Швеція"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Швейцарія"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Сирійська Арабська Республіка"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Тайвань"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Таджикистан"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Танзанія"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Таїланд"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Колишня Югославська Республіка Македонія"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Того"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Токелау"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Тонга"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Тринідад і Тобаго"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Туніс"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Туреччина"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Туркменістан"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Острови Теркс і Кайкос"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Тувалу"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Уганда"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Україна"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Об'єднані Арабські Емірати"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Сполучене королівство Великої британії та Північної Ірландії"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Сполучені Штати Америки"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Американські Віргінські острови"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Уругвай"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Узбекистан"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Вануату"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Ватикан"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Венесуела"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "В’єтнам"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Волліс і Футуна"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Ємен"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Замбія"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Зімбабве"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Мобільний (домашній)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Мобільний (робочий)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Збережено в"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "Імпортувати з карти пам’яті"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Група й учасники групи"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s збережено в %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Цей контакт буде видалено"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Фото"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Наб. ном."
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Резервне копіювання"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Лише група"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Нова група"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Вибрати групу"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Мобільний 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Додано"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Переміщено"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Вибрано"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Скасувати"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Недостатньо пам'яті"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Видалено"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Закрити"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "Видалено"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Помилка"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Виклик"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "Немає SIM"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Вибрати всі"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Збій"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Успішно"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Зберегти"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Додати контакти"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Ім’я помічника"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Видалити групу"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Ім’я групи"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Звук дзв.групи"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Записати відео"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Замінити"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Швидкий набір"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Повід."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Встановити звук дзвінка"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Всі контакти"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Організація"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Редагування контактів"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "Отримати повідомлення Email"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Отримати номер"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Немає групи"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Учасник"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Встановити зображення"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Швидкий набір не використовується"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Видалити контакти"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Редагувати групи"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Додати до обраного"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Редагувати групу"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Пусто"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Зберегти контакт"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Вибрати контакт"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Додати групу"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Пам'ять заповнено"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Видалення..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Неможливо додати контакт у групу"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Оновити"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Скасув."
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Контакти"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Копіювати"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Створити"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "Email"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Повідомлення"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Перемістити"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Телефон"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Невідомо"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Відеовиклик"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "Видалити"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Готово"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Редагув."
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "ОК"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Надіслати контактні дані"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Пошук на сервері Exchange"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Ім’я Прізвище"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Прізвище Ім’я"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr ""
+#~ "Для відображення інших полів натисніть розташовану у правій частині кнопку"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/update-po.sh b/po/update-po.sh
new file mode 100755
index 0000000..b960696
--- /dev/null
+++ b/po/update-po.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+PACKAGE=phone
+SRCROOT=..
+POTFILES=POTFILES.in
+
+ALL_LINGUAS="ar az bg ca cs da de_DE el_GR en en_PH en_US es_ES es_US et eu fi fr_CA fr_FR ga gl hi hr hu hy is it_IT ja_JP ka kk ko_KR lt lv mk nb nl_NL pl pt_BR pt_PT ro ru_RU sk sl sr sv tr_TR uk uz zh_CN zh_HK zh_SG zh_TW"
+
+XGETTEXT=/usr/bin/xgettext
+MSGMERGE=/usr/bin/msgmerge
+
+echo -n "Make ${PACKAGE}.pot "
+if [ ! -e $POTFILES ] ; then
+ echo "$POTFILES not found"
+ exit 1
+fi
+
+$XGETTEXT --default-domain=${PACKAGE} --directory=${SRCROOT} \
+ --keyword=_ --keyword=N_ --files-from=$POTFILES --no-location
+if [ $? -ne 0 ]; then
+ echo "xgettext error"
+ exit 1
+fi
+
+if [ ! -f ${PACKAGE}.po ]; then
+ echo "No such file: ${PACKAGE}.po"
+ exit 1
+fi
+
+rm -f ${PACKAGE}.pot && mv ${PACKAGE}.po ${PACKAGE}.pot
+echo "done"
+
+for LANG in $ALL_LINGUAS; do
+ echo "$LANG : "
+
+ if [ ! -e $LANG.po ] ; then
+ sed 's/CHARSET/UTF-8/g' ${PACKAGE}.pot > ${LANG}.po
+ echo "${LANG}.po created"
+ else
+ if $MSGMERGE ${LANG}.po ${PACKAGE}.pot -o ${LANG}.new.po ; then
+ if cmp ${LANG}.po ${LANG}.new.po > /dev/null 2>&1; then
+ rm -f ${LANG}.new.po
+ else
+ if mv -f ${LANG}.new.po ${LANG}.po; then
+ echo ""
+ else
+ echo "msgmerge for $LANG.po failed: cannot move $LANG.new.po to $LANG.po" 1>&2
+ rm -f ${LANG}.new.po
+ exit 1
+ fi
+ fi
+ else
+ echo "msgmerge for $LANG failed!"
+ rm -f ${LANG}.new.po
+ fi
+ fi
+ echo ""
+done
+
diff --git a/po/uz.po b/po/uz.po
new file mode 100644
index 0000000..eccfeea
--- /dev/null
+++ b/po/uz.po
@@ -0,0 +1,1768 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "Klaviatura"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "Tanlanganlar"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "Tez terish"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "Ovozli pochta"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "Jurnallar"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "Tez terish raqami mavjud emas. Hozir tayinlansinmi?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "So‘rov bajarilmadi"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "So‘rov muvaffaqiyatli amalga oshirildi"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "Favqulodda qo‘ng‘iroqlar"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "Jurnallar yo‘q"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "Tanlanganlar yo‘q"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "Xabar o'chirildi"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "Telefon raqami uzunligi maksimal miqdordan oshib ketdi"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "Jurnallar o'chirib tashlanmoqda..."
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "Tanlanganlar o'chirib tashlanmoqda..."
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "Initsializatsiyalanmoqda. Keyinroq urinib ko‘ring..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "Ovoz o‘ch."
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "Ovoz yoq."
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "Avvalgi ekran"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "Qo‘ng‘iroqqa qaytish"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "Kiruvchi qo‘ng‘iroq"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "Chiquvchi qo‘ng‘iroq"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "Qabul qilinmagan qo‘ng‘iroq"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "Yuborilgan xabar"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "Olingan xabar"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "Rad et. qo‘ng‘iroq"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "Bloklangan qo‘ng‘"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "Qo‘ng‘iroqdan avval raqamni tahrirlash"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+#, fuzzy
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "Qidirish"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "E-pochta yub."
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "Jurnallarni tanlash"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "Tezkor terish kontaktlarini tanlang"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "Blokdan chiqar"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "Kontaktni o‘zgartirish"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "%d soniyali to‘xtatish"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "Kutish qo‘shish"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "O‘tkazib yuborilgan"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "Chiqish"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "Sozlanadigan"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "Mobil"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "Asosiy"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "Ish"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "Faks (uy)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "Faks (ish)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "Yordamchi raqami"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "Peyjer"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "Boshqa"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "Faks"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "Car telephone"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "Uy 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "Kompaniyaning asosiy telefoni"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "Radio"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "Barcha kontaktlar"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "Tayinlanmagan"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "Xizmat raqami"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "Telefon"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "Guruhlar"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "Birlamchi"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "Rington"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "Veb-sayt"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "E-pochta"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "Raqam"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "Eslatma"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "Pochta manzili"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "Tafsilotlar"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "Kompaniya"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "Displey nomlari tartibi"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "O‘z raqami"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "Ismi"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "Familiya"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "Otasining ismi"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "Suffiks"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "Laqab"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "Kontaktlarni eksport qilish"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "Kontaktlar tanlang"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "Pochta indeksi"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "Mamlakat"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "Viloyat"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "Shahar"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "Ko‘cha"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "%sda saqlandi"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "Ko‘p ishlatiladigan kontaktlar"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "Nusxa olindi"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "Exported"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "Kontaktlar o‘chirilmoqda..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "Ko‘chirilmoqda..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "Nusxa ko‘chirilmoqda..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "SIM-karta kontaktlarini import qilish..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "vCarddan kontaktlar import qilinmoqda..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "%sga kontaktlar eksport qilinmoqda..."
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "vCardni o‘qish..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "Import qilindi"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "YO‘Q"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "Bari bog‘l. kontaktlar"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "Bog‘langan kontaktlar"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "Lavozim nomi"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "Bo'lim"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "Guruh nomi"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "Hisob qaydnoma qo‘shish"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "Guruhga a’zolar qo‘shish..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "Ko‘rib chiqish"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d kontakt"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "Nom o‘zgartirish"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "Aloqadorlik"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "Jurnallar yo‘q"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "Amallar mavjud emas"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "Qo‘shilmoqda..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "Qo‘shimcha ma’lumot"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "Abonent qutisi"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "Holat"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "Do‘stlar"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "Oila"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "Hamkasblar"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "Ish"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "Vibratsiya namunasi"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "Birlamchi o'rnatilgan holatga qaytish"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "Hodisa"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "Kontakt ma’lumotini ulashish"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 kontakt"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "SIM-kartaga eksport qilish"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "Ma’lumot"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "Jurnal"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "Faoliyatlar"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "Guruh xabari"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "Guruh e-pochtasi"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "Nom yo‘q"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "Noto‘g‘ri e-pochta manzili"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "Kamida bir maydonni hamda nomni to‘ldiring"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "Ma’lumotlar bazasiga kirib bo‘lmadi"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "Avval qo‘shilgan"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "Guruh nomi avvaldan ishlatilmoqda"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "Guruh mavjud emas"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "Raqam yo‘q"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "Elektron pochta manzillari yo‘q"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "Kontaktlar yo‘q"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM-karta xotirasi bo‘sh"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "Kiritmalar soni maksimal miqdordan oshib ketdi"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "Noto‘g‘ri raqam"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM-karta xotirasi to‘la"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"Kontaktlarni telefoningizga SIM-kartadan Parametrlar > Kontaktlarni import "
+"qilish orqali import qilishingiz yoki parametrlardagi hisob qaydnomalaridan "
+"foydalanib, veb-hisob qaydnomalari bilan sinxronlashtirishingiz mumkin"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr ""
+"Jurnallar yo‘q. Qo‘ng‘iroq qilganingizda/qabul qilganingizda yoki xabar "
+"yuborganingizda/olganingizda, jurnallar ko‘rsatiladi"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "Tashrif kartalarini yuborib bo‘lmaydi"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "Birlam. o'rn. raqam sifatida belgilash"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "Asosiy e-pochta sifatida belgilash"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "Tasvir"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "Suratga olish"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "Rasmni olib tashlash"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "Asosiy ekranga qo‘shish"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "Kontaktni saqla"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "Quyidagiga saqlash"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "SIM-karta kontaktlarini import qilish"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "Avval ism"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "Avval familiya"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "Ko‘rsatish"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "Yashirish"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "Tashrif kartasi yuborish"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "Guruh yaratish"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "Guruh tanlang"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "Kontakt importi"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "Kontaktni bog‘lash"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "Uzish"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "Barcha bog‘langan kontaktlar o'chirib tashlanadi"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "Tanlanganlarga qo‘shish"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "Guruhni tahrirlash"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "A’zo qo‘sh"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "Guruhga qo‘shish"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "Tanlanganlarga qo‘shildi"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "Noma’lum"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "Tug‘ilgan kun"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "Yubiley"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "Yakshanba"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "Dushanba"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "Seshanba"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "Chorshanba"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "Payshaba"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "Juma"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "Shanba"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "Yordamchi"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "Aka"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "Bola"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "Mahalliy hamkor"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "Ota"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "Do‘st"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "Menejer"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "Ona"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "Ota-ona"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "Hamkor"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "Quyidagi tomonidan taqdim etilgan"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "Qarindosh"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "Singil"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "Turmush o'rtoq"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL-manzil"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "Boshqa ma’lumotlar"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "Afghanistan"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "Albaniya"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "Algeria"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "Amerika Samoasi"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "Andorra"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "Angola"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "Anguilla"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "Antigua and Barbuda"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "Argentina"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "Armenia"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "Aruba"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "Australia"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Avstraliya Tashqi hududlari"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "Austria"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "Ozarbayjon"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "Bagama orollari"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "Baxrayn"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "Bangladesh"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "Barbados"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "Belarus"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "Belgiya"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "Belize"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "Benin"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "Bermud orollari"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "Bhutan"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "Bolivia"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "Boneyr, Sint-Estatius va Saba"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "Bosnia and Herzegovina"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "Botsvana"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "Brazil"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "Britaniya Virgin orollari"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "Brunei Darussalam"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "Bulgaria"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "Burkina-Faso"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "Burundi"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "Cambodia"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "Kamerun"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "Canada"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "Kabo-Verde"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "Cayman Islands"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "Markaziy Afrika Respublikasi"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "Chad"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "Chile"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "China"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "Colombia"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "Komoros"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "Congo"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "Kuk orollari"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "Kosta-Rika"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "Kot d’Ivuar"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "Xorvatiya"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "Kuba"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "Kyurasao"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "Kipr"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "Czech Republic"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "Koreya Xalq Demokratik Respublikasi"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "Kongo Demokratik Respublikasi"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "Timor-Leste"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "Daniya"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "Diyego-Garsiya"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "Djibouti"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "Dominika"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "Dominican Republic"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "Ecuador"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "Misr"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "Salvador"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "Ekvatorial Gvineya"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "Eritreya"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "Estonia"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "Efiopiya"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "Falkland Islands"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "Faroe Islands"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "Fiji"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "Finland"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "France"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "Fransiya janubiy hududlari"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "Fransiya Gvianasi"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "French Polynesia"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "Gabon"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "Gambia"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "Germany"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "Gana"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "Gibraltar"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "Gretsiya"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "Grilandiya"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "Grenada"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "Gvadelupa"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "Guam"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "Guatemala"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "Gvineya"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "Gvineya-Bissau"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "Guyana"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "Haiti"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "Gonduras"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "Gonkong"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "Vengriya"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "Islandiya"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "India"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "Indonesia"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "International Freephone Service"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "International Premium Rate Service (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "International Shared Cost Service (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "Iran"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "Iroq"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "Irlandiya"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "Israel"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "Italy"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "Yamayka"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "Japan"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "Iordaniya"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "Kazakhstan"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "Kenya"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "Kiribati"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "Koreya"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "Quvayt"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "Qirg‘iziston"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "Laos Xalq Demokratik Respublikasi"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "Latvia"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "Livan"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "Lesotho"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "Liberiya"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "Libya"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "Liechtenstein"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "Lithuania"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "Lyuksemburg"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "Makao"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "Madagascar"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "Malavi"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "Malaysia"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "Maldiv orollari"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "Mali"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "Malta"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "Marshall orollari"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "Martinika"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "Mauritania"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "Mauritius"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "Mexico"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "Mikroneziya"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "Moldova"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "Monako"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "Mongolia"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "Montenegro"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "Monserrat"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "Morocco"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "Mozambik"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "Myanma"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "Namibiya"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "Nauru"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "Nepal"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "Niderlandiya"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "New Caledonia"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "New Zealand"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "Nicaragua"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "Niger"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "Nigeriya"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "Niue"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "Shimoliy Mariana Orollari"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "Norvegiya"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "Ummon"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "Pakistan"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "Palau"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "Panama"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "Papua-Yangi Gvineya"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "Paraguay"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "Peru"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "Philippines"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "Poland"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "Portugaliya"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "Puerto-Riko"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "Qatar"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "Romania"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "Rossiya Federatsiyasi"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "Ruanda"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "Avliyo Yelena oroli"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "Sent-Kits va Nevis"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "Saint Lucia"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "Sen P’er va Mikelon"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "Sen Vinsent va Grenadinlar"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "Samoa"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "San-Marino"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "Sao Tome and Principe"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "Saudi Arabia"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "Senegal"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "Serbiya"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "Seyshel orollari"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "Sierra Leone"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "Singapore"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "Sint-Maarten"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "Slovakiya"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "Slovenia"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "Solomon Islands"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "Somali"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "South Africa"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "Ispaniya"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "Sri Lanka"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "Sudan"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "Surinam"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "Swaziland"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "Sweden"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "Switzerland"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "Suriya Arab Respublikasi"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "Tayvan"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "Tajikistan"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "Tanzaniya"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "Telecommunications for Disaster Relief (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "Thailand"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "Makedoniya Sobiq Yugoslaviya Respublikasi"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "Togo"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "Tokelau"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "Tonga"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "Trinidad and Tobago"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "Tunis"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "Turkiya"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "Turkmenistan"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "Turks va Kaykos Orollari"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "Tuvalu"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "Uganda"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "Ukraine"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "Birlashgan Arab Amirliklari"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "Buyuk Britaniya va Shimoliy Irlandiya Birlashgan Qirolligi"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "Amerika Qo‘shma Shtatlari"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "Qo‘shma Shtatlar Virgin orollari"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "Universal Personal Telecommunication Service (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "Uruguay"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "Uzbekistan"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "Vanuatu"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "Vatikan Davlat-Shahar"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "Venezuela"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "Vetnam"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "Uollis va Futuna"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "Yaman"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "Zambiya"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "Zimbabwe"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "Mobil telefon (uy)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "Mobil telefon (ish)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "Saqlandi"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "SD-kartadan import qilish"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "Guruhlar va guruh a’zolari"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%sni %sda saqladi"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "Ushbu kontakt yo‘q qilinadi"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "Fotosurat"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "Teruvchi"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "Arxiv"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "Faqat guruh"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "Yangi guruh"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "Guruh tanlang"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "Mobil 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "Qo‘shilgan"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "Ko‘chirilgan"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "Tanlangan"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "Bekor q."
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "Xotira yetarli emas"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "Olib tashlandi"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "Yopish"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "O'chirildi"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "Xato"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "Qo‘ng‘iroq qilish"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "SIM-karta yo‘q"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "Barchasini tanlash"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "Xato"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "Muvaffaqiyat"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "Saqlash"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "Kontaktlar qo‘shish"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "Yordamchining nomi"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "Guruhni o'chirish"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "Guruh nomi"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "Guruh ringtoni"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "Video yozib olish"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "Almashtirish"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "Tez terish"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "Xbr."
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "Rington o‘rnatish"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "Barcha kontaktlar"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "Kompaniya"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "Kontaktlarni tahrirlash"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "E-pochta xabari olish"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "Raqam olish"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "Guruh mavjud emas"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "Ishtirokchi"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "Tasvir tanlash"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "Tez terish ishlatilmayapti"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "Kontaktlarni o'chirish"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "Guruhlarni tahrirlash"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "E-pochta"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "Tanlanganlarga qo‘shish"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "Guruhni tahrirlash"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "Bo‘sh"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "Kontaktni saqlash"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "Kontakt tanlash"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "Guruh qo‘shish"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "Xotira to‘la"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "Olib tashlanmoqda..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "Kontaktni guruhga qo‘shib bo‘lmaydi"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "Yangilash"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "Bekor q."
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "Bluetooth"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "Kontaktlar"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "Nusxa olish"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "Yaratish"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "E-pochta"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "Xabar"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "Ko‘chirish"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "Telefon"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "Noma’lum"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "Video qo‘ng‘iroq"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "O'chirish"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "Bajarildi"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "Tahrirl."
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "OK"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "Kontakt tafsilotlarini yuborish"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "Exchange serverini qidirish"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "Ism Familiya"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "Familiya Ism"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "Qo‘shimcha maydonlar uchun o‘ng tomondagi tugmani cherting"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644
index 0000000..8f05579
--- /dev/null
+++ b/po/zh_CN.po
@@ -0,0 +1,1765 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "键盘"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "收藏"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "快速拨号"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "语音信箱"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "记录"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "没有快速拨号号码。现在设置吗?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "请求失败"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "请求成功"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "紧急呼叫"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "没有记录"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "没有收藏"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "信息已删除"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "已超过最大手机号码长度"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "正在删除记录"
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "正在删除收藏…"
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "正在初始化。稍后重试…"
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "声音关"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "声音开"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "前一个屏幕"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "返回通话"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "来电"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "已拨"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "未接来电"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "已发信息"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "已收信息"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "拒绝通话"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "已阻止的通话"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "呼叫前编辑号码"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+#, fuzzy
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "搜索"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "发送邮件"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "选择记录"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "选择快速拨号联系人"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "解除阻止"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "更改联系人"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "添加%d秒钟暂停"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "添加等待"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "未接"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "退出"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "自定义"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "手机"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "家庭"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "工作"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "传真(家庭)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "传真(工作)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "助手号码"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "寻呼机"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "其他"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "电话"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "传真"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "车载手机"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "本地2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "公司主机"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "收音机"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "全部联系人"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "未分配"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "服务号码"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "手机"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "分组"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "默认"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "铃声"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "网站"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "电子邮件"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "号码"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "注释"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "通讯地址"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "详情"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "公司"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "姓名显示顺序"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "本机号码"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "名字"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "姓氏"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "中间名"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "后缀"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "昵称"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "导出联系人"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "选择联系人"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "邮编"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "国家"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "省"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "城市"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "街道"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "已保存到%s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "常用联系人"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "已复制"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "已导出"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "正在删除联系人…"
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "移动中..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "正在复制..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "正在导入SIM卡联系人..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "正在从电子名片中导入联系人…"
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "从%s导出联系人"
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "名片"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "正在读取电子名片…"
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "已导入"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/A"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "全部链接的联系人"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "链接的联系人"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "职位"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "部门"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "群组名称"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "添加账户"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "正在添加成员到分组…"
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "查看"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d个联系人"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "重命名"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "关系"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "没有历史记录"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "没有活动"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "添加中..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "其它信息"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "邮政信箱"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "地区"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "好友"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "家人"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "同事"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "工作"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "振动方式"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "设置默认"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "事件"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "共享联系人信息"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1个联系人"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi直连"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "导出到SIM卡"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "信息"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "历史记录"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "活动"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "群发信息"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "群发电子邮件"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "无名称"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "电子邮件地址无效"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "完成至少一个字段以及名字"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "访问数据库失败"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "已添加"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "群组名称已使用"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "无群组"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "无号码"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "没有电子邮件地址"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "没有联系人"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM卡存储空间无内容"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "已超过最大条目数量"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "数值无效"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM卡内存已满"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"您可以在设置>导入联系人中将SIM卡联系人导入到手机,或在设置中使用帐户与网络帐"
+"户联系人同步"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr "无记录。您呼叫/被叫或发送/接收信息后,将显示记录"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "无法发送名片"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "标记为默认号码"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "标记为默认电子邮件"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "图片"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "拍照"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "移除照片"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "添加到主屏"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "储存联系人到"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "保存至"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "导入 SIM 联系人"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "首先是名字"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "姓"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "显示"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "隐藏"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "发送名片"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "新建组"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "选择群组"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "导入联系人"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "链接联系人"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "取消链接"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "全部链接的联系人将被删除"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "添加到收藏"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "编辑群组"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "添加成员"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "添加到群组"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "添加到收藏夹"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "未知"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "生日"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "纪念日"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "雅虎"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "星期日"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "星期一"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "星期二"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "星期三"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "星期四"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "星期五"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "星期六"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "助手"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "兄弟"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "子女"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "同居伴侣"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "父亲"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "朋友"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "经理"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "母亲"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "父母"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "合作伙伴"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "介绍人"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "亲戚"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "姐妹"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "配偶"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "手机(家庭)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "手机(工作)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "即时信息"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "网址"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "更多信息"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "已保存至"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "从SD卡导入"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "群组和群组成员"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s 已储存到 %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "此联系人将被删除"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "照片"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "拨号程序"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "备份"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "更换"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "仅群组"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "新分组"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "选择群组"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "手机 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "已添加"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "已移动"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "已选择"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "取消"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "没有足够内存"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "已移除"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "关闭"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "已删除"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "出错"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "通话"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "无 SIM 卡"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "全选"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "失败"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "成功"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "保存"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "添加联系人"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "助手姓名"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "删除群组"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "群组名称"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "组铃声"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "拍摄录像"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "替换"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "快速拨号"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "信息"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "设置铃声"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "全部联系人"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "公司"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "编辑联系人"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "获取电子邮件"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "获取号码"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "无群组"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "参与人"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "设置图像"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "快速拨号未使用"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "删除联系人"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "编辑分组"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "电子邮件"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "添加到收藏"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "编辑群组"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "空"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "存储联系人"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "选择联系人"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "添加组群"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "内存已满"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "正在移除..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "无法将联系人添加到群"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "更新"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "取消"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "蓝牙"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "联系人"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "复制"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "新建"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "电子邮件"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "信息"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "移动"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "手机"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "未知"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "视频通话"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "删除"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "完成"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "编辑"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "确定"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "发送联系人详情"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "搜索Exchange服务器"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "香港"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "冰岛"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "阿根廷"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "澳大利亚海外领地"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "阿塞拜疆"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "博内尔岛、圣尤斯特歇斯与沙巴"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "朝鲜人民民主共和国"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "国际免费电话服务"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "国际费率服务(IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "国际共享费率服务(ISCS)"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "吉尔吉斯斯坦"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "圣赫勒拿"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "斯洛伐克"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "台湾"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "救灾通信(TDR)"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "前南斯拉夫马其顿共和国"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "大不列颠及北爱尔兰联合王国"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "美国"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "美属维京群岛"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "通用个人通信服务(UPT)"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "科特迪瓦"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "库拉索"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "法属南部领土"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "加蓬"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "澳门"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "索马里"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "东帝汶"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "多哥"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "阿富汗"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "阿尔巴尼亚"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "阿尔及利亚"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "美属萨摩亚"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "安道尔"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "安哥拉"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "安圭拉"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "安提瓜和巴布达"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "亚美尼亚"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "阿鲁巴"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "澳大利亚"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "奥地利"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "巴哈马"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "巴林"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "孟加拉国"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "巴巴多斯"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "白俄罗斯"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "比利时"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "伯利兹"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "贝宁"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "百慕大"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "不丹"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "玻利维亚"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "波斯尼亚和黑塞哥维那"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "博茨瓦那"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "巴西"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "英属维尔京群岛"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "文莱达鲁萨兰国"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "保加利亚"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "布基纳法索"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "布隆迪"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "柬埔寨"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "喀麦隆"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "加拿大"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "佛得角"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "开曼群岛"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "中非共和国"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "乍得"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "智利"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "中国"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "哥伦比亚"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "科摩罗"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "刚果"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "库克群岛"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "哥斯达黎加"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "克罗地亚"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "古巴"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "塞浦路斯"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "捷克共和国"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "刚果民主共和国"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "丹麦"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "迪戈加西亚岛"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "吉布提"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "多米尼加"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "多米尼加共和国"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "厄瓜多尔"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "埃及"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "萨尔瓦多"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "赤道几内亚"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "厄立特里亚"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "爱沙尼亚"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "埃塞俄比亚"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "福克兰群岛"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "法罗群岛"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "斐济"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "芬兰"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "法国"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "法属圭亚那"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "法属波利尼西亚"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "冈比亚"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "格鲁吉亚"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "德国"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "加纳"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "直布罗陀"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "希腊"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "格陵兰岛"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "格林纳达"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "瓜德罗普岛"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "关岛"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "危地马拉"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "几内亚"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "几内亚比绍"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "圭亚那"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "海地"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "洪都拉斯"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "匈牙利"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "印度"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "印度尼西亚"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "伊朗"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "伊拉克"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "爱尔兰"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "以色列"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "意大利"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "牙买加"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "日本"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "约旦"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "哈萨克斯坦"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "肯尼亚"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "基里巴斯"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "韩国"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "科威特"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "老挝人民民主共和国"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "拉脱维亚"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "黎巴嫩"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "莱索托"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "利比里亚"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "利比亚"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "列支敦士登"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "立陶宛"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "卢森堡"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "马达加斯加"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "马拉维"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "马来西亚"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "马尔代夫"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "马里"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "马耳他"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "马绍尔群岛"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "马提尼克"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "毛里塔尼亚"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "毛里求斯"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "墨西哥"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "密克罗尼西亚"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "摩尔多瓦"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "摩纳哥"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "蒙古"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "黑山共和国"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "蒙特塞拉特岛"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "摩洛哥"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "莫桑比克"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "缅甸"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "纳米比亚"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "瑙鲁"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "尼泊尔"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "荷兰"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "新喀里多尼亚岛"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "新西兰"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "尼加拉瓜"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "尼日尔"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "尼日利亚"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "纽埃"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "北马里亚纳群岛"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "挪威"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "阿曼"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "巴基斯坦"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "帕劳"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "巴拿马"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "巴布新几内亚"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "巴拉圭"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "秘鲁"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "菲律宾"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "波兰"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "葡萄牙"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "波多黎各"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "卡塔尔"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "罗马尼亚"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "俄罗斯联邦"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "卢旺达"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "圣基茨和尼维斯"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "圣卢西亚"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "圣皮埃尔和密克隆"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "圣文森特和格林纳丁斯"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "萨摩亚群岛"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "圣马力诺"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "圣多美和普林西比"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "沙特阿拉伯"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "塞内加尔"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "塞尔维亚"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "塞舌尔"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "塞拉利昂"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "新加坡"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "圣马丁"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "斯洛文尼亚"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "所罗门群岛"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "南非"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "西班牙"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "斯里兰卡"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "苏丹"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "苏里南"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "斯威士兰"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "瑞典"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "瑞士"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "阿拉伯叙利亚共和国"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "塔吉克斯坦"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "坦桑尼亚"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "泰国"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "托克劳"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "汤加"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "特立尼达和多巴哥"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "突尼斯"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "土耳其"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "土库曼斯坦"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "特克斯群岛和凯科斯群岛"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "图瓦卢"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "乌干达"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "乌克兰"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "阿拉伯联合酋长国"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "乌拉圭"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "乌兹别克斯坦"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "瓦努阿图"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "梵蒂冈城国"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "委内瑞拉"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "越南"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "瓦利斯群岛和富图纳群岛"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "也门"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "赞比亚"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "津巴布韦"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "名 姓"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "姓 名"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "若需更多字段,轻敲右侧按钮"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/zh_HK.po b/po/zh_HK.po
new file mode 100644
index 0000000..c73c47e
--- /dev/null
+++ b/po/zh_HK.po
@@ -0,0 +1,1765 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "鍵盤"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "我的最愛"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "快速撥號"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "留言信箱"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "記錄"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "無快速撥號號碼。現在指定嗎?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "請求失敗"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "請求成功"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "緊急通話"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "沒有通話記錄"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "無我的最愛"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "電子郵件已刪除"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "已超過電話號碼長度上限"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "正在刪除記錄…"
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "正在刪除我的最愛…"
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "正在初始化。請稍後再試..."
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "聲音關"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "聲音開"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "前一螢幕"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "返回通話"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "來電"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "撥出電話"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "未接電話"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "已發送的訊息"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "已接收訊息"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "已拒絕的來電"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "已封鎖的來電"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "通話前先編輯號碼"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+#, fuzzy
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "搜尋"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "發送電子郵件"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "選擇記錄"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "選擇快速撥號聯絡人"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "解除封鎖"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "更改聯絡人"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "加入%d秒的暫停"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "加入等候"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "未接"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "退出"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "自訂"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "手機"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "住家"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "工作"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "傳真(住家)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "傳真(工作)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "助理號碼"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "傳呼機"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "其他"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "電話"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "傳真"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "車用電話"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "住家 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "公司主機"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "收音機"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "全部聯絡人"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "無指定"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "服務號碼"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "電話"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "群組"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "預設"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "鈴聲"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "網站"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "電子郵件"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "號碼"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "記事本"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "郵寄地址"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "詳細資料"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "公司"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "顯示名稱次序"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "本機號碼"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "名字"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "姓氏"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "中間名"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "字尾"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "暱稱"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "匯出聯絡人"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "選擇聯絡人"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "郵政編號"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "國家"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "省"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "城市"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "街道"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "儲存在 %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "經常聯絡"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "已複製"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "已匯出"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "正在刪除聯絡人..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "正在移動..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "正在複製..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "正在匯入SIM卡聯絡人…"
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "正在從 vCard 匯入聯絡人..."
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "正在匯出聯絡人至 %s…"
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "vCard"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "vCard 讀取中..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "已匯入"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "不適用"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "所有已連結聯絡人"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "已連結聯絡人"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "職稱"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "部門"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "群組名稱"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "加入帳戶"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "正在將成員加到群組..."
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "檢視"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d 位聯絡人"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "重新命名"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "關係"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "無歷史記錄"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "無活動"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "正在加入..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "附加資料"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "郵政信箱"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "地區"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "朋友"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "家人"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "同事"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "工作"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "震動模式"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "設定預設"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "事件"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "分享聯絡人資訊"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 個聯絡人"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "匯出至 SIM 卡"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "資料"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "記錄"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "活動"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "群組訊息"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "群組電子郵件"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "無名稱"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "無效電子郵件地址"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "至少完成一個欄位及其名稱"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "存取數據庫失敗"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "已加入"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "群組名稱已存在"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "無群組"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "無號碼"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "無電郵地址"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "無聯絡人"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM 卡記憶體空白"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "已超過可輸入項目的數目上限"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "號碼無效"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM 卡記憶體已滿"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"可於設定 > 匯入聯絡人功能中從 SIM 卡匯入聯絡人至手機,或於設定中使用帳戶與網"
+"絡帳戶同步聯絡人"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr "無記錄。撥打/接聽電話或發送/接收訊息後,將會顯示記錄"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "無法發送名片"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "標記為預設號碼"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "標記為預設電子郵件"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "圖像"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "拍照"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "移除相片"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "加入至主螢幕"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "儲存聯絡人到"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "儲存至"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "匯入 SIM 卡聯絡人"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "先顯示名字"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "姓氏在前"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "顯示"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "隱藏"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "發送名片"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "建立群組"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "選擇群組"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "匯入聯絡人"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "連結聯絡人"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "取消連結"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "所有已連結的聯絡人將會被刪除"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "加到我的最愛"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "編輯群組"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "加入成員"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "加入到群組"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "已加到我的最愛"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "未知"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "生日"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "週年"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "星期日"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "星期一"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "星期二"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "星期三"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "星期四"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "星期五"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "星期六"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "助理"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "兄弟"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "子女"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "同居伴侶"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "父親"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "朋友"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "管理員"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "母親"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "父母"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "夥伴"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "參照者"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "親戚"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "姊妹"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "配偶"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "手機(住家)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "手機(工作)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "即時訊息"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "網址"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "更多資料"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "已儲存到"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "從SD卡匯入"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "群組和群組成員"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s 已儲存到 %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "此聯絡人將被刪除"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "相片"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "撥號器"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "備份"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "Exchange"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "僅群組"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "新增群組"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "選擇群組"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "手機 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "已加入"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "已移動"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "已選擇"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "取消"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "記憶體不足"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "已移除"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "關閉"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "已刪除"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "錯誤"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "通話"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "無 SIM 卡"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "選擇全部"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "失敗"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "成功"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "儲存"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "加入聯絡人"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "助理姓名"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "刪除群組"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "群組名稱"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "群組鈴聲"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "錄影"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "取代"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "快速撥號"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "訊息"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "設定鈴聲"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "全部聯絡人"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "公司"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "編輯聯絡人"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "取得電子郵件"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "取得號碼"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "無群組"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "參與者"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "設定圖像"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "快速撥號未在使用中"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "刪除聯絡人"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "編輯群組"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "電子郵件"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "加到我的最愛"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "編輯群組"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "空白"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "儲存聯絡人"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "選擇聯絡人"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "加入群組"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "記憶體已滿"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "正在移除..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "無法將聯絡人加到群組中"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "更新"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "取消"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "藍牙"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "聯絡人"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "複製"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "建立"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "電子郵件"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "訊息"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "移動"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "電話"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "未知"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "視像通話"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "刪除"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "完成"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "編輯"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "確定"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "發送聯絡人詳細資料"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "搜尋 Exchange 伺服器"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "香港"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "冰島"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "阿根廷"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "澳大利亞海外領土"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "阿塞拜疆"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "博內爾島、聖尤斯特歇斯與沙巴"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "朝鮮民主主義人民共和國"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "國際免費電話服務"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "國際費率服務 (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "國際共用費率服務 (ISCS)"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "吉爾吉斯斯坦"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "聖赫勒拿"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "斯洛伐克"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "台灣"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "災害救援電訊 (TDR)"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "前南斯拉夫馬其頓共和國"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "大不列顛暨北愛爾蘭聯合王國"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "美國"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "美屬維爾京群島"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "通用個人電訊服務 (UPT)"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "科特迪瓦"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "庫拉索"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "法屬南部領土"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "加蓬"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "澳門"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "索馬里"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "東帝汶"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "多哥"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "阿富汗"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "阿爾巴尼亞"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "阿爾及利亞"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "美屬薩摩亞"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "安道爾"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "安哥拉"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "安圭拉"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "安地卡及巴布達"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "亞美尼亞"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "阿魯巴"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "澳大利亞"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "奧地利"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "巴哈馬"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "巴林"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "孟加拉"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "巴巴多斯"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "白俄羅斯"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "比利時"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "伯利茲"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "貝寧"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "百慕達"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "不丹"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "玻利維亞"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "波斯尼亞和黑塞哥維那"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "博茨瓦納"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "巴西"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "英屬維爾京群島"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "汶萊"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "保加利亞"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "布基納法索"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "布隆迪"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "柬埔寨"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "喀麥隆"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "加拿大"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "佛得角"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "開曼群島"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "中非共和國"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "乍得"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "智利"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "中國"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "哥倫比亞"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "科摩羅"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "剛果"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "庫克群島"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "哥斯達黎加"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "克羅地亞"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "古巴"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "塞浦路斯"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "捷克共和國"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "剛果民主共和國"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "丹麥"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "地牙哥加西亞"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "吉布提"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "多米尼加"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "多米尼加共和國"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "厄瓜多爾"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "埃及"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "薩爾瓦多"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "赤道幾內亞"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "厄立特里亞"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "愛沙尼亞"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "埃塞俄比亞"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "福克蘭群島"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "法羅群島"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "斐濟"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "芬蘭"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "法國"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "法屬圭亞那"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "法屬玻利尼西亞"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "岡比亞"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "格魯吉亞"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "德國"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "加納"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "直布羅陀"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "希臘"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "格陵蘭"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "格林納達"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "哥德普洛"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "關島"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "厄地馬拉"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "幾內亞"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "畿內亞比紹"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "圭亞那"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "海地"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "洪都拉斯"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "匈牙利"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "印度"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "印度尼西亞"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "伊朗"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "伊拉克"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "愛爾蘭"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "以色列"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "意大利"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "牙買加"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "日本"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "約旦"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "哈薩克斯坦"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "肯尼亞"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "基里巴斯"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "韓國"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "科威特"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "老撾人民民主共和國"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "拉脫維亞"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "黎巴嫩"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "萊索托"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "利比里亞"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "利比亞"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "列支敦士登"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "立陶宛"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "盧森堡"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "馬達加斯加"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "馬拉維"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "馬來西亞"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "馬爾代夫"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "馬里"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "馬耳他"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "馬紹爾群島"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "馬提尼克"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "毛里塔尼亞"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "毛里裘斯"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "墨西哥"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "密克羅尼西亞"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "摩爾多瓦"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "摩納哥"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "蒙古"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "黑山共和國"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "蒙特塞拉特島"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "摩洛哥"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "莫桑比克"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "緬甸"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "納米比亞"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "瑙魯"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "尼泊爾"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "荷蘭"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "新喀里多尼亞群島"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "新西蘭"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "尼加拉瓜"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "尼日爾"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "尼日利亞"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "紐埃"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "北馬里亞納群島"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "挪威"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "阿曼"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "巴基斯坦"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "帕勞"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "巴拿馬"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "巴布亞新畿內亞"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "巴拉圭"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "秘魯"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "菲律賓"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "波蘭"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "葡萄牙"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "波多黎各"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "卡塔爾"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "羅馬尼亞"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "俄羅斯聯邦"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "盧旺達"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "聖基茨和尼維斯"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "聖盧西亞"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "聖皮埃爾和密克隆島"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "聖文森及格瑞那丁"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "薩摩亞"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "聖馬力諾"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "聖多美及普林西比"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "沙地阿拉伯"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "塞內加爾"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "塞爾維亞"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "塞席爾"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "塞拉利昂"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "新加坡"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "聖馬丁島"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "斯洛文尼亞"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "所羅門群島"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "南非"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "西班牙"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "斯里蘭卡"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "蘇丹"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "蘇利南"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "斯威士蘭"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "瑞典"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "瑞士"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "阿拉伯敘利亞共和國"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "塔吉克斯坦"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "坦桑尼亞"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "泰國"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "托克勞"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "湯加"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "特里尼達和多巴哥"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "突尼西亞"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "土耳其"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "土庫曼斯坦"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "特克斯和凱科斯群島"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "圖瓦魯"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "烏干達"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "烏克蘭"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "阿拉伯聯合酋長國"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "烏拉圭"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "烏茲別克斯坦"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "瓦努阿圖"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "梵蒂岡"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "委內瑞拉"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "越南"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "瓦利斯和富圖納群島"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "也門"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "贊比亞"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "津巴布韋"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "先名後姓"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "先姓後名"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "請輕觸右方按鍵查看更多欄位"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/zh_SG.po b/po/zh_SG.po
new file mode 100644
index 0000000..dacffd6
--- /dev/null
+++ b/po/zh_SG.po
@@ -0,0 +1,1765 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "键盘"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "收藏"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "快速拨号"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "语音邮件"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "记录"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "没有快速拨号号码。现在设置吗?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "请求失败"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "请求成功"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "紧急号码"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "无记录"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "没有收藏夹"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "讯息已删除"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "已超过最大手机号码长度"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "正在删除日志…"
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "正在删除收藏…"
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "正在初始化。稍后重试…"
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "声音关"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "声音开"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "前一个屏幕"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "返回通话"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "来电"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "呼出"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "未接来电"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "已发信息"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "已收信息"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "拒绝通话"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "已阻止的通话"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "呼叫前编辑号码"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+#, fuzzy
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "搜寻"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "发送电邮"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "选择日志"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "选择快速拨号联系人"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "解除阻止"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "更改联系人"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "添加%d秒钟暂停"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "添加等待"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "未接"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "退出"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "自定义"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "手机"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "首页"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "工作"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "传真(家庭)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "传真(工作)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "助手号码"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "寻呼机"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "其他"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "电话"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "传真"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "车载手机"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "本地2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "主要公司号码"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "收音机"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "全部联系人"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "未分配"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "服务号码"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "手机"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "群组"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "默认"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "铃声"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "网站"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "电邮"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "号码"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "附注"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "通讯地址"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "详细内容"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "公司"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "显示名称顺序"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "我的号码"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "名字"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "姓氏"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "中间名"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "后缀"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "绰号"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "导出联系人"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "选择联系人"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "邮编"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "国家"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "省"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "城市"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "街道"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "已保存到%s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "频繁联系的"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "已复制"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "已导出"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "正在删除联系人…"
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "移动中…"
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "复制中…"
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "正在导入SIM卡联系人..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "正在从电子名片中导入联系人…"
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "从%s导出联系人"
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "名片"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "正在读取电子名片…"
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "已导入"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "N/A"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "全部链接的联系人"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "链接的联系人"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "职位"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "部门"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "群组名称"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "添加帐户"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "正在添加成员到分组…"
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "查看"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d个联系人"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "重命名"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "关系"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "没有历史记录"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "没有活动"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "添加中…"
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "更多信息"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "邮政信箱"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "州"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "朋友"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "家人"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "合作者"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "工作"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "振动模式"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "设置默认"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "活动"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "共享联系人信息"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1个联系人"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "直接Wi-Fi"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "导出到SIM卡"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "信息"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "历史记录"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "活动"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "群发信息"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "群发电子邮件"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "无名称"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "无效电子邮件地址"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "完成至少一个字段以及名字"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "访问数据库失败"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "已添加"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "群组名称已使用"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "无群组"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "无号码"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "没有电子邮件地址"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "无联系人"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM卡内存空白"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "已超过最大条目数量"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "数值无效"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM卡内存已满"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"您可以在设置>导入联系人中将SIM卡联系人导入到手机,或在设置中使用帐户与网络帐"
+"户联系人同步"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr "无记录。您呼叫/被叫或发送/接收信息后,将显示记录"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "无法发送名片"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "标记为默认号码"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "标记为默认电子邮件"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "图像"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "拍照"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "移除照片"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "添加到主屏"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "储存联系人到"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "保存至"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "导入 SIM 联系人"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "首先是名字"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "姓"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "显示"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "隐藏"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "发送名片"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "创建群组"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "选择组群"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "导入联系人"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "链接联系人"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "取消链接"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "全部链接的联系人已被删除"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "添加到收藏夹"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "编辑群组"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "添加成员"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "添加到群组"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "添加到收藏夹"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "未知"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "生日"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "纪念日"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "星期日"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "星期一"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "星期二"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "星期三"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "星期四"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "星期五"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "星期六"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "助手"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "兄弟"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "儿童"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "同居伴侣"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "父亲"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "朋友"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "管理人员"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "母亲"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "父母"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "合作伙伴"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "引用者"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "亲戚"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "姐妹"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "配偶"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "网址"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "即时通讯"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "更多信息"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "阿富汗语"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "阿尔巴尼亚"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "阿尔及利亚"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "美属萨摩亚"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "安道尔"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "安哥拉"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "安圭拉"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "安提瓜和巴布达"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "阿根廷"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "亚美尼亚"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "阿鲁巴"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "澳大利亚"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "澳大利亚海外领地"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "奥地利"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "阿塞拜疆"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "巴哈马"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "巴林"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "孟加拉国"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "巴巴多斯"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "白俄罗斯"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "比利时"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "伯利兹"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "贝宁"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "百慕大"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "不丹"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "玻利维亚"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "博内尔岛、圣尤斯特歇斯与沙巴"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "波斯尼亚和黑塞哥维那"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "博茨瓦纳"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "巴西"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "英属维尔京群岛"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "文莱达鲁萨兰国"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "保加利亚"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "布基纳法索"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "布隆迪"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "柬埔寨"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "喀麦隆"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "加拿大"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "佛德角"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "开曼群岛"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "中非共和国"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "乍得"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "智利"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "中国"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "哥伦比亚"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "科摩罗"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "刚果"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "库克群岛"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "哥斯达黎加"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "科特迪瓦"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "克罗地亚"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "古巴"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "库拉索"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "塞浦路斯"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "捷克共和国"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "朝鲜民主主义人民共和国"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "刚果民主共和国"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "东帝汶"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "丹麦"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "迪哥加西亚岛"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "吉布提"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "多米尼加"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "多米尼加共和国"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "厄瓜多尔"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "埃及"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "萨尔瓦多"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "赤道几内亚"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "厄立特里亚"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "爱沙尼亚"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "埃塞俄比亚"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "福克兰群岛"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "法罗"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "斐济"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "芬兰"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "法国"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "法属南部领土"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "法属圭亚那"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "法属波利尼西亚"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "加蓬"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "冈比亚"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "格鲁吉亚"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "德国"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "加纳"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "直布罗陀"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "希腊"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "格陵兰"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "格林纳达"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "瓜德罗普岛"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "关岛"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "危地马拉"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "几内亚"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "几内亚比绍"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "圭亚那"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "海地"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "洪都拉斯"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "香港"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "匈牙利"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "冰岛"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "印度"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "印度尼西亚"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "国际免费电话服务"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "国际费率服务(IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "国际共享费率服务(ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "伊朗"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "伊拉克"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "爱尔兰"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "以色列"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "意大利"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "牙买加"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "日本"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "约旦"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "哈萨克斯坦"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "肯尼亚"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "基里巴斯"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "韩国"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "科威特"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "吉尔吉斯坦"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "老挝人民民主共和国"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "拉脱维亚"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "黎巴嫩"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "莱索托"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "利比利亚"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "利比亚"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "列支敦士登"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "立陶宛"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "卢森堡"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "澳门"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "马达加斯加"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "马拉维"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "马来西亚"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "马尔代夫"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "马里"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "马耳他"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "马绍尔群岛"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "马提尼克"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "毛里塔尼亚"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "毛里求斯"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "墨西哥"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "密克罗尼西亚"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "摩尔达维亚"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "摩纳哥"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "蒙古"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "黑山共和国"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "蒙特塞拉特岛"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "摩洛哥"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "莫桑比克"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "缅甸"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "纳米比亚"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "瑙鲁"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "尼泊尔"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "荷兰"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "新喀里多尼亚"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "新西兰"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "尼加拉瓜"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "尼日尔"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "尼日利亚"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "纽埃"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "北马里亚纳群岛"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "挪威"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "阿曼"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "巴基斯坦"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "帕劳"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "巴拿马"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "巴布亚新几内亚"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "巴拉圭"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "秘鲁"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "菲律宾"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "波兰"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "葡萄牙"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "波多黎各"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "卡塔尔"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "罗马尼亚语"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "俄罗斯联邦"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "卢旺达"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "圣赫勒拿"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "圣基茨和尼维斯"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "圣卢西亚"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "圣皮埃尔和密克隆"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "圣文森特和格林纳丁斯"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "萨摩亚"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "圣马力诺"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "圣多美和普林西比"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "沙特阿拉伯"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "塞内加尔"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "塞尔维亚"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "塞舌尔"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "塞拉利昂"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "新加坡"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "圣马丁"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "斯洛伐克"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "斯洛文尼亚"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "所罗门群岛"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "索马里"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "南非"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "西班牙"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "斯里兰卡"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "苏丹"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "苏里南"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "斯威士兰"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "瑞典"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "瑞士"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "叙利亚"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "台湾"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "塔吉克斯坦"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "坦桑尼亚"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "救灾通信(TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "泰国"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "前南斯拉夫马其顿共和国"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "多哥"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "托克劳"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "汤加"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "特立尼达和多巴哥"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "突尼斯"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "土耳其"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "土库曼斯坦"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "特克斯群岛和凯科斯群岛"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "图瓦卢"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "乌干达"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "乌克兰"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "阿拉伯联合酋长国"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "大不列颠及北爱尔兰联合王国"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "美国"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "美属维京群岛"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "通用个人通信服务(UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "乌拉圭"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "乌兹别克斯坦"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "瓦努阿图"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "梵蒂冈城国"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "委内瑞拉"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "越南"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "瓦利斯群岛和富图纳群岛"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "也门"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "赞比亚"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "津巴布韦"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "手机(家庭)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "手机(工作)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "谷歌"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "已保存至"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "从SD卡导入"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "群组和群组成员"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s 已储存到 %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "此联系人将被删除"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "照片"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "拨号程序"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "备份"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "更换"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "仅群组"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "新群组"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "选择组群"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "手机2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "已添加"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "已移动"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "已选择"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "取消"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "内存不足"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "已移除"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "关闭"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "已删除"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "错误"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "通话"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "无 SIM 卡"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "全选"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "失败"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "成功"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "储存"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "添加联系人"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "助手姓名"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "删除群"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "群组名称"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "群铃声"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "拍摄录像"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "取代"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "快速拨号"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "信息"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "设置铃声"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "全部联系人"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "公司"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "编辑联系人"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "获取电子邮件"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "获取号码"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "无群组"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "参与人"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "设置图像"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "快速拨号未在使用中"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "删除联系人"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "编辑分组"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "电邮"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "添加到收藏"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "编辑群组"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "空白"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "储存联系人"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "选择联系人"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "添加组群"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "内存已满"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "移除中…"
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "无法将联系人添加到群"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "更新"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "取消"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "蓝牙"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "联系人"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "复制"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "创建"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "电邮"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "讯息"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "移动"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "手机"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "未知"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "视像通话"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "删除"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "已完成"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "编辑"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "确认"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "发送联系人详情"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "搜索Exchange服务器"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "名字姓氏"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "姓氏名字"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "若需更多字段,轻敲右侧按钮"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644
index 0000000..1586e5a
--- /dev/null
+++ b/po/zh_TW.po
@@ -0,0 +1,1765 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-05-26 16:04+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "IDS_KPD_TAB4_KEYPAD"
+msgstr "撥號鍵盤"
+
+msgid "IDS_PB_ITAB4_FAVOURITES"
+msgstr "我的最愛"
+
+msgid "IDS_PB_HEADER_SPEEDDIAL"
+msgstr "怏速撥號"
+
+msgid "IDS_CST_BODY_VOICE_MAIL"
+msgstr "語音信箱"
+
+msgid "IDS_CLOG_ITAB4_LOGS"
+msgstr "記錄"
+
+msgid "IDS_COM_POP_NO_SPEED_DIAL_NUMBER_ASSIGN_ONE_NOW_Q"
+msgstr "無快速撥號號碼。現在指定嗎?"
+
+msgid "IDS_PB_POP_REQUEST_FAILED"
+msgstr "要求失敗"
+
+msgid "IDS_PB_POP_REQUEST_SUCCESS"
+msgstr "要求成功"
+
+msgid "IDS_CALL_POP_EMERGENCY_CALL"
+msgstr "緊急電話"
+
+msgid "IDS_CLOG_BODY_NO_LOGS"
+msgstr "無記錄"
+
+msgid "IDS_PB_BODY_NO_FAVOURITES"
+msgstr "沒有我的最愛"
+
+msgid "IDS_CLOG_POP_MESSAGE_DELETED"
+msgstr "訊息已刪除"
+
+msgid "IDS_PB_POP_MAXIMUM_PHONE_NUMBER_LENGTH_EXCEEDED"
+msgstr "已達電話號碼長度上限"
+
+msgid "IDS_CLOG_POP_DELETING_LOGS_ING"
+msgstr "正在刪除記錄…"
+
+msgid "IDS_PB_POP_DELETING_FAVOURITES_ING"
+msgstr "正在刪除我的最愛…"
+
+msgid "IDS_PB_POP_INITIALISING_TRY_LATER_ING"
+msgstr "初始化中。請稍後再試…"
+
+msgid "IDS_COM_POP_SOUND_OFF"
+msgstr "關閉音效"
+
+msgid "IDS_COM_POP_SOUND_ON"
+msgstr "開啟音效"
+
+msgid "IDS_KPD_BODY_PREVIOUS_SCREEN_ABB"
+msgstr "前一畫面"
+
+msgid "IDS_COM_BODY_BACK_TO_CALL"
+msgstr "返回通話"
+
+msgid "IDS_ST_BODY_INCOMMING_CALL"
+msgstr "來電"
+
+msgid "IDS_ST_BODY_OUTGOING_CALL"
+msgstr "撥出電話"
+
+msgid "IDS_CLOG_HEADER_MISSED_CALL"
+msgstr "未接電話"
+
+msgid "IDS_CLOG_OPT_SENT_MESSAGE"
+msgstr "傳送訊息"
+
+msgid "IDS_CLOG_OPT_RECEIVED_MESSAGE"
+msgstr "收到的訊息"
+
+msgid "IDS_LOGS_BODY_REJECTED_CALL_ABB"
+msgstr "拒接來電"
+
+msgid "IDS_LOGS_BODY_BLOCKED_CALL_ABB"
+msgstr "已封鎖的來電"
+
+msgid "IDS_CLOG_OPT_EDIT_NUMBER_BEFORE_CALL"
+msgstr "在通話之前先編輯號碼"
+
+msgid "IDS_KPD_POP_ADD_TO_CONTACTS"
+msgstr "Add to contacts"
+
+msgid "IDS_KPD_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CLOG_POP_CALL_DURATION"
+msgstr "Call Duration"
+
+msgid "IDS_CLOG_POP_BLOCK_CONTACT"
+msgstr "Block contact"
+
+msgid "IDS_CLOG_POP_SEND_NUMBER"
+msgstr "Send number"
+
+msgid "IDS_CLOG_POP_COPY_TO_DIALING_SCREEN"
+msgstr "Copy to dialing screen"
+
+msgid "IDS_PB_BODY_UNSAVED"
+msgstr "Unsaved"
+
+msgid "IDS_CST_POP_CONTACTS_TO_DISPLAY"
+msgstr "Contacts to display"
+
+msgid "IDS_CST_POP_SETTINGS"
+msgstr "Settings"
+
+msgid "IDS_CST_POP_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_POP_CONTACTS"
+msgstr "contact?"
+
+msgid "IDS_CST_BUTTON_DELETE"
+msgstr "Delete"
+
+msgid "IDS_CST_BUTTON_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_CLOG_DURATION_RESET"
+msgstr "Reset"
+
+msgid "IDS_CLOG_DURATION_LAST"
+msgstr "Last Call"
+
+msgid "IDS_CLOG_DURATION_DIALED"
+msgstr "Dialed Calls"
+
+msgid "IDS_CLOG_DURATION_RECEIVED"
+msgstr "Received Calls"
+
+msgid "IDS_CLOG_DURATION_ALL"
+msgstr "All Calls"
+
+msgid "IDS_CLOG_POP_DELETE_N_LOGS"
+msgstr "Delete %d log(s)?"
+
+#, fuzzy
+msgid "IDS_CLOG_ENTRY_SEARCH"
+msgstr "搜尋"
+
+msgid "IDS_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_CREATE_CONTACT"
+msgstr "Create contact"
+
+msgid "IDS_SPEED_CHANGE_ORDER"
+msgstr "Change Order"
+
+msgid "IDS_CLOG_BUTTON_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_CLOG_BUTTON_EMAIL"
+msgstr "Email"
+
+msgid "IDS_DEFAULT_NUMBER"
+msgstr "Default number"
+
+msgid "IDS_SEND_CONTACT_AS_TEXT"
+msgstr "Send contact as text"
+
+msgid "IDS_CALLS"
+msgstr "Calls"
+
+msgid "IDS_MESSAGES"
+msgstr "Messages"
+
+msgid "IDS_PB_BODY_SEPARATE_CONTACTS"
+msgstr "Separate contacts"
+
+msgid "IDS_PB_BODY_LINK_CONTACTS_WITH"
+msgstr "Link contacts with"
+
+msgid "IDS_PB_BODY_SEPARATE_NAME_FROM"
+msgstr "Separate name %s from %s?"
+
+msgid "IDS_PB_HEADER_SEND_EMAIL"
+msgstr "傳送電子郵件"
+
+msgid "IDS_CLOG_HEADER_SELECT_LOGS"
+msgstr "選擇記錄"
+
+msgid "IDS_CST_HEADER_SELECT_SPEED_DIAL_CONTACTS"
+msgstr "選擇快速播號聯絡人"
+
+msgid "IDS_CLOG_BUTTON2_UNBLOCK"
+msgstr "解除封鎖"
+
+msgid "IDS_CST_OPT_CHANGE_CONTACT_ABB"
+msgstr "變更聯絡人"
+
+msgid "IDS_KPD_OPT_ADD_PD_SEC_PAUSE"
+msgstr "新增%d秒暫停"
+
+msgid "IDS_KPD_OPT_ADD_WAIT"
+msgstr "新增插撥"
+
+msgid "IDS_CLOG_HEADER_MISSED"
+msgstr "未接"
+
+msgid "IDS_COM_OPT_EXIT"
+msgstr "結束"
+
+msgid "IDS_PB_BODY_CUSTOM_T_PHONEBOOK"
+msgstr "自訂"
+
+msgid "IDS_PB_BODY_MOBILE"
+msgstr "行動裝置"
+
+msgid "IDS_PB_BODY_HOME"
+msgstr "住家"
+
+msgid "IDS_PB_BODY_WORK"
+msgstr "公司"
+
+msgid "IDS_PB_BODY_FAX_HHOME"
+msgstr "傳真(住家)"
+
+msgid "IDS_PB_BODY_FAX_HWORK"
+msgstr "傳真(工作)"
+
+msgid "IDS_PB_BODY_ASSISTANT_S_NUMBER"
+msgstr "助理號碼"
+
+msgid "IDS_PB_BODY_PAGER"
+msgstr "呼叫器"
+
+msgid "IDS_PB_BODY_OTHER"
+msgstr "其他"
+
+msgid "IDS_PB_BODY_TELEPHONE"
+msgstr "電話"
+
+msgid "IDS_PB_BODY_FAX"
+msgstr "傳真"
+
+msgid "IDS_PB_BODY_CAR_TELEPHONE"
+msgstr "車用電話"
+
+msgid "IDS_PB_BODY_HOME_2"
+msgstr "住家 2"
+
+msgid "IDS_PB_BODY_COMPANY_MAIN"
+msgstr "公司代表號"
+
+msgid "IDS_PB_BODY_RADIO"
+msgstr "廣播"
+
+msgid "IDS_PB_BODY_ALL_CONTACTS"
+msgstr "全部聯絡人"
+
+msgid "IDS_PB_BODY_NOT_ASSIGNED"
+msgstr "未指定"
+
+msgid "IDS_PB_BODY_SERVICE_NUMBER"
+msgstr "服務號碼"
+
+msgid "IDS_PB_BODY_PHONE"
+msgstr "電話"
+
+msgid "IDS_PB_BODY_GROUPS"
+msgstr "群組"
+
+msgid "IDS_PB_BODY_DEFAULT"
+msgstr "預設"
+
+msgid "IDS_PB_BODY_RINGTONE"
+msgstr "鈴聲"
+
+msgid "IDS_PB_BODY_WEBSITE"
+msgstr "網站"
+
+msgid "IDS_PB_BODY_INSTANT_MESSENGER"
+msgstr "Instant messenger"
+
+msgid "IDS_PB_BODY_EMAIL"
+msgstr "電子郵件"
+
+msgid "IDS_PB_BODY_NUMBER"
+msgstr "號碼"
+
+msgid "IDS_PB_BODY_NOTE"
+msgstr "備註"
+
+msgid "IDS_PB_BODY_POSTAL_ADDRESS"
+msgstr "郵寄地址"
+
+msgid "IDS_PB_HEADER_DETAILS"
+msgstr "詳細資料"
+
+msgid "IDS_PB_BODY_COMPANY"
+msgstr "公司"
+
+msgid "IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"
+msgstr "顯示名稱順序"
+
+msgid "IDS_PB_BODY_OWN_NUMBER"
+msgstr "本機號碼"
+
+msgid "IDS_PB_BODY_FIRST_NAME"
+msgstr "名字"
+
+msgid "IDS_PB_BODY_LAST_NAME"
+msgstr "姓氏"
+
+msgid "IDS_PB_BODY_MIDDLE_NAME"
+msgstr "中間名"
+
+msgid "IDS_PB_BODY_SUFFIX"
+msgstr "稱謂"
+
+msgid "IDS_PB_BODY_NICKNAME"
+msgstr "暱稱"
+
+msgid "IDS_PB_BODY_EXPORT_CONTACTS"
+msgstr "匯出聯絡人"
+
+msgid "IDS_PB_HEADER_SELECT_CONTACTS"
+msgstr "選擇聯絡人"
+
+msgid "IDS_PB_BODY_POSTAL_CODE"
+msgstr "郵政編碼"
+
+msgid "IDS_PB_BODY_COUNTRY"
+msgstr "國家"
+
+msgid "IDS_PB_BODY_PROVINCE"
+msgstr "省"
+
+msgid "IDS_PB_BODY_CITY"
+msgstr "城市"
+
+msgid "IDS_PB_BODY_STREET"
+msgstr "街道"
+
+msgid "IDS_EMAIL_BODY_SAVED_IN_PS"
+msgstr "儲存在 %s"
+
+msgid "IDS_PB_BODY_FREQUENTLY_CONTACTED_ABB"
+msgstr "經常聯絡"
+
+msgid "IDS_PB_POP_COPIED"
+msgstr "已複製"
+
+msgid "IDS_COM_BODY_EXPORTED"
+msgstr "已匯出"
+
+msgid "IDS_PB_POP_DELETING_CONTACTS_ING"
+msgstr "正在刪除聯絡人..."
+
+msgid "IDS_PB_BODY_MOVING_ING"
+msgstr "正在移動..."
+
+msgid "IDS_PB_BODY_COPYING_ING"
+msgstr "正在複製..."
+
+msgid "IDS_PB_POP_IMPORTING_SIM_CONTACTS_ING"
+msgstr "正在匯入 SIM 卡聯絡人..."
+
+msgid "IDS_PB_POP_IMPORTING_CONTACTS_FROM_VCARD_ING"
+msgstr "透過電子名片匯入聯絡人…"
+
+msgid "IDS_PB_POP_EXPORTING_CONTACTS_TO_PS_ING"
+msgstr "正在匯出聯絡人至 %s…"
+
+msgid "IDS_PB_BODY_VCARD"
+msgstr "電子名片"
+
+msgid "IDS_PB_BODY_READING_VCARD_ING"
+msgstr "閱讀電子名片..."
+
+msgid "IDS_COM_BODY_IMPORTED_ABB"
+msgstr "已匯入"
+
+msgid "IDS_COM_BODY_NA"
+msgstr "不適用"
+
+msgid "IDS_PB_OPT_ALL_LINKED_CONTACTS_ABB"
+msgstr "所有已連結聯絡人"
+
+msgid "IDS_PB_BODY_LINKED_CONTACTS"
+msgstr "連接聯絡人"
+
+msgid "IDS_KA_BODY_ADD_ANOTHER_FIELD"
+msgstr "Add another field"
+
+msgid "IDS_PB_BODY_JOB_TITLE"
+msgstr "職稱"
+
+msgid "IDS_PB_BODY_DEPARTMENT"
+msgstr "部門"
+
+msgid "IDS_PB_OPT_GROUP_NAME"
+msgstr "群組名稱"
+
+msgid "IDS_PB_BODY_ADD_ACCOUNT"
+msgstr "新增帳號"
+
+msgid "IDS_PB_POP_ADDING_MEMBERS_TO_GROUP_ING"
+msgstr "增加成員到群組"
+
+msgid "IDS_PB_OPT_VIEW"
+msgstr "檢視"
+
+msgid "IDS_PB_OPT_VIEW_BY"
+msgstr "View by"
+
+msgid "IDS_PB_BODY_PD_CONTACTS"
+msgstr "%d 位聯絡人"
+
+msgid "IDS_PB_OPT_RENAME"
+msgstr "重新命名"
+
+msgid "IDS_PB_OPT_RELATIONSHIP"
+msgstr "關係"
+
+msgid "IDS_PB_BODY_NO_HISTORIES"
+msgstr "無歷史記錄"
+
+msgid "IDS_PB_BODY_NO_ACTIVITIES"
+msgstr "沒有活動"
+
+msgid "IDS_PB_POP_ADDING_ING"
+msgstr "正在加入..."
+
+msgid "IDS_PB_BODY_EDITADDITIONALINFO"
+msgstr "其他資訊"
+
+msgid "IDS_PB_BODY_PO_BOX"
+msgstr "郵政信箱"
+
+msgid "IDS_PB_BODY_STATE"
+msgstr "州"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS"
+msgstr "朋友"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_FAMILY"
+msgstr "家庭"
+
+msgid "IDS_PB_BODY_CO_WORKERS"
+msgstr "同事"
+
+#, fuzzy
+msgid "IDS_PB_BODY_EMERGENCY_CONTACTS"
+msgstr "Emergency contacts"
+
+msgid "IDS_PB_BODY_DEFAULT_GROUP_WORK"
+msgstr "工作"
+
+msgid "IDS_PB_BODY_VIBRATION_PATTERN"
+msgstr "震動模式"
+
+msgid "IDS_PB_OPT_SET_DEFAULT"
+msgstr "設定為預設"
+
+msgid "IDS_COM_OPT_EVENT"
+msgstr "活動"
+
+msgid "IDS_PB_OPT_SHARE_CONTACT_INFORMATION"
+msgstr "分享聯絡人資訊"
+
+msgid "IDS_PB_BODY_1_CONTACT"
+msgstr "1 位聯絡人"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_PB_OPT_EXPORT_TO_SIM_CARD"
+msgstr "匯出至 SIM 卡"
+
+msgid "IDS_PB_SK3_INFO"
+msgstr "資訊"
+
+msgid "IDS_PB_TAB4_HISTORY"
+msgstr "記錄"
+
+msgid "IDS_PB_TAB4_ACTIVITIES"
+msgstr "活動"
+
+msgid "IDS_CMT_HEADER_GROUP_MESSAGE_TMO"
+msgstr "群組訊息"
+
+msgid "IDS_CMT_HEADER_GROUP_EMAIL_TMO"
+msgstr "群組電子郵件"
+
+msgid "IDS_PB_BODY_ORGANIZATION"
+msgstr "Organization"
+
+msgid "IDS_PB_BODY_MY_PHONE"
+msgstr "My phone"
+
+msgid "IDS_PB_BODY_RINGTONES"
+msgstr "Ringtones"
+
+msgid "IDS_PB_BODY_MY_FILES"
+msgstr "My files"
+
+msgid "IDS_PB_BODY_NO_NAME"
+msgstr "無姓名"
+
+msgid "IDS_PB_POP_INVALID_EMAIL_ADDRESS"
+msgstr "電子郵件地址無效"
+
+msgid "IDS_PB_POP_COMPLETE_AT_LEAST_ONE_FIELD_AS_WELL_AS_NAME"
+msgstr "至少輸入一個名字"
+
+msgid "IDS_IM_BODY_FAILED_TO_ACCESS_DATABASE"
+msgstr "無法存取資料庫"
+
+msgid "IDS_PB_POP_ALREADY_ADDED"
+msgstr "已新增"
+
+msgid "IDS_PB_POP_GROUP_ALREADY_IN_USE"
+msgstr "群組名稱已在使用中"
+
+msgid "IDS_PB_BODY_NO_GROUP"
+msgstr "無群組"
+
+msgid "IDS_PB_POP_NO_NUMBER"
+msgstr "無號碼"
+
+msgid "IDS_PB_POP_NO_EMAIL_ADDRESSES"
+msgstr "無電子郵件地址"
+
+msgid "IDS_PB_BODY_NO_CONTACTS"
+msgstr "無聯絡人"
+
+msgid "IDS_PB_POP_SIM_MEMORY_EMPTY"
+msgstr "SIM 記憶體為空"
+
+msgid "IDS_PB_POP_MAXIMUM_NUMBER_OF_ENTRIES_EXCEEDED"
+msgstr "超過項目數上限"
+
+msgid "IDS_SEARCH_BODY_DATA_DOES_NOT_EXIST"
+msgstr ""
+
+msgid "IDS_PB_BODY_INVALID_NUMBER"
+msgstr "號碼無效"
+
+msgid "IDS_PB_POP_SIM_MEMORY_FULL"
+msgstr "SIM 卡記憶體已滿"
+
+msgid "IDS_PB_BODY_YOU_CAN_IMPORT_CONTACTS_FROM_SIM_CARD_TO_YOUR_PHONE_IN_SETTINGS_HELP_MSG"
+msgstr ""
+"可於設定 > 匯入聯絡人功能中自 SIM 卡匯入聯絡人至手機,或於設定中使用帳號同步"
+"網路帳號的聯絡人"
+
+msgid "IDS_CLOG_POP_NO_LOGS_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN"
+msgstr "無記錄。撥打/接聽電話或發送/接收訊息後,將會顯示記錄"
+
+msgid "IDS_PB_POP_UNABLE_TO_SEND_NAME_CARDS"
+msgstr "無法傳送名片"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"
+msgstr "標記為預設號碼"
+
+msgid "IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL"
+msgstr "標記為預設的電子郵件"
+
+msgid "IDS_PB_BODY_IMAGE"
+msgstr "圖像"
+
+msgid "IDS_PB_BODY_TAKE_A_PHOTO"
+msgstr "拍照"
+
+msgid "IDS_PB_OPT_REMOVE_PHOTO_ABB"
+msgstr "刪除照片"
+
+msgid "IDS_PB_SK1_ADD_TO_HOME_SCREEN"
+msgstr "新增至主畫面"
+
+msgid "IDS_PB_BODY_SAVE_CONTACT_TO"
+msgstr "儲存聯絡人到"
+
+msgid "IDS_PB_OPT_SAVE_TO"
+msgstr "儲存至"
+
+msgid "IDS_PB_BODY_IMPORT_SIM_CONTACTS"
+msgstr "匯入 SIM 卡聯絡人"
+
+msgid "IDS_PB_BODY_FIRST_NAME_FIRST"
+msgstr "先顯示名字"
+
+msgid "IDS_PB_BODY_LAST_NAME_FIRST_ABB"
+msgstr "姓氏在前"
+
+msgid "IDS_ST_SK_SHOW"
+msgstr "顯示"
+
+msgid "IDS_ST_SK_HIDE"
+msgstr "隱藏"
+
+msgid "IDS_PB_HEADER_SEND_NAMECARD"
+msgstr "傳送名片"
+
+msgid "IDS_PB_HEADER_CREATE_GROUP"
+msgstr "建立群組"
+
+msgid "IDS_PB_HEADER_SELECT_GROUP"
+msgstr "選擇群組"
+
+msgid "IDS_PB_SK_IMPORT_CONTACTS"
+msgstr "匯入聯絡人"
+
+msgid "IDS_PB_BODY_LINK_CONTACT"
+msgstr "連接聯絡人"
+
+msgid "IDS_PB_OPT_UNLINK"
+msgstr "取消連接"
+
+msgid "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED"
+msgstr "所有相關的聯絡人將被刪除"
+
+msgid "IDS_PB_BODY_ADD_TO_FAVOURITES"
+msgstr "加到我的最愛"
+
+msgid "IDS_PB_HEADER_EDIT_GROUP"
+msgstr "編輯群組"
+
+msgid "IDS_PB_SK_ADD_MEMBER"
+msgstr "新增成員"
+
+msgid "IDS_PB_OPT_ADD_TO_GROUP"
+msgstr "加入到分組"
+
+msgid "IDS_PB_POP_ADDED_TO_FAVOURITES"
+msgstr "加到我的最愛"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVE_FROM_FAVOURITES"
+msgstr "Remove from Favourites"
+
+#, fuzzy
+msgid "IDS_PB_POP_REMOVED_FROM_FAVOURITES"
+msgstr "Removed from Favourites"
+
+msgid "IDS_PB_HEADER_UNKNOWN"
+msgstr "未知"
+
+msgid "IDS_PB_BODY_BIRTHDAY"
+msgstr "生日"
+
+msgid "IDS_PB_BODY_ANNIVERSARY"
+msgstr "週年紀念日"
+
+msgid "IDS_PB_OPT_GOOGLE_TALK"
+msgstr "Google Talk"
+
+msgid "IDS_PB_OPT_WINDOWS_LIVE_MESSENGER"
+msgstr "Windows Live Messenger"
+
+msgid "IDS_PB_BODY_YAHOO"
+msgstr "Yahoo!"
+
+msgid "IDS_PB_BODY_FACEBOOK"
+msgstr "Facebook"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_ICQ"
+msgstr "ICQ"
+
+msgid "IDS_PB_BODY_IMPSCOMMUNITY_AIM"
+msgstr "AIM"
+
+msgid "IDS_PB_OPT_QQ"
+msgstr "QQ"
+
+msgid "IDS_PB_OPT_JABBER"
+msgstr "Jabber"
+
+msgid "IDS_PB_OPT_SKYPE"
+msgstr "Skype"
+
+msgid "IDS_COM_BODY_SUNDAY"
+msgstr "週日"
+
+msgid "IDS_COM_BODY_MONDAY"
+msgstr "週一"
+
+msgid "IDS_COM_BODY_TUESDAY"
+msgstr "週二"
+
+msgid "IDS_COM_BODY_WEDNESDAY"
+msgstr "週三"
+
+msgid "IDS_COM_BODY_THURSDAY"
+msgstr "週四"
+
+msgid "IDS_COM_BODY_FRIDAY"
+msgstr "週五"
+
+msgid "IDS_COM_BODY_SATURDAY"
+msgstr "週六"
+
+msgid "IDS_PB_BUTTON_ASSISTANT"
+msgstr "助理"
+
+msgid "IDS_COM_OPT_BROTHER_ABB"
+msgstr "兄弟"
+
+msgid "IDS_PB_BUTTON_CHILD"
+msgstr "子女"
+
+msgid "IDS_PB_OPT_DOMESTIC_PARTNER_ABB"
+msgstr "同居伴侶"
+
+msgid "IDS_COM_OPT_FATHER_ABB"
+msgstr "父親"
+
+msgid "IDS_PB_BODY_CALLERIDFRIEND"
+msgstr "好友"
+
+msgid "IDS_JAVA_BODY_MANAGER"
+msgstr "經理"
+
+msgid "IDS_COM_OPT_MOTHER_ABB"
+msgstr "母親"
+
+msgid "IDS_COM_OPT_PARENT_ABB"
+msgstr "父母"
+
+msgid "IDS_PB_BODY_CALLERIDPARTNER"
+msgstr "夥伴"
+
+msgid "IDS_PB_OPT_REFERRED_BY"
+msgstr "介紹人"
+
+msgid "IDS_COM_BODY_RELATIVE_ABB"
+msgstr "親戚"
+
+msgid "IDS_COM_OPT_SISTER_ABB"
+msgstr "姊妹"
+
+msgid "IDS_PB_BODY_SPOUSE"
+msgstr "配偶"
+
+msgid "IDS_COM_VIBRATION_DEFAULT"
+msgstr "Default"
+
+msgid "IDS_COM_VIBRATION_HEARTBEAT"
+msgstr "Heartbeat"
+
+msgid "IDS_COM_VIBRATION_JINGLEBELL"
+msgstr "Jinglebell"
+
+msgid "IDS_COM_VIBRATION_TICKTOCK"
+msgstr "Ticktock"
+
+msgid "IDS_COM_VIBRATION_WALTZ"
+msgstr "Waltz"
+
+msgid "IDS_COM_VIBRATION_ZIGZIGZIG"
+msgstr "Zig-zig-zig"
+
+#~ msgid "IDS_CONTACT_IS_BLOCKED"
+#~ msgstr "Contact is blocked"
+
+#~ msgid "IDS_CONTACT_IS_UNBLOCKED"
+#~ msgstr "Contact is unblocked"
+
+#~ msgid "IDS_CLOG_POP_UNBLOCK_CONTACT"
+#~ msgstr "Unblock contact"
+
+#~ msgid "IDS_PB_BODY_URL"
+#~ msgstr "URL"
+
+#~ msgid "IDS_PB_BODY_IM"
+#~ msgstr "IM"
+
+#~ msgid "IDS_KA_BODY_MORE_INFORMATION"
+#~ msgstr "更多資訊"
+
+#~ msgid "IDS_PB_BODY_AFGHANISTAN"
+#~ msgstr "阿富汗"
+
+#~ msgid "IDS_PB_BODY_ALBANIA"
+#~ msgstr "阿爾巴尼亞"
+
+#~ msgid "IDS_PB_BODY_ALGERIA"
+#~ msgstr "阿爾及利亞"
+
+#~ msgid "IDS_PB_BODY_AMERICAN_SAMOA"
+#~ msgstr "美屬薩摩亞"
+
+#~ msgid "IDS_PB_BODY_ANDORRA"
+#~ msgstr "安道爾"
+
+#~ msgid "IDS_PB_BODY_ANGOLA"
+#~ msgstr "安哥拉"
+
+#~ msgid "IDS_PB_BODY_ANGUILLA"
+#~ msgstr "安圭拉"
+
+#~ msgid "IDS_PB_BODY_ANTIGUA_AND_BARBUDA"
+#~ msgstr "安地卡及巴布達"
+
+#~ msgid "IDS_PB_BODY_ARGENTINA_M_COUNTRYNAME"
+#~ msgstr "阿根廷"
+
+#~ msgid "IDS_PB_BODY_ARMENIA"
+#~ msgstr "亞美尼亞"
+
+#~ msgid "IDS_PB_BODY_ARUBA"
+#~ msgstr "阿魯巴"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIA"
+#~ msgstr "澳大利亞"
+
+#~ msgid "IDS_PB_BODY_AUSTRALIAN_EXTERNAL_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "澳洲海外屬地"
+
+#~ msgid "IDS_PB_BODY_AUSTRIA"
+#~ msgstr "奧地利"
+
+#~ msgid "IDS_PB_BODY_AZERBAIJAN_M_COUNTRYNAME"
+#~ msgstr "亞塞拜然"
+
+#~ msgid "IDS_PB_BODY_BAHAMAS"
+#~ msgstr "巴哈馬"
+
+#~ msgid "IDS_PB_BODY_BAHRAIN"
+#~ msgstr "巴林"
+
+#~ msgid "IDS_PB_BODY_BANGLADESH"
+#~ msgstr "孟加拉"
+
+#~ msgid "IDS_PB_BODY_BARBADOS"
+#~ msgstr "巴貝多"
+
+#~ msgid "IDS_PB_BODY_BELARUS"
+#~ msgstr "白俄羅斯"
+
+#~ msgid "IDS_PB_BODY_BELGIUM"
+#~ msgstr "比利時"
+
+#~ msgid "IDS_PB_BODY_BELIZE"
+#~ msgstr "貝里斯"
+
+#~ msgid "IDS_PB_BODY_BENIN"
+#~ msgstr "貝南"
+
+#~ msgid "IDS_PB_BODY_BERMUDA"
+#~ msgstr "百慕達"
+
+#~ msgid "IDS_PB_BODY_BHUTAN"
+#~ msgstr "不丹"
+
+#~ msgid "IDS_PB_BODY_BOLIVIA"
+#~ msgstr "玻利維亞"
+
+#~ msgid "IDS_PB_BODY_BONAIRE_SINT_EUSTATIUS_AND_SABA_M_REGIONALNAME"
+#~ msgstr "博內爾島、聖尤斯特歇斯與沙巴"
+
+#~ msgid "IDS_PB_BODY_BOSNIA_AND_HERZEGOVINA"
+#~ msgstr "波士尼亞赫塞哥維納"
+
+#~ msgid "IDS_PB_BODY_BOTSWANA"
+#~ msgstr "波札那"
+
+#~ msgid "IDS_PB_BODY_BRAZIL"
+#~ msgstr "巴西"
+
+#~ msgid "IDS_PB_BODY_BRITISH_VIRGIN_ISLANDS"
+#~ msgstr "英屬維爾京群島"
+
+#~ msgid "IDS_PB_BODY_BRUNEI_DARUSSALAM"
+#~ msgstr "汶萊"
+
+#~ msgid "IDS_PB_BODY_BULGARIA"
+#~ msgstr "保加利亞"
+
+#~ msgid "IDS_PB_BODY_BURKINA_FASO"
+#~ msgstr "布吉納法索"
+
+#~ msgid "IDS_PB_BODY_BURUNDI"
+#~ msgstr "蒲隆地"
+
+#~ msgid "IDS_PB_BODY_CAMBODIA"
+#~ msgstr "柬埔寨"
+
+#~ msgid "IDS_PB_BODY_CAMEROON"
+#~ msgstr "喀麥隆"
+
+#~ msgid "IDS_PB_BODY_CANADA"
+#~ msgstr "加拿大"
+
+#~ msgid "IDS_PB_BODY_CAPE_VERDE"
+#~ msgstr "維德角"
+
+#~ msgid "IDS_PB_BODY_CAYMAN_ISLANDS"
+#~ msgstr "開曼群島"
+
+#~ msgid "IDS_PB_BODY_CENTRAL_AFRICAN_REPUBLIC"
+#~ msgstr "中非共和國"
+
+#~ msgid "IDS_PB_BODY_CHAD"
+#~ msgstr "查德"
+
+#~ msgid "IDS_PB_BODY_CHILE"
+#~ msgstr "智利"
+
+#~ msgid "IDS_PB_BODY_CHINA"
+#~ msgstr "中國"
+
+#~ msgid "IDS_PB_BODY_COLOMBIA"
+#~ msgstr "哥倫比亞"
+
+#~ msgid "IDS_PB_BODY_COMOROS"
+#~ msgstr "葛摩"
+
+#~ msgid "IDS_PB_BODY_CONGO"
+#~ msgstr "剛果"
+
+#~ msgid "IDS_PB_BODY_COOK_ISLANDS"
+#~ msgstr "庫克群島"
+
+#~ msgid "IDS_PB_BODY_COSTA_RICA"
+#~ msgstr "哥斯大黎加"
+
+#~ msgid "IDS_PB_MBODY_COTE_DIVOIRE_M_COUNTRYNAME"
+#~ msgstr "象牙海岸"
+
+#~ msgid "IDS_PB_BODY_CROATIA"
+#~ msgstr "克羅埃西亞"
+
+#~ msgid "IDS_PB_BODY_CUBA"
+#~ msgstr "古巴"
+
+#~ msgid "IDS_PB_MBODY_CURACAO_M_COUNTRYNAME"
+#~ msgstr "庫拉索"
+
+#~ msgid "IDS_PB_BODY_CYPRUS"
+#~ msgstr "塞普勒斯"
+
+#~ msgid "IDS_PB_BODY_CZECH_REPUBLIC"
+#~ msgstr "捷克共和國"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA_M_COUNTRYNAME"
+#~ msgstr "朝鮮民主主義人民共和國"
+
+#~ msgid "IDS_PB_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+#~ msgstr "剛果民主共和國"
+
+#~ msgid "IDS_PB_MBODY_TIMOR_LESTE_M_COUNTRYNAME"
+#~ msgstr "東帝汶"
+
+#~ msgid "IDS_PB_BODY_DENMARK"
+#~ msgstr "丹麥"
+
+#~ msgid "IDS_PB_BODY_DIEGO_GARCIA"
+#~ msgstr "地牙哥加西亞"
+
+#~ msgid "IDS_PB_BODY_DJIBOUTI"
+#~ msgstr "吉布地"
+
+#~ msgid "IDS_PB_BODY_DOMINICA"
+#~ msgstr "多米尼克"
+
+#~ msgid "IDS_PB_BODY_DOMINICAN_REPUBLIC"
+#~ msgstr "多明尼加共和國"
+
+#~ msgid "IDS_PB_BODY_ECUADOR"
+#~ msgstr "厄瓜多爾"
+
+#~ msgid "IDS_PB_BODY_EGYPT"
+#~ msgstr "埃及"
+
+#~ msgid "IDS_PB_BODY_EL_SALVADOR"
+#~ msgstr "薩爾瓦多"
+
+#~ msgid "IDS_PB_BODY_EQUATORIAL_GUINEA"
+#~ msgstr "赤道幾內亞"
+
+#~ msgid "IDS_PB_BODY_ERITREA"
+#~ msgstr "厄立特里亞"
+
+#~ msgid "IDS_PB_BODY_ESTONIA"
+#~ msgstr "愛沙尼亞"
+
+#~ msgid "IDS_PB_BODY_ETHIOPIA"
+#~ msgstr "衣索比亞"
+
+#~ msgid "IDS_PB_BODY_FALKLAND_ISLANDS"
+#~ msgstr "福克蘭群島"
+
+#~ msgid "IDS_PB_BODY_FAROE_ISLANDS"
+#~ msgstr "法羅群島"
+
+#~ msgid "IDS_PB_BODY_FIJI"
+#~ msgstr "斐濟"
+
+#~ msgid "IDS_PB_BODY_FINLAND"
+#~ msgstr "芬蘭"
+
+#~ msgid "IDS_PB_BODY_FRANCE"
+#~ msgstr "法國"
+
+#~ msgid "IDS_PB_MBODY_FRENCH_SOUTHERN_TERRITORIES_M_REGIONALNAME"
+#~ msgstr "法屬南部屬地"
+
+#~ msgid "IDS_PB_BODY_FRENCH_GUIANA"
+#~ msgstr "法屬圭亞那"
+
+#~ msgid "IDS_PB_BODY_FRENCH_POLYNESIA"
+#~ msgstr "法屬玻里尼西亞"
+
+#~ msgid "IDS_PB_MBODY_GABON_M_COUNTRYNAME"
+#~ msgstr "加彭"
+
+#~ msgid "IDS_PB_BODY_GAMBIA"
+#~ msgstr "甘比亞"
+
+#~ msgid "IDS_PB_BODY_GEORGIA"
+#~ msgstr "Georgia"
+
+#~ msgid "IDS_PB_BODY_GERMANY"
+#~ msgstr "德國"
+
+#~ msgid "IDS_PB_BODY_GHANA"
+#~ msgstr "迦納"
+
+#~ msgid "IDS_PB_BODY_GIBRALTAR"
+#~ msgstr "直布羅陀"
+
+#~ msgid "IDS_PB_BODY_GREECE"
+#~ msgstr "希臘"
+
+#~ msgid "IDS_PB_BODY_GREENLAND"
+#~ msgstr "格陵蘭"
+
+#~ msgid "IDS_PB_BODY_GRENADA"
+#~ msgstr "格瑞那達"
+
+#~ msgid "IDS_PB_BODY_GUADELOUPE"
+#~ msgstr "瓜德羅普"
+
+#~ msgid "IDS_PB_BODY_GUAM"
+#~ msgstr "關島"
+
+#~ msgid "IDS_PB_BODY_GUATEMALA"
+#~ msgstr "瓜地馬拉"
+
+#~ msgid "IDS_PB_BODY_GUINEA"
+#~ msgstr "幾內亞"
+
+#~ msgid "IDS_PB_BODY_GUINEA_BISSAU"
+#~ msgstr "幾內亞比索"
+
+#~ msgid "IDS_PB_BODY_GUYANA"
+#~ msgstr "圭亞那"
+
+#~ msgid "IDS_PB_BODY_HAITI"
+#~ msgstr "海地"
+
+#~ msgid "IDS_PB_BODY_HONDURAS"
+#~ msgstr "宏都拉斯"
+
+#~ msgid "IDS_PB_BODY_HONG_KONG"
+#~ msgstr "香港"
+
+#~ msgid "IDS_PB_BODY_HUNGARY"
+#~ msgstr "匈牙利"
+
+#~ msgid "IDS_PB_BODY_ICELAND"
+#~ msgstr "冰島"
+
+#~ msgid "IDS_PB_BODY_INDIA"
+#~ msgstr "印度"
+
+#~ msgid "IDS_PB_BODY_INDONESIA"
+#~ msgstr "印尼"
+
+#~ msgid "IDS_PB_MBODY_INMARSAT_SNAC"
+#~ msgstr "Inmarsat SNAC"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_FREEPHONE_SERVICE"
+#~ msgstr "國際免費電話服務"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_PREMIUM_RATE_SERVICE_HIPRS"
+#~ msgstr "國際付費語音資訊服務 (IPRS)"
+
+#~ msgid "IDS_PB_BODY_INTERNATIONAL_SHARED_COST_SERVICE_HISCS"
+#~ msgstr "國際共用費率服務 (ISCS)"
+
+#~ msgid "IDS_PB_BODY_IRAN"
+#~ msgstr "伊朗"
+
+#~ msgid "IDS_PB_BODY_IRAQ"
+#~ msgstr "伊拉克"
+
+#~ msgid "IDS_PB_BODY_IRELAND"
+#~ msgstr "愛爾蘭"
+
+#~ msgid "IDS_PB_BODY_ISRAEL"
+#~ msgstr "以色列"
+
+#~ msgid "IDS_PB_BODY_ITALY"
+#~ msgstr "義大利"
+
+#~ msgid "IDS_PB_BODY_JAMAICA"
+#~ msgstr "牙買加"
+
+#~ msgid "IDS_PB_BODY_JAPAN"
+#~ msgstr "日本"
+
+#~ msgid "IDS_PB_BODY_JORDAN"
+#~ msgstr "約旦"
+
+#~ msgid "IDS_PB_BODY_KAZAKHSTAN"
+#~ msgstr "哈薩克"
+
+#~ msgid "IDS_PB_BODY_KENYA"
+#~ msgstr "肯亞"
+
+#~ msgid "IDS_PB_BODY_KIRIBATI"
+#~ msgstr "吉里巴斯"
+
+#~ msgid "IDS_PB_BODY_KOREA"
+#~ msgstr "韓國"
+
+#~ msgid "IDS_PB_BODY_KUWAIT"
+#~ msgstr "科威特"
+
+#~ msgid "IDS_PB_BODY_KYRGYZSTAN_M_COUNTRYNAME"
+#~ msgstr "吉爾吉斯斯坦"
+
+#~ msgid "IDS_PB_BODY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC"
+#~ msgstr "寮人民民主共和國"
+
+#~ msgid "IDS_PB_BODY_LATVIA"
+#~ msgstr "拉脫維亞"
+
+#~ msgid "IDS_PB_BODY_LEBANON"
+#~ msgstr "黎巴嫩"
+
+#~ msgid "IDS_PB_BODY_LESOTHO"
+#~ msgstr "賴索托"
+
+#~ msgid "IDS_PB_BODY_LIBERIA"
+#~ msgstr "賴比瑞亞"
+
+#~ msgid "IDS_PB_BODY_LIBYA"
+#~ msgstr "利比亞"
+
+#~ msgid "IDS_PB_BODY_LIECHTENSTEIN"
+#~ msgstr "列支敦斯登"
+
+#~ msgid "IDS_PB_BODY_LITHUANIA"
+#~ msgstr "立陶宛"
+
+#~ msgid "IDS_PB_BODY_LUXEMBOURG"
+#~ msgstr "盧森堡"
+
+#~ msgid "IDS_PB_MBODY_MACAO_M_REGIONALNAME"
+#~ msgstr "澳門"
+
+#~ msgid "IDS_PB_BODY_MADAGASCAR"
+#~ msgstr "馬達加斯加"
+
+#~ msgid "IDS_PB_BODY_MALAWI"
+#~ msgstr "馬拉威"
+
+#~ msgid "IDS_PB_BODY_MALAYSIA"
+#~ msgstr "馬來西亞"
+
+#~ msgid "IDS_PB_BODY_MALDIVES"
+#~ msgstr "馬爾地夫"
+
+#~ msgid "IDS_PB_BODY_MALI"
+#~ msgstr "馬利"
+
+#~ msgid "IDS_PB_BODY_MALTA"
+#~ msgstr "馬爾他"
+
+#~ msgid "IDS_PB_BODY_MARSHALL_ISLANDS"
+#~ msgstr "馬紹爾群島"
+
+#~ msgid "IDS_PB_BODY_MARTINIQUE"
+#~ msgstr "馬堤尼克"
+
+#~ msgid "IDS_PB_BODY_MAURITANIA"
+#~ msgstr "茅利塔尼亞"
+
+#~ msgid "IDS_PB_BODY_MAURITIUS"
+#~ msgstr "模里西斯"
+
+#~ msgid "IDS_PB_BODY_MEXICO"
+#~ msgstr "墨西哥"
+
+#~ msgid "IDS_PB_BODY_MICRONESIA"
+#~ msgstr "密克羅尼西亞"
+
+#~ msgid "IDS_PB_BODY_MOLDOVA"
+#~ msgstr "摩爾多瓦"
+
+#~ msgid "IDS_PB_BODY_MONACO"
+#~ msgstr "摩納哥"
+
+#~ msgid "IDS_PB_BODY_MONGOLIA"
+#~ msgstr "蒙古"
+
+#~ msgid "IDS_PB_BODY_MONTENEGRO"
+#~ msgstr "蒙特內科羅共和國"
+
+#~ msgid "IDS_PB_BODY_MONTSERRAT"
+#~ msgstr "蒙塞拉特"
+
+#~ msgid "IDS_PB_BODY_MOROCCO"
+#~ msgstr "摩洛哥"
+
+#~ msgid "IDS_PB_BODY_MOZAMBIQUE"
+#~ msgstr "莫三比克"
+
+#~ msgid "IDS_PB_BODY_MYANMAR"
+#~ msgstr "緬甸"
+
+#~ msgid "IDS_PB_BODY_NAMIBIA"
+#~ msgstr "那米比亞"
+
+#~ msgid "IDS_PB_BODY_NAURU"
+#~ msgstr "諾魯"
+
+#~ msgid "IDS_PB_BODY_NEPAL"
+#~ msgstr "尼泊爾"
+
+#~ msgid "IDS_PB_BODY_NETHERLANDS"
+#~ msgstr "荷蘭"
+
+#~ msgid "IDS_PB_BODY_NEW_CALEDONIA"
+#~ msgstr "新喀里多尼亞群島"
+
+#~ msgid "IDS_PB_BODY_NEW_ZEALAND"
+#~ msgstr "紐西蘭"
+
+#~ msgid "IDS_PB_BODY_NICARAGUA"
+#~ msgstr "尼加拉瓜"
+
+#~ msgid "IDS_PB_BODY_NIGER"
+#~ msgstr "尼日"
+
+#~ msgid "IDS_PB_BODY_NIGERIA"
+#~ msgstr "奈及利亞"
+
+#~ msgid "IDS_PB_BODY_NIUE"
+#~ msgstr "紐埃島"
+
+#~ msgid "IDS_PB_BODY_NORTHERN_MARIANA_ISLANDS"
+#~ msgstr "北馬里亞納群島"
+
+#~ msgid "IDS_PB_BODY_NORWAY"
+#~ msgstr "挪威"
+
+#~ msgid "IDS_PB_BODY_OMAN"
+#~ msgstr "阿曼"
+
+#~ msgid "IDS_PB_BODY_PAKISTAN"
+#~ msgstr "巴基斯坦"
+
+#~ msgid "IDS_PB_BODY_PALAU"
+#~ msgstr "帛琉"
+
+#~ msgid "IDS_PB_BODY_PANAMA"
+#~ msgstr "巴拿馬"
+
+#~ msgid "IDS_PB_BODY_PAPUA_NEW_GUINEA"
+#~ msgstr "巴布亞紐幾內亞"
+
+#~ msgid "IDS_PB_BODY_PARAGUAY"
+#~ msgstr "巴拉圭"
+
+#~ msgid "IDS_PB_BODY_PERU"
+#~ msgstr "秘魯"
+
+#~ msgid "IDS_PB_BODY_PHILIPPINES"
+#~ msgstr "菲律賓"
+
+#~ msgid "IDS_PB_BODY_POLAND"
+#~ msgstr "波蘭"
+
+#~ msgid "IDS_PB_BODY_PORTUGAL"
+#~ msgstr "葡萄牙"
+
+#~ msgid "IDS_PB_BODY_PUERTO_RICO"
+#~ msgstr "波多黎各"
+
+#~ msgid "IDS_PB_BODY_QATAR"
+#~ msgstr "卡達"
+
+#~ msgid "IDS_PB_BODY_ROMANIA"
+#~ msgstr "羅馬尼亞"
+
+#~ msgid "IDS_PB_BODY_RUSSIAN_FEDERATION"
+#~ msgstr "俄羅斯聯邦"
+
+#~ msgid "IDS_PB_BODY_RWANDA"
+#~ msgstr "盧安達"
+
+#~ msgid "IDS_PB_BODY_SAINT_HELENA_M_COUNTRYNAME"
+#~ msgstr "聖赫勒那"
+
+#~ msgid "IDS_PB_BODY_SAINT_KITTS_AND_NEVIS"
+#~ msgstr "聖克里斯多福及尼維斯"
+
+#~ msgid "IDS_PB_BODY_SAINT_LUCIA"
+#~ msgstr "聖露西亞"
+
+#~ msgid "IDS_PB_BODY_SAINT_PIERRE_AND_MIQUELON"
+#~ msgstr "聖皮埃爾和密克隆群島"
+
+#~ msgid "IDS_PB_BODY_SAINT_VINCENT_AND_THE_GRENADINES"
+#~ msgstr "聖文森及格瑞那丁"
+
+#~ msgid "IDS_PB_BODY_SAMOA"
+#~ msgstr "薩摩亞"
+
+#~ msgid "IDS_PB_BODY_SAN_MARINO"
+#~ msgstr "聖馬利諾"
+
+#~ msgid "IDS_PB_BODY_SAO_TOME_AND_PRINCIPE"
+#~ msgstr "聖多美及普林西比"
+
+#~ msgid "IDS_PB_BODY_SAUDI_ARABIA"
+#~ msgstr "沙烏地阿拉伯"
+
+#~ msgid "IDS_PB_BODY_SENEGAL"
+#~ msgstr "塞內加爾"
+
+#~ msgid "IDS_PB_BODY_SERBIA"
+#~ msgstr "塞爾維亞"
+
+#~ msgid "IDS_PB_BODY_SEYCHELLES"
+#~ msgstr "塞席爾"
+
+#~ msgid "IDS_PB_BODY_SIERRA_LEONE"
+#~ msgstr "獅子山"
+
+#~ msgid "IDS_PB_BODY_SINGAPORE"
+#~ msgstr "新加坡"
+
+#~ msgid "IDS_PB_BODY_SINT_MAARTEN"
+#~ msgstr "聖馬丁"
+
+#~ msgid "IDS_PB_BODY_SLOVAKIA_M_COUNTRYNAME"
+#~ msgstr "斯洛伐克"
+
+#~ msgid "IDS_PB_BODY_SLOVENIA"
+#~ msgstr "斯洛維尼亞"
+
+#~ msgid "IDS_PB_BODY_SOLOMON_ISLANDS"
+#~ msgstr "所羅門群島"
+
+#~ msgid "IDS_PB_MBODY_SOMALIA_M_COUNTRYNAME"
+#~ msgstr "索馬利亞"
+
+#~ msgid "IDS_PB_BODY_SOUTH_AFRICA"
+#~ msgstr "南非"
+
+#~ msgid "IDS_PB_BODY_SPAIN"
+#~ msgstr "西班牙"
+
+#~ msgid "IDS_PB_BODY_SRI_LANKA"
+#~ msgstr "斯里蘭卡"
+
+#~ msgid "IDS_PB_BODY_SUDAN"
+#~ msgstr "蘇丹"
+
+#~ msgid "IDS_PB_BODY_SURINAME"
+#~ msgstr "蘇利南"
+
+#~ msgid "IDS_PB_BODY_SWAZILAND"
+#~ msgstr "史瓦濟蘭"
+
+#~ msgid "IDS_PB_BODY_SWEDEN"
+#~ msgstr "瑞典"
+
+#~ msgid "IDS_PB_BODY_SWITZERLAND"
+#~ msgstr "瑞士"
+
+#~ msgid "IDS_PB_BODY_SYRIAN_ARAB_REPUBLIC"
+#~ msgstr "敘利亞阿拉伯共和國"
+
+#~ msgid "IDS_PB_BODY_TAIWAN_M_COUNTRYNAME"
+#~ msgstr "台灣"
+
+#~ msgid "IDS_PB_BODY_TAJIKISTAN"
+#~ msgstr "塔吉克"
+
+#~ msgid "IDS_PB_BODY_TANZANIA"
+#~ msgstr "坦尚尼亞"
+
+#~ msgid "IDS_PB_BODY_TELECOMMUNICATIONS_FOR_DISASTER_RELIEF_HTDR"
+#~ msgstr "災害救援電信 (TDR)"
+
+#~ msgid "IDS_PB_BODY_THAILAND"
+#~ msgstr "泰國"
+
+#~ msgid "IDS_PB_BODY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA_M_COUNTRYNAME"
+#~ msgstr "英國"
+
+#~ msgid "IDS_PB_MBODY_TOGO_M_COUNTRYNAME"
+#~ msgstr "多哥"
+
+#~ msgid "IDS_PB_BODY_TOKELAU"
+#~ msgstr "托克勞"
+
+#~ msgid "IDS_PB_BODY_TONGA"
+#~ msgstr "東加"
+
+#~ msgid "IDS_PB_BODY_TRINIDAD_AND_TOBAGO"
+#~ msgstr "千里達及托巴哥"
+
+#~ msgid "IDS_PB_BODY_TUNISIA"
+#~ msgstr "突尼西亞"
+
+#~ msgid "IDS_PB_BODY_TURKEY"
+#~ msgstr "土耳其"
+
+#~ msgid "IDS_PB_BODY_TURKMENISTAN"
+#~ msgstr "土庫曼"
+
+#~ msgid "IDS_PB_BODY_TURKS_AND_CAICOS_ISLANDS"
+#~ msgstr "特克斯和凱科斯群島"
+
+#~ msgid "IDS_PB_BODY_TUVALU"
+#~ msgstr "吐瓦魯"
+
+#~ msgid "IDS_PB_BODY_UGANDA"
+#~ msgstr "烏干達"
+
+#~ msgid "IDS_PB_BODY_UKRAINE"
+#~ msgstr "烏克蘭"
+
+#~ msgid "IDS_PB_BODY_UNITED_ARAB_EMIRATES"
+#~ msgstr "阿拉伯聯合大公國"
+
+#~ msgid "IDS_PB_BODY_UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_M_COUNTRYNAME"
+#~ msgstr "大不列顛暨北愛爾蘭聯合王國"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_OF_AMERICA_M_COUNTRYNAME"
+#~ msgstr "美國"
+
+#~ msgid "IDS_PB_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_REGIONALNAME"
+#~ msgstr "美屬維爾京群島"
+
+#~ msgid "IDS_PB_BODY_UNIVERSAL_PERSONAL_TELECOMMUNICATION_SERVICE_HUPT"
+#~ msgstr "國際個人電信服務 (UPT)"
+
+#~ msgid "IDS_PB_BODY_URUGUAY"
+#~ msgstr "烏拉圭"
+
+#~ msgid "IDS_PB_BODY_UZBEKISTAN"
+#~ msgstr "烏茲別克斯坦"
+
+#~ msgid "IDS_PB_BODY_VANUATU"
+#~ msgstr "萬那杜"
+
+#~ msgid "IDS_PB_BODY_VATICAN_CITY_STATE"
+#~ msgstr "梵蒂岡城"
+
+#~ msgid "IDS_PB_BODY_VENEZUELA"
+#~ msgstr "委內瑞拉"
+
+#~ msgid "IDS_PB_BODY_VIETNAM"
+#~ msgstr "越南"
+
+#~ msgid "IDS_PB_BODY_WALLIS_AND_FUTUNA"
+#~ msgstr "瓦利斯和福圖納群島"
+
+#~ msgid "IDS_PB_BODY_YEMEN"
+#~ msgstr "葉門"
+
+#~ msgid "IDS_PB_BODY_ZAMBIA"
+#~ msgstr "尚比亞"
+
+#~ msgid "IDS_PB_BODY_ZIMBABWE"
+#~ msgstr "辛巴威"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HHOME"
+#~ msgstr "手機(住家)"
+
+#~ msgid "IDS_PB_BODY_MOBILE_HWORK"
+#~ msgstr "手機(工作)"
+
+#~ msgid "IDS_PB_BODY_GOOGLE"
+#~ msgstr "Google"
+
+#~ msgid "IDS_KA_BODY_SAVED_IN"
+#~ msgstr "已儲存在"
+
+#~ msgid "IDS_PB_BODY_IMPORT_FROM_SD_CARD"
+#~ msgstr "從 SD卡匯入"
+
+#~ msgid "IDS_PB_POP_GROUP_AND_GROUP_MEMBERS"
+#~ msgstr "分組和分組成員"
+
+#~ msgid "IDS_PB_POP_PS_SAVED_IN_PS"
+#~ msgstr "%s 已儲存在 %s"
+
+#~ msgid "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED"
+#~ msgstr "將刪除此聯絡人"
+
+#~ msgid "IDS_PB_BODY_PHOTO"
+#~ msgstr "相片"
+
+#~ msgid "IDS_PB_ITAB4_DIALLER"
+#~ msgstr "撥號程式"
+
+#~ msgid "IDS_PB_BODY_BACKUP"
+#~ msgstr "備份"
+
+#~ msgid "IDS_PB_BODY_EXCHANGE"
+#~ msgstr "交換"
+
+#~ msgid "IDS_PB_BODY_GROUP_ONLY"
+#~ msgstr "僅限群組"
+
+#~ msgid "IDS_PB_BODY_MSN"
+#~ msgstr "MSN"
+
+#~ msgid "IDS_PB_OPT_NEW_GROUP"
+#~ msgstr "新增群組"
+
+#~ msgid "IDS_PB_OPT_SELECT_GROUP"
+#~ msgstr "選擇群組"
+
+#~ msgid "IDS_PB_BODY_MOBILE_2"
+#~ msgstr "手機 2"
+
+#~ msgid "IDS_COM_POP_ADDED"
+#~ msgstr "已新增"
+
+#~ msgid "IDS_COM_POP_MOVED"
+#~ msgstr "已移動"
+
+#~ msgid "IDS_COM_POP_SELECTED"
+#~ msgstr "已選擇"
+
+#~ msgid "IDS_COM_SK_CANCEL"
+#~ msgstr "取消"
+
+#~ msgid "IDS_COM_POP_NOT_ENOUGH_MEMORY"
+#~ msgstr "記憶體不足"
+
+#~ msgid "IDS_COM_POP_REMOVED"
+#~ msgstr "已移除"
+
+#~ msgid "IDS_COM_POP_CLOSE"
+#~ msgstr "關閉"
+
+#~ msgid "IDS_COM_POP_DELETED"
+#~ msgstr "已刪除"
+
+#~ msgid "IDS_COM_POP_ERROR"
+#~ msgstr "錯誤"
+
+#~ msgid "IDS_COM_BODY_CALL"
+#~ msgstr "通話"
+
+#~ msgid "IDS_COM_BODY_NO_SIM"
+#~ msgstr "無 SIM 卡"
+
+#~ msgid "IDS_COM_BODY_SELECT_ALL"
+#~ msgstr "全選"
+
+#~ msgid "IDS_COM_POP_FAILED"
+#~ msgstr "失敗"
+
+#~ msgid "IDS_COM_POP_SUCCESS"
+#~ msgstr "成功"
+
+#~ msgid "IDS_COM_SK_SAVE"
+#~ msgstr "儲存"
+
+#~ msgid "IDS_PB_BODY_ADD_CONTACTS"
+#~ msgstr "新增聯絡人"
+
+#~ msgid "IDS_PB_BODY_ASSISTANT_S_NAME"
+#~ msgstr "助理姓名"
+
+#~ msgid "IDS_PB_BODY_DELETE_GROUP"
+#~ msgstr "刪除群組"
+
+#~ msgid "IDS_PB_BODY_GROUP_NAME"
+#~ msgstr "群組名稱"
+
+#~ msgid "IDS_PB_BODY_GROUP_RINGTONE_ABB"
+#~ msgstr "群組鈴聲"
+
+#~ msgid "IDS_PB_BODY_RECORD_VIDEO"
+#~ msgstr "錄影"
+
+#~ msgid "IDS_PB_BODY_REPLACE"
+#~ msgstr "取代"
+
+#~ msgid "IDS_PB_BODY_SETTINGS_SPEED_DIAL"
+#~ msgstr "怏速撥號"
+
+#~ msgid "IDS_PB_BUTTON_MSG"
+#~ msgstr "訊息"
+
+#~ msgid "IDS_PB_DROP_SET_RINGTONE"
+#~ msgstr "設定鈴聲"
+
+#~ msgid "IDS_PB_HEADER_ALL_CONTACTS"
+#~ msgstr "全部聯絡人"
+
+#~ msgid "IDS_PB_HEADER_COMPANY"
+#~ msgstr "公司"
+
+#~ msgid "IDS_PB_HEADER_EDIT_CONTACTS"
+#~ msgstr "編輯連絡人"
+
+#~ msgid "IDS_PB_HEADER_GET_EMAIL"
+#~ msgstr "取得電子郵件"
+
+#~ msgid "IDS_PB_HEADER_GET_NUMBER"
+#~ msgstr "取得號碼"
+
+#~ msgid "IDS_PB_HEADER_NO_GROUP"
+#~ msgstr "無群組"
+
+#~ msgid "IDS_PB_HEADER_PARTICIPANT"
+#~ msgstr "參與者"
+
+#~ msgid "IDS_PB_HEADER_SET_IMAGE"
+#~ msgstr "設定影像"
+
+#~ msgid "IDS_PB_HEADER_SPEED_DIAL_NOT_IN_USE_KOR"
+#~ msgstr "快速撥號未使用"
+
+#~ msgid "IDS_PB_OPT2_DELETE_CONTACTS"
+#~ msgstr "刪除聯絡人"
+
+#~ msgid "IDS_PB_OPT2_EDIT_GROUPS"
+#~ msgstr "編輯群組"
+
+#~ msgid "IDS_PB_OPT2_EMAIL"
+#~ msgstr "電子郵件"
+
+#~ msgid "IDS_PB_OPT_ADD_TO_FAVORITES"
+#~ msgstr "加到我的最愛"
+
+#~ msgid "IDS_PB_OPT_EDIT_GROUP"
+#~ msgstr "編輯群組"
+
+#~ msgid "IDS_PB_OPT_EMPTY_MVERB"
+#~ msgstr "空白"
+
+#~ msgid "IDS_PB_OPT_SAVE_CONTACT"
+#~ msgstr "儲存聯絡人"
+
+#~ msgid "IDS_PB_OPT_SELECT_CONTACT"
+#~ msgstr "選擇聯絡人"
+
+#~ msgid "IDS_PB_POP_ADD_GROUP"
+#~ msgstr "加入群組"
+
+#~ msgid "IDS_PB_POP_MEMORY_FULL"
+#~ msgstr "記憶體已滿"
+
+#~ msgid "IDS_PB_POP_REMOVING"
+#~ msgstr "正在移除..."
+
+#~ msgid "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_INTO_GROUP"
+#~ msgstr "無法將聯絡人新增到群組中"
+
+#~ msgid "IDS_PB_SK3_UPDATE"
+#~ msgstr "更新"
+
+#~ msgid "IDS_PB_SK_CANCEL_LITE"
+#~ msgstr "取消"
+
+#~ msgid "IDS_COM_BODY_BLUETOOTH"
+#~ msgstr "藍牙"
+
+#~ msgid "IDS_COM_BODY_CONTACTS"
+#~ msgstr "聯絡人"
+
+#~ msgid "IDS_COM_BODY_COPY"
+#~ msgstr "複製"
+
+#~ msgid "IDS_COM_BODY_CREATE"
+#~ msgstr "建立"
+
+#~ msgid "IDS_COM_BODY_EMAIL"
+#~ msgstr "電子郵件"
+
+#~ msgid "IDS_COM_BODY_MESSAGE"
+#~ msgstr "訊息"
+
+#~ msgid "IDS_COM_BODY_MOVE"
+#~ msgstr "移動"
+
+#~ msgid "IDS_COM_BODY_PHONE"
+#~ msgstr "電話"
+
+#~ msgid "IDS_COM_BODY_UNKNOWN"
+#~ msgstr "未知"
+
+#~ msgid "IDS_COM_BODY_VIDEO_CALL"
+#~ msgstr "視訊通話"
+
+#~ msgid "IDS_COM_SK_DELETE"
+#~ msgstr "刪除"
+
+#~ msgid "IDS_COM_SK_DONE"
+#~ msgstr "完成"
+
+#~ msgid "IDS_COM_SK_EDIT"
+#~ msgstr "編輯"
+
+#~ msgid "IDS_COM_SK_OK"
+#~ msgstr "確定"
+
+#~ msgid "IDS_PB_OPT_SEND_CONTACT_DETAILS"
+#~ msgstr "傳送聯絡人詳細資料"
+
+#~ msgid "IDS_PB_BODY_SEARCH_EXCHANGE_SERVER_ABB"
+#~ msgstr "搜尋Exchange伺服器"
+
+#~ msgid "IDS_PB_BODY_FIRST_NAME_LAST_NAME"
+#~ msgstr "名字姓氏"
+
+#~ msgid "IDS_PB_BODY_LAST_NAME_FIRST_NAME"
+#~ msgstr "先姓後名"
+
+#~ msgid "IDS_PB_BODY_FOR_MORE_FIELDS_TAP_THE_BUTTON_ON_THE_RIGHT"
+#~ msgstr "請輕觸右方按鍵查看更多欄位"
+
+msgid "IDS_PB_HEADER_SEND_MESSAGE"
+msgstr "Send message"
+
+msgid "IDS_SEND_MESSAGE_EMAIL"
+msgstr "Send message/email"
+
+msgid "IDS_IMPORT_EXPORT"
+msgstr "Import/Export"
+
+msgid "IDS_ACCOUNTS"
+msgstr "Accounts"
+
diff --git a/scripts/install.sh b/scripts/install.sh
new file mode 100755
index 0000000..de96c30
--- /dev/null
+++ b/scripts/install.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# how to use
+# ./install.sh i586 /home/developer
+# ./install.sh armv7l /home/developer
+
+architect=$1
+if [ -z "$1" ]; then
+ architect=i586
+fi
+
+dest=$2
+if [ -z "$1" ]; then
+ dest=.
+fi
+
+rpm -ivh --force $dest/libug-phone-efl-0.6.63.29-1.$architect.rpm
+pkgcmd -iqt rpm -p $dest/org.tizen.phone-0.6.63.29-1.$architect.rpm
+pkgcmd -iqt rpm -p $dest/org.tizen.contacts-0.6.63.29-1.$architect.rpm
+pkgcmd -iqt rpm -p $dest/org.tizen.contacts-viewer-0.6.63.29-1.$architect.rpm
+pkgcmd -iqt rpm -p $dest/org.tizen.contacts-appservice-0.6.63.29-1.$architect.rpm
+rpm -ivh --force $dest/phone-debuginfo-0.6.63.29-1.$architect.rpm
+rpm -ivh --force $dest/phone-debugsource-0.6.63.29-1.$architect.rpm
diff --git a/scripts/pull_binaries.sh b/scripts/pull_binaries.sh
new file mode 100755
index 0000000..9633b72
--- /dev/null
+++ b/scripts/pull_binaries.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+mkdir ../debugenv
+cd ../debugenv
+sdb pull /usr/apps/org.tizen.contacts/bin/contacts
+sdb pull /usr/lib/debug/usr/apps/org.tizen.contacts/bin/contacts.debug
+
+chmod +x ./contacts
diff --git a/scripts/push.sh b/scripts/push.sh
new file mode 100755
index 0000000..cf33e94
--- /dev/null
+++ b/scripts/push.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# how to use
+# ./push.sh /home/developer i586
+
+dest=$1
+architect=$2
+
+if [ -z "$1" ]; then
+ dest=/home/developer
+fi
+
+if [ -z "$2" ]; then
+ architect=i586
+fi
+
+echo "pushing packages to:" $dest
+echo "archtecture:" $architect
+
+sdb push ./install.sh $dest
+sdb push ./run.sh $dest
+sdb push ~/GBS-ROOT/local/BUILD-ROOTS/scratch.$architect.0/home/abuild/rpmbuild/RPMS/$architect $dest
+
+echo "installing packages.."
+sdb root on
+echo $dest/install.sh $architect $dest
+sdb shell $dest/install.sh $architect $dest
+sdb root off
diff --git a/scripts/run.sh b/scripts/run.sh
new file mode 100755
index 0000000..8304ae8
--- /dev/null
+++ b/scripts/run.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+echo "/usr/apps/org.tizen.contacts/bin/contacts -debug"
+/usr/apps/org.tizen.contacts/bin/contacts -debug
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644
index 0000000..6a4a352
--- /dev/null
+++ b/test/CMakeLists.txt
@@ -0,0 +1,14 @@
+cmake_minimum_required(VERSION 2.6)
+
+file(GLOB TEST_SRC *.cpp)
+
+set(TEST_LIBS
+ libgtest.a
+ libgtest_main.a -lpthread
+)
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/common/include)
+ADD_DEFINITIONS(${pkgs_CFLAGS})
+add_executable(phone-test ${TEST_SRC})
+TARGET_LINK_LIBRARIES(phone-test common ug-contacts-list-efl ${TEST_LIBS})
+install(TARGETS phone-test DESTINATION ${BINDIR})
diff --git a/test/ReadMe.txt b/test/ReadMe.txt
new file mode 100644
index 0000000..d28a656
--- /dev/null
+++ b/test/ReadMe.txt
@@ -0,0 +1,5 @@
+To build with tests add --define "TEST ON" to gbs command line.
+Test executable is installed to /usr/apps/org.tizen.phone/bin/phone-test on device or emulator.
+
+TODO:
+Automatic test build and launch should be provided by run-script.
diff --git a/test/common.cpp b/test/common.cpp
new file mode 100644
index 0000000..bc5c3fe
--- /dev/null
+++ b/test/common.cpp
@@ -0,0 +1,22 @@
+#include <gtest/gtest.h>
+#include "phone.h"
+#include "../lib/common/include/phone-common.h"
+
+class CommonTest : public ::testing::Test
+{
+
+};
+
+TEST_F(CommonTest, HasBadge)
+{
+ bool hBadge = hasBadge();
+
+ bool sDelete = removeBadge();
+
+ ASSERT_EQ(hBadge, sDelete);
+}
+
+TEST_F(CommonTest, ctui_get_record_image)
+{
+ ASSERT_EQ(NULL,ctui_get_record_image(NULL));
+}