From 3aaf3fefc027209708fb28d905ff85aee15d1e96 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Quentin?=
 <jquentin@jquentin-laptop-kub2.(none)>
Date: Thu, 9 Jul 2009 19:56:47 -0400
Subject: [PATCH] codeclistmodel + asynchronous loading of address book +
 enable/disable address book

---
 .../po/ru/sflphone-client-kde.po              | 1426 +++++++++--------
 sflphone-client-kde/src/Codec.cpp             |    2 +-
 sflphone-client-kde/src/CodecListModel.cpp    |   68 +-
 sflphone-client-kde/src/CodecListModel.h      |    4 +-
 .../src/SortableCodecListWidget.cpp           |   75 +-
 .../src/SortableCodecListWidget.h             |    8 +-
 .../src/conf/ConfigurationDialog.cpp          |    5 +-
 .../src/conf/ConfigurationDialog.h            |    1 +
 .../src/conf/ConfigurationSkeleton.cpp        |   28 +-
 .../src/conf/ConfigurationSkeleton.h          |    4 +-
 sflphone-client-kde/src/conf/dlgaccounts.cpp  |    2 +-
 .../src/conf/dlgaddressbookbase.ui            |  108 +-
 sflphone-client-kde/src/conf/dlgaudio.cpp     |  338 ++--
 sflphone-client-kde/src/conf/dlgaudio.h       |    7 +-
 sflphone-client-kde/src/conf/dlgaudiobase.ui  |   88 +-
 sflphone-client-kde/src/conf/dlgrecord.cpp    |    1 +
 .../src/conf/sflphone-client-kde.kcfg         |   26 +-
 sflphone-client-kde/src/main.cpp              |   10 -
 sflphone-client-kde/src/sflphone_const.h      |   35 +-
 sflphone-client-kde/src/sflphone_kdeview.cpp  |   94 +-
 sflphone-client-kde/src/sflphone_kdeview.h    |   36 +-
 .../src/ui/sflphone_kdeview_base.ui           |    6 +
 22 files changed, 1238 insertions(+), 1134 deletions(-)

diff --git a/sflphone-client-kde/po/ru/sflphone-client-kde.po b/sflphone-client-kde/po/ru/sflphone-client-kde.po
index 89dc63a1b0..5430136362 100644
--- a/sflphone-client-kde/po/ru/sflphone-client-kde.po
+++ b/sflphone-client-kde/po/ru/sflphone-client-kde.po
@@ -1,664 +1,762 @@
-# 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: 2009-07-03 13:49-0400\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"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../src/Account.cpp:34
-msgctxt "account state"
-msgid "Registered"
-msgstr ""
-
-#: ../src/Account.cpp:36
-msgctxt "account state"
-msgid "Not Registered"
-msgstr ""
-
-#: ../src/Account.cpp:38
-msgctxt "account state"
-msgid "Trying..."
-msgstr ""
-
-#: ../src/Account.cpp:40
-msgctxt "account state"
-msgid "Error"
-msgstr ""
-
-#: ../src/Account.cpp:42
-msgctxt "account state"
-msgid "Bad authentification"
-msgstr ""
-
-#: ../src/Account.cpp:44
-msgctxt "account state"
-msgid "Network unreachable"
-msgstr ""
-
-#: ../src/Account.cpp:46
-msgctxt "account state"
-msgid "Host unreachable"
-msgstr ""
-
-#: ../src/Account.cpp:48
-msgctxt "account state"
-msgid "Stun configuration error"
-msgstr ""
-
-#: ../src/Account.cpp:50
-msgctxt "account state"
-msgid "Stun server invalid"
-msgstr ""
-
-#: ../src/Account.cpp:51
-msgctxt "account state"
-msgid "Invalid"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:163 ../src/AccountWizard.cpp:278
-msgid "Account Creation Wizard"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:199
-msgid "Creation of account succeed with these parameters"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:211
-msgid "Creation of account has failed for the reason"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:217
-msgid "Register of account succeed with these parameters"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:255 ../src/AccountWizard.cpp:440
-#: ../build/src/ui_dlgaccountsbase.h:359
-msgid "Alias"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:256 ../src/AccountWizard.cpp:441
-#: ../build/src/ui_dlgaccountsbase.h:366
-msgid "Server"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:257 ../src/AccountWizard.cpp:442
-#: ../build/src/ui_dlgaccountsbase.h:367
-msgid "User"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:258 ../src/AccountWizard.cpp:443
-#: ../build/src/ui_dlgaccountsbase.h:368
-msgid "Password"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:259 ../build/src/ui_dlgaccountsbase.h:360
-msgid "Protocol"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:260 ../build/src/ui_dlgaccountsbase.h:369
-#: ../build/src/ui_sflphone_kdeview_base.h:396
-msgid "Mailbox"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:279
-msgid "Welcome to the Account creation wizard of SFLphone"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:281
-msgid "This wizard will help you setting up an account."
-msgstr ""
-
-#: ../src/AccountWizard.cpp:309 ../src/conf/ConfigurationDialog.cpp:50
-msgid "Accounts"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:310
-msgid "Please choose between those options :"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:312
-msgid "Create a free SIP/IAX2 account on sflphone.org"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:313
-msgid "Register an existing SIP/IAX2 account"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:352
-msgid "VoIP Protocols"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:353
-msgid "Choose the account type"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:355
-msgid "Register a SIP (Session Initiation Protocol) account"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:356
-msgid "Register a IAX2 (InterAsterisk eXchange) account"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:395
-msgid "Optionnal Email Address"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:396
-msgid "This email address will be used to send your voicemail messages."
-msgstr ""
-
-#: ../src/AccountWizard.cpp:398
-msgid "Email address"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:432
-msgid "SIP Account Settings"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:436
-msgid "IAX2 Account Settings"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:438
-msgid "Please full these settings fields."
-msgstr ""
-
-#: ../src/AccountWizard.cpp:444
-msgid "Voicemail number"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:523
-msgid "Network Address Translation (NAT)"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:524
-msgid ""
-"You should probably enable this option if you're placed under a firewall"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:526
-msgid "Enable STUN"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:527
-msgid "Stun Server"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:561
-msgid "Account Definition Finished"
-msgstr ""
-
-#: ../src/AccountWizard.cpp:562
-msgid ""
-"After checking the settings you chose, click \"Finish\" to create the "
-"account."
-msgstr ""
-
-#: ../src/ActionSetAccountFirst.cpp:26
-msgid "Default account"
-msgstr ""
-
-#: ../src/Call.cpp:116
-msgid "Transfer to : "
-msgstr ""
-
-#: ../src/main.cpp:34
-msgid "SFLphone KDE Client"
-msgstr ""
-
-#: ../src/main.cpp:38
-msgid "(C) 2009 Savoir-faire Linux"
-msgstr ""
-
-#: ../src/main.cpp:43
-msgid "Jérémy Quentin"
-msgstr ""
-
-#: ../src/main.cpp:45
-msgctxt "NAME OF TRANSLATORS"
-msgid "Your names"
-msgstr ""
-
-#: ../src/main.cpp:45
-msgctxt "EMAIL OF TRANSLATORS"
-msgid "Your emails"
-msgstr ""
-
-#: ../src/SFLPhone.cpp:62 ../src/sflphone_kdeview.cpp:1047
-#: ../src/sflphone_kdeview.cpp:1052 ../src/sflphone_kdeview.cpp:1057
-msgid "SFLphone"
-msgstr ""
-
-#: ../src/SFLPhone.cpp:181
-msgid "You still have some calls open. Please close all calls before quitting."
-msgstr ""
-
-#: ../src/SFLPhone.cpp:209
-msgid "Incoming call"
-msgstr ""
-
-#: ../src/SFLPhone.cpp:210
-msgid "You have an incoming call from"
-msgstr ""
-
-#: ../src/SFLPhone.cpp:210
-msgid "Click to accept or refuse it."
-msgstr ""
-
-#: ../src/sflphone_kdeview.cpp:864
-msgid "No account registered"
-msgstr ""
-
-#: ../src/sflphone_kdeview.cpp:868
-msgid "Using account"
-msgstr ""
-
-#: ../src/sflphone_kdeview.cpp:1047
-msgid "Main screen"
-msgstr ""
-
-#: ../src/sflphone_kdeview.cpp:1052 ../build/src/ui_dlggeneralbase.h:165
-msgid "Call history"
-msgstr ""
-
-#: ../src/sflphone_kdeview.cpp:1057
-#: ../build/src/ui_sflphone_kdeview_base.h:407
-msgid "Address book"
-msgstr ""
-
-#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1132
-msgid "Edit before call"
-msgstr ""
-
-#: ../src/sflphone_const.h:56
-msgid "Call"
-msgstr ""
-
-#: ../src/sflphone_const.h:57 ../build/src/ui_sflphone_kdeview_base.h:392
-msgid "Hang up"
-msgstr ""
-
-#: ../src/sflphone_const.h:58 ../build/src/ui_sflphone_kdeview_base.h:393
-msgid "Hold"
-msgstr ""
-
-#: ../src/sflphone_const.h:59 ../build/src/ui_sflphone_kdeview_base.h:394
-msgid "Transfer"
-msgstr ""
-
-#: ../src/sflphone_const.h:60
-msgid "Record"
-msgstr ""
-
-#: ../src/sflphone_const.h:61
-msgid "Accept"
-msgstr ""
-
-#: ../src/sflphone_const.h:62
-msgid "Refuse"
-msgstr ""
-
-#: ../src/sflphone_const.h:63
-msgid "Unhold"
-msgstr ""
-
-#: ../src/sflphone_const.h:64
-msgid "Give up transfer"
-msgstr ""
-
-#: ../src/sflphone_const.h:65
-msgid "Call back"
-msgstr ""
-
-#: ../src/sflphone_const.h:66
-msgid "Give up search"
-msgstr ""
-
-#: ../src/conf/ConfigurationDialog.cpp:48 ../build/src/ui_dlgrecordbase.h:91
-msgid "General"
-msgstr ""
-
-#: ../src/conf/ConfigurationDialog.cpp:49
-msgid "Display"
-msgstr ""
-
-#: ../src/conf/ConfigurationDialog.cpp:51
-msgid "Audio"
-msgstr ""
-
-#: ../src/conf/ConfigurationDialog.cpp:52
-msgid "Address Book"
-msgstr ""
-
-#: ../src/conf/ConfigurationDialog.cpp:53
-msgctxt "Config section"
-msgid "Record"
-msgstr ""
-
-#: ../src/conf/ConfigurationDialog.cpp:54
-msgid "Hooks"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:321
-#: ../build/src/ui_dlgaddressbookbase.h:142 ../build/src/ui_dlgaudiobase.h:262
-#: ../build/src/ui_dlgdisplaybase.h:120 ../build/src/ui_dlggeneralbase.h:164
-#: ../build/src/ui_dlghooksbase.h:173 ../build/src/ui_dlgrecordbase.h:90
-#: ../build/src/ui_sflphone_kdeview_base.h:390
-msgid "Form"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:323
-msgid ""
-"By default, when you place a call, sflphone will use the first account in "
-"this list which is \"registered\". Change the order of the accounts using "
-"the \"Up\" and \"Down\" arrows. Enable/disable them by checking/unchecking "
-"them on the left of the item. Add or remove some with \"Plus\" and \"Sub\" "
-"buttons. Edit the selected account with the form on the right."
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:327
-msgid "Remove the selected account"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:330
-msgid ""
-"This button will remove the selected account in the list below. Be sure you "
-"really don't need it anymore. If you think you might use it again later, "
-"just uncheck it."
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:335
-msgid "Remove"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:336
-msgid "Backspace, Return"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:338
-msgid "Add a new account"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:341
-msgid ""
-"This button enables you to initialize a new account. You will then be able "
-"to edit it using the form on the right."
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:343
-msgid "Add"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:345
-msgid "Get this account down"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:348 ../build/src/ui_dlgaccountsbase.h:355
-msgid ""
-"By default, when you place a call, sflphone will use the first account in "
-"this list which is \"registered\". Change the order of the accounts using "
-"the \"Up\" and \"Down\" arrows."
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:350
-msgid "Down"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:352
-msgid "Get this account up"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:357
-msgid "Up"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:358
-msgid "Apply"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:363
-msgid "SIP"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:364
-msgid "IAX"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:370
-msgid "State"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:373
-msgid "Stun settings will be applied on each account"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:374
-msgid "Enable Stun"
-msgstr ""
-
-#: ../build/src/ui_dlgaccountsbase.h:375
-msgid "choose Stun server (example : stunserver.org)"
-msgstr ""
-
-#: ../build/src/ui_dlgaddressbookbase.h:143
-msgid "Maximum &results"
-msgstr ""
-
-#: ../build/src/ui_dlgaddressbookbase.h:144
-msgid "Display &photo if available"
-msgstr ""
-
-#: ../build/src/ui_dlgaddressbookbase.h:145
-msgid "Display phone numbers of these &types :"
-msgstr ""
-
-#: ../build/src/ui_dlgaddressbookbase.h:146
-msgid "&Work"
-msgstr ""
-
-#: ../build/src/ui_dlgaddressbookbase.h:147
-msgid "&Mobile"
-msgstr ""
-
-#: ../build/src/ui_dlgaddressbookbase.h:148
-msgid "&Home"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:264
-msgid "Audio device"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:267
-msgid "ALSA"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:268
-msgid "PulseAudio"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:270
-msgid "Enable ringtones"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:271
-msgid "&Codecs"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:273
-msgid "Active"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:275
-msgid "Name"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:277
-msgid "Frequency"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:279
-msgid "Bitrate"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:281
-msgid "Bandwidth"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:284
-msgid "ALSA settings"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:285
-msgid "In"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:286
-msgid "Out"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:287
-msgid "ALSA plugin"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:288
-msgid "PulseAudio settings"
-msgstr ""
-
-#: ../build/src/ui_dlgaudiobase.h:289
-msgid "Mute other applications during a call"
-msgstr ""
-
-#: ../build/src/ui_dlgdisplaybase.h:121
-msgid "Enable notifications"
-msgstr ""
-
-#: ../build/src/ui_dlgdisplaybase.h:122
-msgid "On incoming &calls"
-msgstr ""
-
-#: ../build/src/ui_dlgdisplaybase.h:123
-msgid "On &messages"
-msgstr ""
-
-#: ../build/src/ui_dlgdisplaybase.h:124
-msgid "Show main window"
-msgstr ""
-
-#: ../build/src/ui_dlgdisplaybase.h:125
-msgid "On &start"
-msgstr ""
-
-#: ../build/src/ui_dlgdisplaybase.h:126
-msgid "On &incoming calls"
-msgstr ""
-
-#: ../build/src/ui_dlggeneralbase.h:166
-msgid "Keep my history for at least"
-msgstr ""
-
-#: ../build/src/ui_dlggeneralbase.h:167
-msgid "days"
-msgstr ""
-
-#: ../build/src/ui_dlggeneralbase.h:168
-msgid "Clear history"
-msgstr ""
-
-#: ../build/src/ui_dlggeneralbase.h:169
-msgid "Connection"
-msgstr ""
-
-#: ../build/src/ui_dlggeneralbase.h:170
-msgid "SIP Port"
-msgstr ""
-
-#: ../build/src/ui_dlggeneralbase.h:171
-msgid "Attention "
-msgstr ""
-
-#: ../build/src/ui_dlghooksbase.h:174
-msgid "URL Argument"
-msgstr ""
-
-#: ../build/src/ui_dlghooksbase.h:175
-#, c-format
-msgid "Custom commands with URL %s will be replaced with the passed URL."
-msgstr ""
-
-#: ../build/src/ui_dlghooksbase.h:176
-msgid "Trigger on specific SIP header"
-msgstr ""
-
-#: ../build/src/ui_dlghooksbase.h:177
-msgid "Trigger on IAX2 URL"
-msgstr ""
-
-#: ../build/src/ui_dlghooksbase.h:178
-msgid "Command to run"
-msgstr ""
-
-#: ../build/src/ui_dlghooksbase.h:179
-msgid "Phone number formatting"
-msgstr ""
-
-#: ../build/src/ui_dlghooksbase.h:180
-msgid "Add phone number prefix"
-msgstr ""
-
-#: ../build/src/ui_dlgrecordbase.h:92
-msgid "Destination folder"
-msgstr ""
-
-#: ../build/src/ui_sflphone_kdeview_base.h:391
-msgid "Pick up"
-msgstr ""
-
-#: ../build/src/ui_sflphone_kdeview_base.h:395
-msgid "History"
-msgstr ""
-
-#: ../build/src/ui_sflphone_kdeview_base.h:397
-msgid "Configure accounts"
-msgstr ""
-
-#: ../build/src/ui_sflphone_kdeview_base.h:398
-msgid "Configure audio"
-msgstr ""
-
-#: ../build/src/ui_sflphone_kdeview_base.h:399
-#: ../build/src/ui_sflphone_kdeview_base.h:401
-msgid "Configure SFLphone"
-msgstr ""
-
-#: ../build/src/ui_sflphone_kdeview_base.h:403
-msgid "Display volume bars"
-msgstr ""
-
-#: ../build/src/ui_sflphone_kdeview_base.h:404
-msgid "Display dialpad"
-msgstr ""
-
-#: ../build/src/ui_sflphone_kdeview_base.h:405
-msgctxt "Action record a calld"
-msgid "Record"
-msgstr ""
-
-#: ../build/src/ui_sflphone_kdeview_base.h:406
-msgid "Account creation wizard"
-msgstr ""
-
-#: ../build/src/ui_sflphone_kdeview_base.h:408
-msgid "Attention:number of results exceeds max displayed."
-msgstr ""
+# Russian Translation.
+# Copyright (C) 2009 Savoir-Faire Linux Inc.
+# This file is distributed under the same license as the sflphone package.
+# Hussein Abdallah <hussein.abdallah@savoirfairelinux.com>, 2009
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: SFLphone 0.9.6\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-07-08 15:18-0400\n"
+"PO-Revision-Date: 2009-06-08 10:19 GMT-5\n"
+"Last-Translator: HUSSEIN ABDALLAH <hussein.abdallah@savoirfairelinux.com>\n"
+"Language-Team:  Savoir-Faire Linux Inc <sflphoneteam@savoirfairelinux.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../src/Account.cpp:34
+msgctxt "account state"
+msgid "Registered"
+msgstr "Зарегестрирован"
+
+#: ../src/Account.cpp:36
+msgctxt "account state"
+msgid "Not Registered"
+msgstr "Не зарегестрирован"
+
+#: ../src/Account.cpp:38
+msgctxt "account state"
+msgid "Trying..."
+msgstr "попытка подключения..."
+
+#: ../src/Account.cpp:40
+msgctxt "account state"
+msgid "Error"
+msgstr "Ошибка"
+
+#: ../src/Account.cpp:42
+msgctxt "account state"
+msgid "Bad authentification"
+msgstr "Включить предупреждения"
+
+#: ../src/Account.cpp:44
+msgctxt "account state"
+msgid "Network unreachable"
+msgstr "Сеть недоступна"
+
+#: ../src/Account.cpp:46
+msgctxt "account state"
+msgid "Host unreachable"
+msgstr "Сервер недоступен"
+
+#: ../src/Account.cpp:48
+msgctxt "account state"
+msgid "Stun configuration error"
+msgstr "Окно настроек"
+
+#: ../src/Account.cpp:50
+msgctxt "account state"
+msgid "Stun server invalid"
+msgstr "STUN-сервер недействителен"
+
+#: ../src/Account.cpp:51
+msgctxt "account state"
+msgid "Invalid"
+msgstr "Недействителен"
+
+#: ../src/AccountWizard.cpp:163 ../src/AccountWizard.cpp:278
+msgid "Account Creation Wizard"
+msgstr "Мастер настройки SFLphone"
+
+#: ../src/AccountWizard.cpp:199
+msgid "Creation of account succeed with these parameters"
+msgstr "Успешное создание аккаунта с этими настройками"
+
+#: ../src/AccountWizard.cpp:211
+msgid "Creation of account has failed for the reason"
+msgstr "Создание аккаунта не получилось по этим причинам"
+
+#: ../src/AccountWizard.cpp:217
+msgid "Register of account succeed with these parameters"
+msgstr "Успешное регистрация аккаунта с этими настройками"
+
+#: ../src/AccountWizard.cpp:255 ../src/AccountWizard.cpp:440
+#: ../build/src/ui_dlgaccountsbase.h:359
+msgid "Alias"
+msgstr "Псевдоним"
+
+#: ../src/AccountWizard.cpp:256 ../src/AccountWizard.cpp:441
+#: ../build/src/ui_dlgaccountsbase.h:366
+msgid "Server"
+msgstr "Сервер"
+
+#: ../src/AccountWizard.cpp:257 ../src/AccountWizard.cpp:442
+#: ../build/src/ui_dlgaccountsbase.h:367
+msgid "User"
+msgstr "Пользователь"
+
+#: ../src/AccountWizard.cpp:258 ../src/AccountWizard.cpp:443
+#: ../build/src/ui_dlgaccountsbase.h:368
+msgid "Password"
+msgstr "Пароль"
+
+#: ../src/AccountWizard.cpp:259 ../build/src/ui_dlgaccountsbase.h:360
+msgid "Protocol"
+msgstr "Протокол"
+
+#: ../src/AccountWizard.cpp:260 ../build/src/ui_dlgaccountsbase.h:369
+#: ../build/src/ui_sflphone_kdeview_base.h:396
+msgid "Mailbox"
+msgstr "Автоответчик"
+
+#: ../src/AccountWizard.cpp:279
+msgid "Welcome to the Account creation wizard of SFLphone"
+msgstr "Добро пожаловать в мастер настройки SFLphone"
+
+#: ../src/AccountWizard.cpp:281
+msgid "This wizard will help you setting up an account."
+msgstr "Этот мастер установки поможет вам настроить ваш аккаунт."
+
+#: ../src/AccountWizard.cpp:309 ../src/conf/ConfigurationDialog.cpp:50
+msgid "Accounts"
+msgstr "Аккаунты"
+
+#: ../src/AccountWizard.cpp:310
+msgid "Please choose between those options :"
+msgstr "Выберите пожалуйста тип аккаунта :"
+
+#: ../src/AccountWizard.cpp:312
+msgid "Create a free SIP/IAX2 account on sflphone.org"
+msgstr "Создать бесплатный SIP/IAX2-аккаунт на sflphone.org"
+
+#: ../src/AccountWizard.cpp:313
+msgid "Register an existing SIP/IAX2 account"
+msgstr "Зарегистрировать существующий SIP или IAX2 аккаунт"
+
+#: ../src/AccountWizard.cpp:352
+msgid "VoIP Protocols"
+msgstr "VoIP-протоколы"
+
+#: ../src/AccountWizard.cpp:353
+msgid "Choose the account type"
+msgstr "Выберите тип аккаунта:"
+
+#: ../src/AccountWizard.cpp:355
+msgid "Register a SIP (Session Initiation Protocol) account"
+msgstr "Зарегистрировать существующий SIP-аккаунт"
+
+#: ../src/AccountWizard.cpp:356
+msgid "Register a IAX2 (InterAsterisk eXchange) account"
+msgstr "Зарегистрировать существующий IAX2-аккаунт"
+
+#: ../src/AccountWizard.cpp:395
+msgid "Optionnal Email Address"
+msgstr "Электронный адрес (необязательный) "
+
+#: ../src/AccountWizard.cpp:396
+msgid "This email address will be used to send your voicemail messages."
+msgstr "Этот электронный адрес будет использоваться для речевых сообщений"
+
+#: ../src/AccountWizard.cpp:398
+msgid "Email address"
+msgstr "Адрес эл. почты"
+
+#: ../src/AccountWizard.cpp:432
+msgid "SIP Account Settings"
+msgstr "Настройки SIP-аккаунта"
+
+#: ../src/AccountWizard.cpp:436
+msgid "IAX2 Account Settings"
+msgstr "Настройки IAX2-аккаунта"
+
+#: ../src/AccountWizard.cpp:438
+msgid "Please full these settings fields."
+msgstr "Заполните пожалуйста эти поля."
+
+#: ../src/AccountWizard.cpp:444
+msgid "Voicemail number"
+msgstr "Номер автоответчика"
+
+#: ../src/AccountWizard.cpp:523
+msgid "Network Address Translation (NAT)"
+msgstr "Network Address Translation (NAT)"
+
+#: ../src/AccountWizard.cpp:524
+msgid ""
+"You should probably enable this option if you're placed under a firewall"
+msgstr ""
+"Вы наверное должны это включить если вы находитесь за сетевым экраном."
+
+#: ../src/AccountWizard.cpp:526
+msgid "Enable STUN"
+msgstr "Включить STUN"
+
+#: ../src/AccountWizard.cpp:527
+msgid "Stun Server"
+msgstr "STUN-сервер"
+
+#: ../src/AccountWizard.cpp:561
+msgid "Account Definition Finished"
+msgstr "Настройка аккаунта закончена."
+
+#: ../src/AccountWizard.cpp:562
+msgid ""
+"After checking the settings you chose, click \"Finish\" to create the "
+"account."
+msgstr ""
+"После просмотра выбранных настроек, нажмите на \"Закончить\" чтобы создать "
+"аккаунт. "
+
+#: ../src/ActionSetAccountFirst.cpp:26
+msgid "Default account"
+msgstr "Аккаунт по умолчанию"
+
+#: ../src/Call.cpp:116
+msgid "Transfer to : "
+msgstr "Переслать звонок на другой номер :"
+
+#: ../src/main.cpp:34
+msgid "SFLphone KDE Client"
+msgstr "SFLphone - версия для KDE "
+
+#: ../src/main.cpp:38
+msgid "(C) 2009 Savoir-faire Linux"
+msgstr "(C) 2009 Savoir-faire Linux"
+
+#: ../src/main.cpp:42
+msgid "Jérémy Quentin"
+msgstr "Jérémy Quentin"
+
+#: ../src/main.cpp:43
+msgctxt "NAME OF TRANSLATORS"
+msgid "Your names"
+msgstr "Hussein Abdallah"
+
+#: ../src/main.cpp:43
+msgctxt "EMAIL OF TRANSLATORS"
+msgid "Your emails"
+msgstr "hussein.abdallah@savoirfairelinux.com"
+
+#: ../src/SFLPhone.cpp:62 ../src/sflphone_kdeview.cpp:1066
+#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1076
+msgid "SFLphone"
+msgstr "SFLphone"
+
+#: ../src/SFLPhone.cpp:181
+msgid "You still have some calls open. Please close all calls before quitting."
+msgstr ""
+"У вас ещё есть неоконченные звонки. Пожалуйста проверьте что все звонки "
+"окончены перед тем как выйти."
+
+#: ../src/SFLPhone.cpp:209
+msgid "Incoming call"
+msgstr "Входящий звонок"
+
+#: ../src/SFLPhone.cpp:210
+msgid "You have an incoming call from"
+msgstr "Входящей звонок от "
+
+#: ../src/SFLPhone.cpp:210
+msgid "Click to accept or refuse it."
+msgstr "Нажмите чтобы принять или отклонить."
+
+#: ../src/sflphone_kdeview.cpp:883
+msgid "No account registered"
+msgstr "Нет зарегистрированных аккаунтов"
+
+#: ../src/sflphone_kdeview.cpp:887
+msgid "Using account"
+msgstr "Используется аккаунт"
+
+#: ../src/sflphone_kdeview.cpp:1066
+msgid "Main screen"
+msgstr "Главный экран"
+
+#: ../src/sflphone_kdeview.cpp:1071 ../build/src/ui_dlggeneralbase.h:165
+msgid "Call history"
+msgstr "Журнал звонков"
+
+#: ../src/sflphone_kdeview.cpp:1076
+#: ../build/src/ui_sflphone_kdeview_base.h:407
+msgid "Address book"
+msgstr "Адресная книга"
+
+#: ../src/sflphone_kdeview.cpp:1090 ../src/sflphone_kdeview.cpp:1151
+msgid "Edit before call"
+msgstr "Изменить перед звонком"
+
+#: ../src/sflphone_const.h:56
+msgid "Call"
+msgstr "Звонок"
+
+#: ../src/sflphone_const.h:57 ../build/src/ui_sflphone_kdeview_base.h:392
+msgid "Hang up"
+msgstr "Положить трубку"
+
+#: ../src/sflphone_const.h:58 ../build/src/ui_sflphone_kdeview_base.h:393
+msgid "Hold"
+msgstr "Удержать звонок"
+
+#: ../src/sflphone_const.h:59 ../build/src/ui_sflphone_kdeview_base.h:394
+msgid "Transfer"
+msgstr "Переслать звонок на другой номер"
+
+#: ../src/sflphone_const.h:60
+msgid "Record"
+msgstr "Записать"
+
+#: ../src/sflphone_const.h:61
+msgid "Accept"
+msgstr "Принять"
+
+#: ../src/sflphone_const.h:62
+msgid "Refuse"
+msgstr "Отклонить"
+
+#: ../src/sflphone_const.h:63
+msgid "Unhold"
+msgstr "Снова взять"
+
+#: ../src/sflphone_const.h:64
+msgid "Give up transfer"
+msgstr "Отменить пересылку звонка"
+
+#: ../src/sflphone_const.h:65
+msgid "Call back"
+msgstr "Перезвонить"
+
+#: ../src/sflphone_const.h:66
+msgid "Give up search"
+msgstr "Отменить поиск"
+
+#: ../src/conf/ConfigurationDialog.cpp:48 ../build/src/ui_dlgrecordbase.h:91
+msgid "General"
+msgstr "Общие настройки"
+
+#: ../src/conf/ConfigurationDialog.cpp:49
+msgid "Display"
+msgstr "Экран"
+
+#: ../src/conf/ConfigurationDialog.cpp:51
+msgid "Audio"
+msgstr "Звук"
+
+#: ../src/conf/ConfigurationDialog.cpp:52
+msgid "Address Book"
+msgstr "Адресная книга"
+
+#: ../src/conf/ConfigurationDialog.cpp:53
+msgctxt "Config section"
+msgid "Record"
+msgstr "Запись переговоров"
+
+#: ../src/conf/ConfigurationDialog.cpp:54
+msgid "Hooks"
+msgstr "перехватчики (hooks)"
+
+#: ../build/src/ui_dlgaccountsbase.h:321
+#: ../build/src/ui_dlgaddressbookbase.h:142 ../build/src/ui_dlgaudiobase.h:263
+#: ../build/src/ui_dlgdisplaybase.h:120 ../build/src/ui_dlggeneralbase.h:164
+#: ../build/src/ui_dlghooksbase.h:173 ../build/src/ui_dlgrecordbase.h:90
+#: ../build/src/ui_sflphone_kdeview_base.h:390
+msgid "Form"
+msgstr ""
+
+#: ../build/src/ui_dlgaccountsbase.h:323
+msgid ""
+"By default, when you place a call, sflphone will use the first account in "
+"this list which is \"registered\". Change the order of the accounts using "
+"the \"Up\" and \"Down\" arrows. Enable/disable them by checking/unchecking "
+"them on the left of the item. Add or remove some with \"Plus\" and \"Sub\" "
+"buttons. Edit the selected account with the form on the right."
+msgstr ""
+"По умолчанию, SFLPhone будет использовать первый аккаунт в списке "
+"зарегистрированных аккаунтов. Последовательность использования "
+"аккаунтов можно изменить при помощи стрелок \"Вверх\" и \"Вниз\"."
+
+
+#: ../build/src/ui_dlgaccountsbase.h:327
+msgid "Remove the selected account"
+msgstr "Убрать этот аккаунт"
+
+#: ../build/src/ui_dlgaccountsbase.h:330
+msgid ""
+"This button will remove the selected account in the list below. Be sure you "
+"really don't need it anymore. If you think you might use it again later, "
+"just uncheck it."
+msgstr ""
+"Это кнопка уберëт аккаунт. Если вы думаете его использовать позже, "
+"то достаточно его отменить "
+
+#: ../build/src/ui_dlgaccountsbase.h:335
+msgid "Remove"
+msgstr "Убрать"
+
+#: ../build/src/ui_dlgaccountsbase.h:336
+msgid "Backspace, Return"
+msgstr "Backspace, Return"
+
+#: ../build/src/ui_dlgaccountsbase.h:338
+msgid "Add a new account"
+msgstr "Добавить новый аккаунт"
+
+#: ../build/src/ui_dlgaccountsbase.h:341
+msgid ""
+"This button enables you to initialize a new account. You will then be able "
+"to edit it using the form on the right."
+msgstr ""
+"Это кнопка позволит вам добавить новый аккаунт. После этого вы сможете "
+"его изменить при помощи экрана справа." 
+
+#: ../build/src/ui_dlgaccountsbase.h:343
+msgid "Add"
+msgstr "Добавить"
+
+#: ../build/src/ui_dlgaccountsbase.h:345
+msgid "Get this account down"
+msgstr "Убрать этот аккаунт"
+
+#: ../build/src/ui_dlgaccountsbase.h:348 ../build/src/ui_dlgaccountsbase.h:355
+msgid ""
+"By default, when you place a call, sflphone will use the first account in "
+"this list which is \"registered\". Change the order of the accounts using "
+"the \"Up\" and \"Down\" arrows."
+msgstr ""
+"По умолчанию, SFLPhone будет использовать первый аккаунт в списке "
+"зарегистрированных аккаунтов. Последовательность использования "
+"аккаунтов можно изменить при помощи стрелок \"Вверх\" и \"Вниз\"."
+
+
+#: ../build/src/ui_dlgaccountsbase.h:350
+msgid "Down"
+msgstr "Вниз"
+
+#: ../build/src/ui_dlgaccountsbase.h:352
+msgid "Get this account up"
+msgstr "Убрать этот аккаунт"
+
+#: ../build/src/ui_dlgaccountsbase.h:357
+msgid "Up"
+msgstr "Вверх"
+
+#: ../build/src/ui_dlgaccountsbase.h:358
+msgid "Apply"
+msgstr "Применить"
+
+#: ../build/src/ui_dlgaccountsbase.h:363
+msgid "SIP"
+msgstr "SIP"
+
+#: ../build/src/ui_dlgaccountsbase.h:364
+msgid "IAX"
+msgstr "IAX"
+
+#: ../build/src/ui_dlgaccountsbase.h:370
+msgid "State"
+msgstr "Статус"
+
+#: ../build/src/ui_dlgaccountsbase.h:373
+msgid "Stun settings will be applied on each account"
+msgstr "Stun-настройки будут использоваться для всех аккаунтов"
+
+#: ../build/src/ui_dlgaccountsbase.h:374
+msgid "Enable Stun"
+msgstr "&Включить STUN"
+
+#: ../build/src/ui_dlgaccountsbase.h:375
+msgid "choose Stun server (example : stunserver.org)"
+msgstr "Выберите STUN-сервер (например : stunserver.org )"
+
+#: ../build/src/ui_dlgaddressbookbase.h:143
+msgid "Maximum &results"
+msgstr "Максимальное &количество результатов"
+
+#: ../build/src/ui_dlgaddressbookbase.h:144
+msgid "Display &photo if available"
+msgstr "Показать &фотографию контакта (если имеется)"
+
+#: ../build/src/ui_dlgaddressbookbase.h:145
+msgid "Display phone numbers of these &types :"
+msgstr "Если контакт имеет несколько номеров, показать &только :"
+
+#: ../build/src/ui_dlgaddressbookbase.h:146
+msgid "&Work"
+msgstr "&Рабочий номер"
+
+#: ../build/src/ui_dlgaddressbookbase.h:147
+msgid "&Mobile"
+msgstr "Номер &мобильника"
+
+#: ../build/src/ui_dlgaddressbookbase.h:148
+msgid "&Home"
+msgstr "&Домашний номер"
+
+#: ../build/src/ui_dlgaudiobase.h:265
+msgid "Audio device"
+msgstr "Звуковое устройство"
+
+#: ../build/src/ui_dlgaudiobase.h:268
+msgid "ALSA"
+msgstr "ALSA"
+
+#: ../build/src/ui_dlgaudiobase.h:269
+msgid "PulseAudio"
+msgstr "PulseAudio"
+
+#: ../build/src/ui_dlgaudiobase.h:271
+msgid "Enable ringtones"
+msgstr "Включить звонок"
+
+#: ../build/src/ui_dlgaudiobase.h:272
+msgid "*.ul *.au *.wav"
+msgstr "*.ul *.au *.wav"
+
+#: ../build/src/ui_dlgaudiobase.h:273
+msgid "&Codecs"
+msgstr "&Кодеки"
+
+#: ../build/src/ui_dlgaudiobase.h:275
+msgid "Active"
+msgstr "Вкл."
+
+#: ../build/src/ui_dlgaudiobase.h:277
+msgid "Name"
+msgstr "Имя"
+
+#: ../build/src/ui_dlgaudiobase.h:279
+msgid "Frequency"
+msgstr "Частота"
+
+#: ../build/src/ui_dlgaudiobase.h:281
+msgid "Bitrate"
+msgstr "Битрейт"
+
+#: ../build/src/ui_dlgaudiobase.h:283
+msgid "Bandwidth"
+msgstr "Пропускная способность"
+
+#: ../build/src/ui_dlgaudiobase.h:286
+msgid "ALSA settings"
+msgstr "Настройка ALSA"
+
+#: ../build/src/ui_dlgaudiobase.h:287
+msgid "ALSA plugin"
+msgstr "ALSA-плагин"
+
+#: ../build/src/ui_dlgaudiobase.h:288
+msgid "In"
+msgstr "Вход"
+
+#: ../build/src/ui_dlgaudiobase.h:289
+msgid "Out"
+msgstr "Выход"
+
+#: ../build/src/ui_dlgaudiobase.h:290
+msgid "PulseAudio settings"
+msgstr "Настройка PulseAudio"
+
+#: ../build/src/ui_dlgaudiobase.h:291
+msgid "Mute other applications during a call"
+msgstr "Приглушить звук других програм во время звонка"
+
+#: ../build/src/ui_dlgdisplaybase.h:121
+msgid "Enable notifications"
+msgstr "Включить предупреждения"
+
+#: ../build/src/ui_dlgdisplaybase.h:122
+msgid "On incoming &calls"
+msgstr "При входящих звонках"
+
+#: ../build/src/ui_dlgdisplaybase.h:123
+msgid "On &messages"
+msgstr "При звуковых &сообщениях"
+
+#: ../build/src/ui_dlgdisplaybase.h:124
+msgid "Show main window"
+msgstr "Показать главное окно"
+
+#: ../build/src/ui_dlgdisplaybase.h:125
+msgid "On &start"
+msgstr "При &запуске"
+
+#: ../build/src/ui_dlgdisplaybase.h:126
+msgid "On &incoming calls"
+msgstr "При входящих звонках"
+
+#: ../build/src/ui_dlggeneralbase.h:166
+msgid "Keep my history for at least"
+msgstr "Сохранить журнал звонков как минимум "
+
+#: ../build/src/ui_dlggeneralbase.h:167
+msgid "days"
+msgstr "дней"
+
+#: ../build/src/ui_dlggeneralbase.h:168
+msgid "Clear history"
+msgstr "Стереть журнал"
+
+#: ../build/src/ui_dlggeneralbase.h:169
+msgid "Connection"
+msgstr "Подключение"
+
+#: ../build/src/ui_dlggeneralbase.h:170
+msgid "SIP Port"
+msgstr "SIP-порт"
+
+#: ../build/src/ui_dlggeneralbase.h:171
+msgid "Attention "
+msgstr "Внимание"
+
+#: ../build/src/ui_dlghooksbase.h:174
+msgid "URL Argument"
+msgstr "Аргумент переданный в URL"
+
+#: ../build/src/ui_dlghooksbase.h:175
+#, c-format
+msgid "Custom commands with URL %s will be replaced with the passed URL."
+msgstr "Команды с URL %s будут заменены на переданный URL"
+
+#: ../build/src/ui_dlghooksbase.h:176
+msgid "Trigger on specific SIP header"
+msgstr "Запустить при определëнном SIP-заголовке"
+
+#: ../build/src/ui_dlghooksbase.h:177
+msgid "Trigger on IAX2 URL"
+msgstr "Запустить при URL IAX2 "
+
+#: ../build/src/ui_dlghooksbase.h:178
+msgid "Command to run"
+msgstr "Команда"
+
+#: ../build/src/ui_dlghooksbase.h:179
+msgid "Phone number formatting"
+msgstr "Формат номера телефона"
+
+#: ../build/src/ui_dlghooksbase.h:180
+msgid "Add phone number prefix"
+msgstr "Добавить перед на набранными номерами"
+
+#: ../build/src/ui_dlgrecordbase.h:92
+msgid "Destination folder"
+msgstr "Папка для записи"
+
+#: ../build/src/ui_sflphone_kdeview_base.h:391
+msgid "Pick up"
+msgstr "&Взять трубку"
+
+#: ../build/src/ui_sflphone_kdeview_base.h:395
+msgid "History"
+msgstr "Журнал"
+
+#: ../build/src/ui_sflphone_kdeview_base.h:397
+msgid "Configure accounts"
+msgstr "Настроить &аккаунты"
+
+#: ../build/src/ui_sflphone_kdeview_base.h:398
+msgid "Configure audio"
+msgstr "Настроить &звук"
+
+#: ../build/src/ui_sflphone_kdeview_base.h:399
+#: ../build/src/ui_sflphone_kdeview_base.h:401
+msgid "Configure SFLphone"
+msgstr "&Настроить SFLPhone"
+
+#: ../build/src/ui_sflphone_kdeview_base.h:403
+msgid "Display volume bars"
+msgstr "Показать уровень &громкости"
+
+#: ../build/src/ui_sflphone_kdeview_base.h:404
+msgid "Display dialpad"
+msgstr "Показать &клавиатуру"
+
+#: ../build/src/ui_sflphone_kdeview_base.h:405
+msgctxt "Action record a call"
+msgid "Record"
+msgstr "Записать"
+
+#: ../build/src/ui_sflphone_kdeview_base.h:406
+msgid "Account creation wizard"
+msgstr "&Мастер настройки SFLphone"
+
+#: ../build/src/ui_sflphone_kdeview_base.h:408
+msgid "Attention:number of results exceeds max displayed."
+msgstr "Внимание: Количество результатов превышает настроенный максимум результатов"
+
+#~ msgid "Attention : SIP port must be over 1024 !"
+#~ msgstr "Внимание : SIP-порт должен быть больше чем 1024 !"
+
+#~ msgid "Attention : SIP port must be under 65536 !"
+#~ msgstr "Внимание : SIP-порт должен быть меньше чем 65536 !"
+
+#~ msgid "about"
+#~ msgstr "О"
+
+#~ msgid "Configure general settings"
+#~ msgstr "Общие настройки"
+
+#~ msgid "&Capacity"
+#~ msgstr "Вместимость"
+
+#~ msgid "Configure display"
+#~ msgstr "Настроить экран"
+
+#~ msgid "Configure user accounts"
+#~ msgstr "Настройка аккаунтов пользователей"
+
+#~ msgid "&Alias"
+#~ msgstr "Псевдоним"
+
+#~ msgid "&Protocol"
+#~ msgstr "Протокол"
+
+#~ msgid "&Server"
+#~ msgstr "&Сервер"
+
+#~ msgid "&User"
+#~ msgstr "&Пользователь"
+
+#~ msgid "Pass&word"
+#~ msgstr "Па&роль"
+
+#~ msgid "&Mailbox"
+#~ msgstr "&Звуковые сообщения"
+
+#~ msgid "Configure audio settings"
+#~ msgstr "Настройки звука"
+
+#~ msgid "Configure record settings"
+#~ msgstr "Настроить запись звонков"
+
+#~ msgid "Configure address book settings"
+#~ msgstr "Настроить адресную книгу"
+
+#~ msgid "Configure hooks settings"
+#~ msgstr "Настроить перехватчики"
+
+#~ msgid "SIP Protocol"
+#~ msgstr "SIP-Протокол"
+
+#~ msgid "IAX2 Protocol"
+#~ msgstr "IAX2-Протокол"
+
+#~ msgid "SIP Header"
+#~ msgstr "SIP Заголовок"
+
+#~ msgid "Prepend"
+#~ msgstr "Добавить в начало"
+
+#~ msgid "&Hang up"
+#~ msgstr "&Положить трубку"
+
+#~ msgid "H&old"
+#~ msgstr "&Удержать звонок"
+
+#~ msgid "&Transfer"
+#~ msgstr "Пе&реслать звонок на другой номер"
+
+#~ msgid "&About"
+#~ msgstr "&О SFLphone"
+
+#~ msgid "&Record"
+#~ msgstr "Записать"
diff --git a/sflphone-client-kde/src/Codec.cpp b/sflphone-client-kde/src/Codec.cpp
index 0ce75a9824..3e94070c0d 100644
--- a/sflphone-client-kde/src/Codec.cpp
+++ b/sflphone-client-kde/src/Codec.cpp
@@ -27,7 +27,7 @@ Codec::Codec(int payload, bool enabled)
 {
 	ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
 	QStringList details = configurationManager.getCodecDetails(payload);
-	this->payload = payload;
+	this->payload = QString::number(payload);
 	this->enabled = enabled;
 	this->name = details[CODEC_NAME];
 	this->frequency = details[CODEC_SAMPLE_RATE];
diff --git a/sflphone-client-kde/src/CodecListModel.cpp b/sflphone-client-kde/src/CodecListModel.cpp
index 72e6f815f5..60b7866dd5 100644
--- a/sflphone-client-kde/src/CodecListModel.cpp
+++ b/sflphone-client-kde/src/CodecListModel.cpp
@@ -29,44 +29,8 @@ CodecListModel::CodecListModel(QObject *parent)
 {
 	this->codecs = QList<Codec *>();
 	ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
-// 	QStringList codecList = configurationManager.getCodecList();
 	QStringList activeCodecList = configurationManager.getActiveCodecList();
 	setActiveCodecList(activeCodecList);
-// 	#if QT_VERSION >= 0x040500
-// 		activeCodecList.removeDuplicates();
-// 	#else
-//    	for (int i = 0 ; i < activeCodecList.size() ; i++)
-// 		{
-// 			if(activeCodecList.lastIndexOf(activeCodecList[i]) != i || ! codecList.contains(activeCodecList[i]))
-// 			{
-// 				activeCodecList.removeAt(i);
-// 				i--;
-// 			}
-// 		}
-// 	#endif
-// 
-// 	QStringList codecListToDisplay = activeCodecList;
-// 	for (int i=0 ; i<codecList.size() ; i++)
-// 	{
-// 		if(! activeCodecList.contains(codecList[i]))
-// 		{
-// 			codecListToDisplay << codecList[i];
-// 		}
-// 	}
-// 	for(int i=0 ; i<codecListToDisplay.size() ; i++)
-// 	{
-// 		bool ok;
-// 		qDebug() << codecListToDisplay[i];
-// 		QString payloadStr = QString(codecListToDisplay[i]);
-// 		int payload = payloadStr.toInt(&ok);
-// 		if(!ok)	
-// 			qDebug() << "The codec's payload sent by the configurationManager is not a number : " << codecListToDisplay[i];
-// 		else
-// 		{
-// 			codecs << new Codec(payload, activeCodecList.contains(codecListToDisplay[i]));
-// 		}
-// 	}
-
 }
 
 
@@ -74,12 +38,6 @@ CodecListModel::~CodecListModel()
 {
 }
 
-// void CodecListModel::setCodecs(QList<Codec *> codecs)
-// {
-// 	this->codecs = QList<Codec *>();
-// 	this->codecs.append(new Codec(8,false));
-// }
-
 
 QVariant CodecListModel::data ( const QModelIndex & index, int role) const
 {
@@ -122,17 +80,6 @@ int CodecListModel::columnCount(const QModelIndex & parent) const
 	return 4;
 }
 
-// bool CodecListModel::insertRows(int position, int rows, const QModelIndex &parent)
-// {
-// 	beginInsertRows(QModelIndex(), position, position+rows-1);
-// 
-// 	for (int row = 0; row < rows; ++row) {
-// 		codecs.insert(position, new Codec("payload"));
-// 	}
-// 
-// 	endInsertRows();
-// 	return true;
-// }
 
 QVariant CodecListModel::headerData(int section , Qt::Orientation orientation, int role) const
 {
@@ -177,10 +124,13 @@ bool CodecListModel::setData ( const QModelIndex & index, const QVariant &value,
 
 bool CodecListModel::codecUp( int index )
 {
+		qDebug() << getActiveCodecList();
 	if(index > 0 && index <= rowCount())
 	{
 		codecs.swap(index - 1, index);
+		qDebug() << getActiveCodecList();
 		emit dataChanged(this->index(index - 1, 0, QModelIndex()), this->index(index, columnCount(), QModelIndex()));
+		qDebug() << getActiveCodecList();
 		return true;
 	}
 	return false;
@@ -201,16 +151,15 @@ QStringList CodecListModel::getActiveCodecList() const
 {
 	QStringList codecList;
 	for(int i = 0 ; i < rowCount() ; i++)
+	{
 		if(codecs[i]->isEnabled())
 			codecList.append(codecs[i]->getPayload());
+	}
 	return codecList;
 }
 
 void CodecListModel::setActiveCodecList(const QStringList & activeCodecListToSet)
 {
-// 	for(int i = 0 ; i < rowCount() ; i++)
-// 		codecs[i]->setEnabled(activeCodecList.contains(codecs[i]->getPayload()));
-		
 	this->codecs = QList<Codec *>();
 	ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
 	QStringList codecList = configurationManager.getCodecList();
@@ -249,9 +198,6 @@ void CodecListModel::setActiveCodecList(const QStringList & activeCodecListToSet
 			codecs << new Codec(payload, activeCodecList.contains(codecListToDisplay[i]));
 		}
 	}
-		
-		
-		
-		
+	
 	emit dataChanged(this->index(0, 0, QModelIndex()), this->index(rowCount(), columnCount(), QModelIndex()));
-}
\ No newline at end of file
+}
diff --git a/sflphone-client-kde/src/CodecListModel.h b/sflphone-client-kde/src/CodecListModel.h
index d4881e81b7..26b63b642c 100644
--- a/sflphone-client-kde/src/CodecListModel.h
+++ b/sflphone-client-kde/src/CodecListModel.h
@@ -51,7 +51,9 @@ public:
 	bool codecDown( int index );
 	QStringList getActiveCodecList() const ;
 	void setActiveCodecList(const QStringList & activeCodecListToSet);
-	
+
+signals:
+	void dataChanged(const QModelIndex &, const QModelIndex &);
 };
 
 #endif
diff --git a/sflphone-client-kde/src/SortableCodecListWidget.cpp b/sflphone-client-kde/src/SortableCodecListWidget.cpp
index 352f736acb..27587446b7 100644
--- a/sflphone-client-kde/src/SortableCodecListWidget.cpp
+++ b/sflphone-client-kde/src/SortableCodecListWidget.cpp
@@ -20,7 +20,6 @@
  ***************************************************************************/
 #include "SortableCodecListWidget.h"
 
-#include "CodecListModel.h"
 #include <QHBoxLayout>
 #include <QVBoxLayout>
 #include <QDebug>
@@ -30,10 +29,10 @@ SortableCodecListWidget::SortableCodecListWidget(QWidget *parent)
 {
 	codecTable = new QTableView(this);
 	codecTable->setObjectName("codecTable");
-	CodecListModel * model = new CodecListModel();
-	codecTable->setModel(model);
-	codecTable->resizeColumnsToContents();
-	codecTable->resizeRowsToContents();
+// 	CodecListModel * model = new CodecListModel();
+// 	codecTable->setModel(model);
+// 	codecTable->resizeColumnsToContents();
+// 	codecTable->resizeRowsToContents();
 	codecTable->setSelectionBehavior(QAbstractItemView::SelectRows);
 	
 	codecUpButton = new KPushButton(this);
@@ -45,7 +44,7 @@ SortableCodecListWidget::SortableCodecListWidget(QWidget *parent)
 	codecDownButton->setIcon(KIcon("go-down"));
 	
 	QHBoxLayout * mainLayout = new QHBoxLayout(this);
-	QVBoxLayout * buttonsLayout = new QVBoxLayout(this);
+	QVBoxLayout * buttonsLayout = new QVBoxLayout();
 	
 	buttonsLayout->addWidget(codecUpButton);
 	buttonsLayout->addWidget(codecDownButton);
@@ -53,20 +52,23 @@ SortableCodecListWidget::SortableCodecListWidget(QWidget *parent)
 	mainLayout->addWidget(codecTable);
 	mainLayout->addLayout(buttonsLayout);
 	
-	this->setLayout(mainLayout);
-	
 	QMetaObject::connectSlotsByName(this);
 }
 
-void SortableCodecListWidget::on_codecTable_currentCellChanged(int currentRow)
+void SortableCodecListWidget::setModel(CodecListModel * model)
+{
+	codecTable->setModel(model);
+	codecTable->resizeColumnsToContents();
+	codecTable->resizeRowsToContents();	
+	connect(codecTable->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
+	        this,                         SLOT(updateCommands()));
+	connect(codecTable->model(),          SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),
+	        this,                         SIGNAL(dataChanged()));
+}
+
+CodecListModel * SortableCodecListWidget::model()
 {
-	qDebug() << "on_codecTable_currentCellChanged";
-// 	int nbCol = codecTable->model()->columnCount();
-// 	for(int i = 0 ; i < nbCol ; i++)
-// 	{
-// 		codecTable->setRangeSelected(QTableWidgetSelectionRange(currentRow, 0, currentRow, nbCol - 1), true);
-// 	}
-	updateCommands();
+	return (CodecListModel *) codecTable->model();
 }
 
 void SortableCodecListWidget::on_codecUpButton_clicked()
@@ -76,22 +78,6 @@ void SortableCodecListWidget::on_codecUpButton_clicked()
 	int currentRow = selectedRow();
 	model->codecUp(currentRow);
 	setSelectedRow(currentRow - 1);
-	
-// 	int currentCol = codecTable->currentColumn();
-// 	int currentRow = codecTable->currentRow();
-// 	int nbCol = codecTable->columnCount();
-// 	for(int i = 0 ; i < nbCol ; i++)
-// 	{
-// 		QTableWidgetItem * item1 = tableWidget_codecs->takeItem(currentRow, i);
-// 		QTableWidgetItem * item2 = tableWidget_codecs->takeItem(currentRow - 1, i);
-// 		tableWidget_codecs->setItem(currentRow - 1, i , item1);
-// 		tableWidget_codecs->setItem(currentRow, i , item2);
-// 	}
-// 	QTableWidgetItem * item1 = tableWidget_codecs->takeVerticalHeaderItem(currentRow);
-// 	QTableWidgetItem * item2 = tableWidget_codecs->takeVerticalHeaderItem(currentRow - 1);
-// 	tableWidget_codecs->setVerticalHeaderItem(currentRow - 1, item1);
-// 	tableWidget_codecs->setVerticalHeaderItem(currentRow, item2);
-// 	tableWidget_codecs->setCurrentCell(currentRow - 1, currentCol);
 }
 
 void SortableCodecListWidget::on_codecDownButton_clicked()
@@ -101,22 +87,6 @@ void SortableCodecListWidget::on_codecDownButton_clicked()
 	int currentRow = selectedRow();
 	model->codecDown(currentRow);
 	setSelectedRow(currentRow + 1);
-	
-// 	int currentCol = tableWidget_codecs->currentColumn();
-// 	int currentRow = tableWidget_codecs->currentRow();
-// 	int nbCol = tableWidget_codecs->columnCount();
-// 	for(int i = 0 ; i < nbCol ; i++)
-// 	{
-// 		QTableWidgetItem * item1 = tableWidget_codecs->takeItem(currentRow, i);
-// 		QTableWidgetItem * item2 = tableWidget_codecs->takeItem(currentRow + 1, i);
-// 		tableWidget_codecs->setItem(currentRow + 1, i , item1);
-// 		tableWidget_codecs->setItem(currentRow, i , item2);
-// 	}
-// 	QTableWidgetItem * item1 = tableWidget_codecs->takeVerticalHeaderItem(currentRow);
-// 	QTableWidgetItem * item2 = tableWidget_codecs->takeVerticalHeaderItem(currentRow + 1);
-// 	tableWidget_codecs->setVerticalHeaderItem(currentRow + 1, item1);
-// 	tableWidget_codecs->setVerticalHeaderItem(currentRow, item2);
-// 	tableWidget_codecs->setCurrentCell(currentRow + 1, currentCol);
 }
 
 void SortableCodecListWidget::updateCommands()
@@ -166,9 +136,10 @@ void SortableCodecListWidget::setSelectedRow(int row)
 {
 	QItemSelectionModel * selection = codecTable->selectionModel();
 	QAbstractItemModel * model = codecTable->model();
-	QItemSelection newSelection = QItemSelection(model->index(row, 0, QModelIndex()), model->index(row, model->columnCount(), QModelIndex()));
+	QItemSelection newSelection = QItemSelection(model->index(row, 0, QModelIndex()), model->index(row +1 , model->columnCount(), QModelIndex()));
 	selection->clear();
-// 	selection->select(newSelection , QItemSelectionModel::Select);
-	selection->select(model->index(row, model->columnCount()-1, QModelIndex()) , QItemSelectionModel::Select);
-// 	listView->selectionModel()->select(belowIndex, QItemSelectionModel::Select);
+	for(int i = 0 ; i < model->columnCount() ; i++)
+	{
+		selection->select(model->index(row, i, QModelIndex()) , QItemSelectionModel::Select);
+	}
 } 
\ No newline at end of file
diff --git a/sflphone-client-kde/src/SortableCodecListWidget.h b/sflphone-client-kde/src/SortableCodecListWidget.h
index 92105e71c4..0ea9eae8fe 100644
--- a/sflphone-client-kde/src/SortableCodecListWidget.h
+++ b/sflphone-client-kde/src/SortableCodecListWidget.h
@@ -24,6 +24,7 @@
 #include <QWidget>
 #include <KPushButton>
 #include <QTableView>
+#include "CodecListModel.h"
 
 /**
 	@author Jérémy Quentin <jeremy.quentin@gmail.com>
@@ -39,8 +40,10 @@ private:
 public:
 	SortableCodecListWidget(QWidget *parent = 0);
 	
+	virtual void setModel(CodecListModel * model);
+	virtual CodecListModel * model();
+	
 private slots:
-	void on_codecTable_currentCellChanged(int currentRow);
 	void on_codecUpButton_clicked();
 	void on_codecDownButton_clicked();
 	
@@ -52,6 +55,9 @@ private:
 	int selectedRow();
 
 	void setSelectedRow(int row);
+	
+signals:
+	void dataChanged();
 
 };
 
diff --git a/sflphone-client-kde/src/conf/ConfigurationDialog.cpp b/sflphone-client-kde/src/conf/ConfigurationDialog.cpp
index 9ed7f64385..a6477354e1 100644
--- a/sflphone-client-kde/src/conf/ConfigurationDialog.cpp
+++ b/sflphone-client-kde/src/conf/ConfigurationDialog.cpp
@@ -102,12 +102,14 @@ void ConfigurationDialogKDE::updateButtons()
 void ConfigurationDialogKDE::applyCustomSettings()
 {
 	qDebug() << "applyCustomSettings";
-	dlgAccounts->applyCustomSettings();
 // 	if(hasChanged())
 // 	{
 		ConfigurationSkeleton::self()->writeConfig();
 // 	}
+	dlgAccounts->applyCustomSettings();
+	dlgAudio->applyCustomSettings();
 	updateButtons();
+	emit changesApplied();
 }
 
 void ConfigurationDialogKDE::reload()
@@ -115,5 +117,6 @@ void ConfigurationDialogKDE::reload()
 	qDebug() << "reload";
 	ConfigurationSkeleton::self()->readConfig();
 	updateWidgets();
+	applyCustomSettings();
 	updateButtons();
 }
diff --git a/sflphone-client-kde/src/conf/ConfigurationDialog.h b/sflphone-client-kde/src/conf/ConfigurationDialog.h
index 02ac0fe0dc..7fc0009b9c 100644
--- a/sflphone-client-kde/src/conf/ConfigurationDialog.h
+++ b/sflphone-client-kde/src/conf/ConfigurationDialog.h
@@ -103,6 +103,7 @@ private slots:
 
 signals:
 	void clearCallHistoryAsked();
+	void changesApplied();
 	
 };
 
diff --git a/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp b/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp
index 3f5e19935e..f73b8de984 100644
--- a/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp
+++ b/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp
@@ -27,7 +27,7 @@ ConfigurationSkeleton::ConfigurationSkeleton()
  : ConfigurationSkeletonBase()
 {
 	qDebug() << "Building ConfigurationSkeleton";
-	codecList = new CodecListModel();
+	codecListModel = new CodecListModel();
 	readConfig();
 	
 }
@@ -46,6 +46,11 @@ ConfigurationSkeleton::~ConfigurationSkeleton()
 {
 }
 
+CodecListModel * ConfigurationSkeleton::getCodecListModel()
+{
+	return codecListModel;
+}
+
 void ConfigurationSkeleton::readConfig()
 {
 	qDebug() << "\nReading config";
@@ -152,6 +157,7 @@ void ConfigurationSkeleton::readConfig()
 	
 	MapStringInt addressBookSettings = configurationManager.getAddressbookSettings().value();
 	qDebug() << "getAddressbookSettings() : " << addressBookSettings;
+	setEnableAddressBook(addressBookSettings[ADDRESSBOOK_ENABLE]);
 	setMaxResults(addressBookSettings[ADDRESSBOOK_MAX_RESULTS]);
 	setDisplayPhoto(addressBookSettings[ADDRESSBOOK_DISPLAY_CONTACT_PHOTO]);
 	setBusiness(addressBookSettings[ADDRESSBOOK_DISPLAY_BUSINESS]);
@@ -182,6 +188,8 @@ void ConfigurationSkeleton::writeConfig()
 	////General settings////
 	////////////////////////
 	
+	qDebug() << "Writing General settings";
+	
 	//Call history settings
 	if(enableHistory() != configurationManager.getHistoryEnabled()) configurationManager.setHistoryEnabled();
 	configurationManager.setHistoryLimit(historyMax());
@@ -193,6 +201,8 @@ void ConfigurationSkeleton::writeConfig()
 	////Display settings////
 	////////////////////////
 	
+	qDebug() << "Writing Display settings";
+	
 	//Notification settings
 	if(notifOnCalls() != configurationManager.getNotify()) configurationManager.setNotify();
 	if(notifOnMessages() != configurationManager.getMailNotify()) configurationManager.setMailNotify();
@@ -206,6 +216,8 @@ void ConfigurationSkeleton::writeConfig()
 	////Accounts settings////
 	/////////////////////////
 	
+	qDebug() << "Writing Accounts settings";
+	
 // 	saveAccountList();
 
 
@@ -217,6 +229,8 @@ void ConfigurationSkeleton::writeConfig()
 	////Audio settings////
 	//////////////////////
 	
+	qDebug() << "Writing Audio settings";
+	
 	//Audio Interface settings
 	int prevManager = configurationManager.getAudioManager();
 	int newManager = interface();
@@ -230,6 +244,7 @@ void ConfigurationSkeleton::writeConfig()
 	configurationManager.setRingtoneChoice(ringtone());
 
 	//codecs settings
+	qDebug() << "activeCodecList = " << activeCodecList();
 	configurationManager.setActiveCodecList(activeCodecList());
 	
 
@@ -253,6 +268,8 @@ void ConfigurationSkeleton::writeConfig()
 	////Record settings////
 	///////////////////////
 	
+	qDebug() << "Writing Record settings";
+	
 	QString destination = destinationFolder();
 	qDebug() << destination ;
 	configurationManager.setRecordPath(destination);
@@ -262,7 +279,10 @@ void ConfigurationSkeleton::writeConfig()
 	////Address Book settings////
 	/////////////////////////////
 	
+	qDebug() << "Writing Address Book settings";
+	
 	MapStringInt addressBookSettings = MapStringInt();
+	addressBookSettings[ADDRESSBOOK_ENABLE] = enableAddressBook();
 	addressBookSettings[ADDRESSBOOK_MAX_RESULTS] = maxResults();
 	addressBookSettings[ADDRESSBOOK_DISPLAY_CONTACT_PHOTO] = displayPhoto();
 	addressBookSettings[ADDRESSBOOK_DISPLAY_BUSINESS] = business();
@@ -274,6 +294,8 @@ void ConfigurationSkeleton::writeConfig()
 	///////Hooks settings////////
 	/////////////////////////////
 	
+	qDebug() << "Writing Hooks settings";
+	
 	MapStringString hooksSettings = MapStringString();
 	hooksSettings[HOOKS_ENABLED] = addPrefix() ? "1" : "0";
 	hooksSettings[HOOKS_ADD_PREFIX] = prepend();
@@ -288,10 +310,10 @@ void ConfigurationSkeleton::writeConfig()
 
 QStringList ConfigurationSkeleton::activeCodecList() const
 {
-	codecList->getActiveCodecList();
+	return codecListModel->getActiveCodecList();
 }
 
 void ConfigurationSkeleton::setActiveCodecList(const QStringList & v)
 {
-	codecList->setActiveCodecList(v);
+	codecListModel->setActiveCodecList(v);
 }
diff --git a/sflphone-client-kde/src/conf/ConfigurationSkeleton.h b/sflphone-client-kde/src/conf/ConfigurationSkeleton.h
index 73160c3d32..71386a5070 100644
--- a/sflphone-client-kde/src/conf/ConfigurationSkeleton.h
+++ b/sflphone-client-kde/src/conf/ConfigurationSkeleton.h
@@ -36,7 +36,7 @@ Q_OBJECT
 private:
 	static ConfigurationSkeleton * instance;
 	
-	CodecListModel * codecList;
+	CodecListModel * codecListModel;
 
 public:
 	ConfigurationSkeleton();
@@ -53,6 +53,8 @@ public:
 	QStringList activeCodecList() const;
 	void setActiveCodecList(const QStringList & v);
 	
+	CodecListModel * getCodecListModel();
+	
 // protected:
 
 // 	virtual void usrReadConfig();
diff --git a/sflphone-client-kde/src/conf/dlgaccounts.cpp b/sflphone-client-kde/src/conf/dlgaccounts.cpp
index a2efb52bbb..9179626e67 100644
--- a/sflphone-client-kde/src/conf/dlgaccounts.cpp
+++ b/sflphone-client-kde/src/conf/dlgaccounts.cpp
@@ -296,7 +296,7 @@ void DlgAccounts::on_toolButton_accountsApply_clicked()
 
 void DlgAccounts::applyCustomSettings()
 {
-	qDebug() << "applyCustomSettings";
+	qDebug() << "DlgAccounts::applyCustomSettings";
 	if(hasChanged())
 	{
 		toolButton_accountsApply->setEnabled(false);
diff --git a/sflphone-client-kde/src/conf/dlgaddressbookbase.ui b/sflphone-client-kde/src/conf/dlgaddressbookbase.ui
index 0048b16195..779a3dc570 100644
--- a/sflphone-client-kde/src/conf/dlgaddressbookbase.ui
+++ b/sflphone-client-kde/src/conf/dlgaddressbookbase.ui
@@ -14,16 +14,38 @@
    <string>Form</string>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QCheckBox" name="kcfg_enableAddressBook">
+     <property name="text">
+      <string>Enable address book</string>
+     </property>
+    </widget>
+   </item>
    <item>
     <widget class="QWidget" name="widget_configAddressBookGeneral" native="true">
+     <property name="enabled">
+      <bool>false</bool>
+     </property>
      <layout class="QVBoxLayout" name="verticalLayout_2">
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
       <item>
        <widget class="QWidget" name="widget_maxResults" native="true">
         <layout class="QHBoxLayout" name="horizontalLayout_4">
          <property name="spacing">
           <number>-1</number>
          </property>
-         <property name="margin">
+         <property name="leftMargin">
+          <number>0</number>
+         </property>
+         <property name="topMargin">
+          <number>5</number>
+         </property>
+         <property name="rightMargin">
+          <number>5</number>
+         </property>
+         <property name="bottomMargin">
           <number>5</number>
          </property>
          <item>
@@ -68,34 +90,34 @@
         </property>
        </widget>
       </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="groupBox_displayTypes">
-     <property name="title">
-      <string>Display phone numbers of these &amp;types :</string>
-     </property>
-     <layout class="QHBoxLayout" name="horizontalLayout_7">
-      <item>
-       <widget class="QCheckBox" name="kcfg_business">
-        <property name="text">
-         <string>&amp;Work</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QCheckBox" name="kcfg_mobile">
-        <property name="text">
-         <string>&amp;Mobile</string>
-        </property>
-       </widget>
-      </item>
       <item>
-       <widget class="QCheckBox" name="kcfg_home">
-        <property name="text">
-         <string>&amp;Home</string>
+       <widget class="QGroupBox" name="groupBox_displayTypes">
+        <property name="title">
+         <string>Display phone numbers of these &amp;types :</string>
         </property>
+        <layout class="QHBoxLayout" name="horizontalLayout_7">
+         <item>
+          <widget class="QCheckBox" name="kcfg_business">
+           <property name="text">
+            <string>&amp;Work</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QCheckBox" name="kcfg_mobile">
+           <property name="text">
+            <string>&amp;Mobile</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QCheckBox" name="kcfg_home">
+           <property name="text">
+            <string>&amp;Home</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
        </widget>
       </item>
      </layout>
@@ -132,12 +154,12 @@
    <slot>setValue(int)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>223</x>
-     <y>35</y>
+     <x>265</x>
+     <y>67</y>
     </hint>
     <hint type="destinationlabel">
-     <x>301</x>
-     <y>33</y>
+     <x>326</x>
+     <y>70</y>
     </hint>
    </hints>
   </connection>
@@ -148,12 +170,28 @@
    <slot>setValue(int)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>294</x>
-     <y>36</y>
+     <x>326</x>
+     <y>70</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>265</x>
+     <y>67</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>kcfg_enableAddressBook</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>widget_configAddressBookGeneral</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>92</x>
+     <y>25</y>
     </hint>
     <hint type="destinationlabel">
-     <x>215</x>
-     <y>33</y>
+     <x>91</x>
+     <y>39</y>
     </hint>
    </hints>
   </connection>
diff --git a/sflphone-client-kde/src/conf/dlgaudio.cpp b/sflphone-client-kde/src/conf/dlgaudio.cpp
index 449da93d6a..8a29233bca 100644
--- a/sflphone-client-kde/src/conf/dlgaudio.cpp
+++ b/sflphone-client-kde/src/conf/dlgaudio.cpp
@@ -38,25 +38,33 @@ DlgAudio::DlgAudio(KConfigDialog *parent)
 	KUrlRequester_ringtone->lineEdit()->setReadOnly(true); 
 	
 	codecTableHasChanged = false;
-	toolButton_codecUp->setIcon(KIcon("go-up"));
-	toolButton_codecDown->setIcon(KIcon("go-down"));
-	tableWidget_codecs->verticalHeader()->hide();
-	tableWidget_codecs->setSelectionBehavior(QAbstractItemView::SelectRows);
+// 	toolButton_codecUp->setIcon(KIcon("go-up"));
+// 	toolButton_codecDown->setIcon(KIcon("go-down"));
+// 	tableWidget_codecs->verticalHeader()->hide();
+// 	tableWidget_codecs->setSelectionBehavior(QAbstractItemView::SelectRows);
+	
+	ConfigurationSkeleton * skeleton = ConfigurationSkeleton::self();
+	CodecListModel * model = skeleton->getCodecListModel();
+	sortableCodecList->setModel(model);
 	
 	updateAlsaSettings();
 	connect(box_alsaPlugin,        SIGNAL(currentIndexChanged(int)),   
 	        parent,                SLOT(updateButtons()));
-	connect(tableWidget_codecs,    SIGNAL(itemChanged(QTableWidgetItem *)),
-	        this,                  SLOT(codecTableChanged()));
-	connect(tableWidget_codecs,    SIGNAL(currentCellChanged(int, int, int, int)),
-	        this,                  SLOT(updateCodecListCommands()));
-	connect(toolButton_codecUp,    SIGNAL(clicked()),
-	        this,                  SLOT(codecTableChanged()));
-	connect(toolButton_codecDown,  SIGNAL(clicked()),
-	        this,                  SLOT(codecTableChanged()));
+// 	connect(tableWidget_codecs,    SIGNAL(itemChanged(QTableWidgetItem *)),
+// 	        this,                  SLOT(codecTableChanged()));
+// 	connect(tableWidget_codecs,    SIGNAL(currentCellChanged(int, int, int, int)),
+// 	        this,                  SLOT(updateCodecListCommands()));
+// 	connect(toolButton_codecUp,    SIGNAL(clicked()),
+// 	        this,                  SLOT(codecTableChanged()));
+// 	connect(toolButton_codecDown,  SIGNAL(clicked()),
+// 	        this,                  SLOT(codecTableChanged()));
 	
 	connect(this,                  SIGNAL(updateButtons()),
 	        parent,                SLOT(updateButtons()));
+	
+	connect(sortableCodecList,     SIGNAL(dataChanged()),
+	        this,                  SLOT(codecTableChanged()));
+	        
 }
 
 
@@ -72,108 +80,108 @@ void DlgAudio::updateWidgets()
 	box_alsaPlugin->setCurrentIndex(box_alsaPlugin->findText(skeleton->alsaPlugin()));
 	
 	//codecList
-	qDebug() << "loadCodecs";
-	ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
-	QStringList codecList = configurationManager.getCodecList();
-	QStringList activeCodecList = skeleton->activeCodecList();
-	
-	qDebug() << "loadCodecs1";
-	#if QT_VERSION >= 0x040500
-	qDebug() << "loadCodecs1b";
-		activeCodecList.removeDuplicates();
-		
-	qDebug() << "loadCodecs1c";
-	#else
-	
-	qDebug() << "loadCodecs1d";
-   	for (int i = 0 ; i < activeCodecList.size() ; i++)
-		{
-			if(activeCodecList.lastIndexOf(activeCodecList[i]) != i || ! codecList.contains(activeCodecList[i]))
-			{
-				activeCodecList.removeAt(i);
-				i--;
-			}
-		}
-		
-	qDebug() << "loadCodecs1e";
-	#endif
-	
-	qDebug() << "loadCodecs2";
-	QStringList codecListToDisplay = activeCodecList;
-	qDebug() << "loadCodecs2b";
-	codecList.size();
-	
-	qDebug() << "loadCodecs2c";
-	for (int i=0 ; i<codecList.size() ; i++)
-	{
-		
-	qDebug() << "loadCodecs3";
-		if(! activeCodecList.contains(codecList[i]))
-		{
-			
-	qDebug() << "loadCodecs4";
-			codecListToDisplay << codecList[i];
-		}
-	}
-	
-	qDebug() << "loadCodecs5";
-	qDebug() << "codecList = " << codecList;
-	qDebug() << "activeCodecList" << activeCodecList;
-	qDebug() << "codecListToDisplay" << codecListToDisplay;
-	tableWidget_codecs->setRowCount(0);
-	for(int i=0 ; i<codecListToDisplay.size() ; i++)
-	{
-		bool ok;
-		qDebug() << codecListToDisplay[i];
-		QString payloadStr = QString(codecListToDisplay[i]);
-		int payload = payloadStr.toInt(&ok);
-		if(!ok)	
-			qDebug() << "The codec's payload sent by the configurationManager is not a number : " << codecListToDisplay[i];
-		else
-		{
-			QStringList details = configurationManager.getCodecDetails(payload);
-			tableWidget_codecs->insertRow(i);
-			tableWidget_codecs->setVerticalHeaderItem (i, new QTableWidgetItem());
-			tableWidget_codecs->verticalHeaderItem (i)->setText(payloadStr);
-			tableWidget_codecs->setItem(i,0,new QTableWidgetItem(""));
-			tableWidget_codecs->setItem(i,1,new QTableWidgetItem(details[CODEC_NAME]));
-			tableWidget_codecs->setItem(i,2,new QTableWidgetItem(details[CODEC_SAMPLE_RATE]));
-			tableWidget_codecs->setItem(i,3,new QTableWidgetItem(details[CODEC_BIT_RATE]));
-			tableWidget_codecs->setItem(i,4,new QTableWidgetItem(details[CODEC_BANDWIDTH]));
-			tableWidget_codecs->item(i,0)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled);
-			tableWidget_codecs->item(i,0)->setCheckState(activeCodecList.contains(codecListToDisplay[i]) ? Qt::Checked : Qt::Unchecked);
-			tableWidget_codecs->item(i,1)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
-			tableWidget_codecs->item(i,2)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
-			tableWidget_codecs->item(i,3)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
-			tableWidget_codecs->item(i,4)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
-
-			qDebug() << "Added to codecs : " << payloadStr << " , " << details[CODEC_NAME];
-		}
-	}
-	tableWidget_codecs->resizeColumnsToContents();
-	tableWidget_codecs->resizeRowsToContents();
+// 	qDebug() << "loadCodecs";
+// 	ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
+// 	QStringList codecList = configurationManager.getCodecList();
+// 	QStringList activeCodecList = skeleton->activeCodecList();
+// 	
+// 	qDebug() << "loadCodecs1";
+// 	#if QT_VERSION >= 0x040500
+// 	qDebug() << "loadCodecs1b";
+// 		activeCodecList.removeDuplicates();
+// 		
+// 	qDebug() << "loadCodecs1c";
+// 	#else
+// 	
+// 	qDebug() << "loadCodecs1d";
+//    	for (int i = 0 ; i < activeCodecList.size() ; i++)
+// 		{
+// 			if(activeCodecList.lastIndexOf(activeCodecList[i]) != i || ! codecList.contains(activeCodecList[i]))
+// 			{
+// 				activeCodecList.removeAt(i);
+// 				i--;
+// 			}
+// 		}
+// 		
+// 	qDebug() << "loadCodecs1e";
+// 	#endif
+// 	
+// 	qDebug() << "loadCodecs2";
+// 	QStringList codecListToDisplay = activeCodecList;
+// 	qDebug() << "loadCodecs2b";
+// 	codecList.size();
+// 	
+// 	qDebug() << "loadCodecs2c";
+// 	for (int i=0 ; i<codecList.size() ; i++)
+// 	{
+// 		
+// 	qDebug() << "loadCodecs3";
+// 		if(! activeCodecList.contains(codecList[i]))
+// 		{
+// 			
+// 	qDebug() << "loadCodecs4";
+// 			codecListToDisplay << codecList[i];
+// 		}
+// 	}
+// 	
+// 	qDebug() << "loadCodecs5";
+// 	qDebug() << "codecList = " << codecList;
+// 	qDebug() << "activeCodecList" << activeCodecList;
+// 	qDebug() << "codecListToDisplay" << codecListToDisplay;
+// 	tableWidget_codecs->setRowCount(0);
+// 	for(int i=0 ; i<codecListToDisplay.size() ; i++)
+// 	{
+// 		bool ok;
+// 		qDebug() << codecListToDisplay[i];
+// 		QString payloadStr = QString(codecListToDisplay[i]);
+// 		int payload = payloadStr.toInt(&ok);
+// 		if(!ok)	
+// 			qDebug() << "The codec's payload sent by the configurationManager is not a number : " << codecListToDisplay[i];
+// 		else
+// 		{
+// 			QStringList details = configurationManager.getCodecDetails(payload);
+// 			tableWidget_codecs->insertRow(i);
+// 			tableWidget_codecs->setVerticalHeaderItem (i, new QTableWidgetItem());
+// 			tableWidget_codecs->verticalHeaderItem (i)->setText(payloadStr);
+// 			tableWidget_codecs->setItem(i,0,new QTableWidgetItem(""));
+// 			tableWidget_codecs->setItem(i,1,new QTableWidgetItem(details[CODEC_NAME]));
+// 			tableWidget_codecs->setItem(i,2,new QTableWidgetItem(details[CODEC_SAMPLE_RATE]));
+// 			tableWidget_codecs->setItem(i,3,new QTableWidgetItem(details[CODEC_BIT_RATE]));
+// 			tableWidget_codecs->setItem(i,4,new QTableWidgetItem(details[CODEC_BANDWIDTH]));
+// 			tableWidget_codecs->item(i,0)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled);
+// 			tableWidget_codecs->item(i,0)->setCheckState(activeCodecList.contains(codecListToDisplay[i]) ? Qt::Checked : Qt::Unchecked);
+// 			tableWidget_codecs->item(i,1)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+// 			tableWidget_codecs->item(i,2)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+// 			tableWidget_codecs->item(i,3)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+// 			tableWidget_codecs->item(i,4)->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
+// 
+// 			qDebug() << "Added to codecs : " << payloadStr << " , " << details[CODEC_NAME];
+// 		}
+// 	}
+// 	tableWidget_codecs->resizeColumnsToContents();
+// 	tableWidget_codecs->resizeRowsToContents();
 	codecTableHasChanged = false;
 }
 
 
 void DlgAudio::updateSettings()
 {
-// 	qDebug() << "DlgAudio::updateSettings";
+	qDebug() << "DlgAudio::updateSettings";
 	//alsaPlugin
 	ConfigurationSkeleton * skeleton = ConfigurationSkeleton::self();
 	skeleton->setAlsaPlugin(box_alsaPlugin->currentText());
 	
 	//codecList
-	QStringList activeCodecs;
-	for(int i = 0 ; i < tableWidget_codecs->rowCount() ; i++)
-	{
-		if(tableWidget_codecs->item(i,0)->checkState() == Qt::Checked)
-		{
-			activeCodecs << tableWidget_codecs->verticalHeaderItem(i)->text();
-		}
-	}
-	qDebug() << "Calling setActiveCodecList with list : " << activeCodecs ;
-	skeleton->setActiveCodecList(activeCodecs);
+// 	QStringList activeCodecs;
+// 	for(int i = 0 ; i < tableWidget_codecs->rowCount() ; i++)
+// 	{
+// 		if(tableWidget_codecs->item(i,0)->checkState() == Qt::Checked)
+// 		{
+// 			activeCodecs << tableWidget_codecs->verticalHeaderItem(i)->text();
+// 		}
+// 	}
+// 	qDebug() << "Calling setActiveCodecList with list : " << activeCodecs ;
+// 	skeleton->setActiveCodecList(activeCodecs);
 	codecTableHasChanged = false;
 }
 
@@ -225,69 +233,75 @@ void DlgAudio::updateAlsaSettings()
 	}
 }
 
-void DlgAudio::updateCodecListCommands()
-{
-	qDebug() << "updateCodecListCommands";
-	bool buttonsEnabled[2] = {true,true};
-	if(! tableWidget_codecs->currentItem())
-	{
-		buttonsEnabled[0] = false;
-		buttonsEnabled[1] = false;
-	}
-	else
-	{
-		if(tableWidget_codecs->currentRow() == 0)
-		{
-			buttonsEnabled[0] = false;
-		}
-		if(tableWidget_codecs->currentRow() == tableWidget_codecs->rowCount() - 1)
-		{
-			buttonsEnabled[1] = false;
-		}
-	}
-	toolButton_codecUp->setEnabled(buttonsEnabled[0]);
-	toolButton_codecDown->setEnabled(buttonsEnabled[1]);
-}
+// void DlgAudio::updateCodecListCommands()
+// {
+// 	qDebug() << "updateCodecListCommands";
+// 	bool buttonsEnabled[2] = {true,true};
+// 	if(! tableWidget_codecs->currentItem())
+// 	{
+// 		buttonsEnabled[0] = false;
+// 		buttonsEnabled[1] = false;
+// 	}
+// 	else
+// 	{
+// 		if(tableWidget_codecs->currentRow() == 0)
+// 		{
+// 			buttonsEnabled[0] = false;
+// 		}
+// 		if(tableWidget_codecs->currentRow() == tableWidget_codecs->rowCount() - 1)
+// 		{
+// 			buttonsEnabled[1] = false;
+// 		}
+// 	}
+// 	toolButton_codecUp->setEnabled(buttonsEnabled[0]);
+// 	toolButton_codecDown->setEnabled(buttonsEnabled[1]);
+// }
 
 
-void DlgAudio::on_toolButton_codecUp_clicked()
-{
-	qDebug() << "on_toolButton_codecUp_clicked";
-	int currentCol = tableWidget_codecs->currentColumn();
-	int currentRow = tableWidget_codecs->currentRow();
-	int nbCol = tableWidget_codecs->columnCount();
-	for(int i = 0 ; i < nbCol ; i++)
-	{
-		QTableWidgetItem * item1 = tableWidget_codecs->takeItem(currentRow, i);
-		QTableWidgetItem * item2 = tableWidget_codecs->takeItem(currentRow - 1, i);
-		tableWidget_codecs->setItem(currentRow - 1, i , item1);
-		tableWidget_codecs->setItem(currentRow, i , item2);
-	}
-	QTableWidgetItem * item1 = tableWidget_codecs->takeVerticalHeaderItem(currentRow);
-	QTableWidgetItem * item2 = tableWidget_codecs->takeVerticalHeaderItem(currentRow - 1);
-	tableWidget_codecs->setVerticalHeaderItem(currentRow - 1, item1);
-	tableWidget_codecs->setVerticalHeaderItem(currentRow, item2);
-	tableWidget_codecs->setCurrentCell(currentRow - 1, currentCol);
-}
+// void DlgAudio::on_toolButton_codecUp_clicked()
+// {
+// 	qDebug() << "on_toolButton_codecUp_clicked";
+// 	int currentCol = tableWidget_codecs->currentColumn();
+// 	int currentRow = tableWidget_codecs->currentRow();
+// 	int nbCol = tableWidget_codecs->columnCount();
+// 	for(int i = 0 ; i < nbCol ; i++)
+// 	{
+// 		QTableWidgetItem * item1 = tableWidget_codecs->takeItem(currentRow, i);
+// 		QTableWidgetItem * item2 = tableWidget_codecs->takeItem(currentRow - 1, i);
+// 		tableWidget_codecs->setItem(currentRow - 1, i , item1);
+// 		tableWidget_codecs->setItem(currentRow, i , item2);
+// 	}
+// 	QTableWidgetItem * item1 = tableWidget_codecs->takeVerticalHeaderItem(currentRow);
+// 	QTableWidgetItem * item2 = tableWidget_codecs->takeVerticalHeaderItem(currentRow - 1);
+// 	tableWidget_codecs->setVerticalHeaderItem(currentRow - 1, item1);
+// 	tableWidget_codecs->setVerticalHeaderItem(currentRow, item2);
+// 	tableWidget_codecs->setCurrentCell(currentRow - 1, currentCol);
+// }
+// 
+// void DlgAudio::on_toolButton_codecDown_clicked()
+// {
+// 	qDebug() << "on_toolButton_codecDown_clicked";
+// 	int currentCol = tableWidget_codecs->currentColumn();
+// 	int currentRow = tableWidget_codecs->currentRow();
+// 	int nbCol = tableWidget_codecs->columnCount();
+// 	for(int i = 0 ; i < nbCol ; i++)
+// 	{
+// 		QTableWidgetItem * item1 = tableWidget_codecs->takeItem(currentRow, i);
+// 		QTableWidgetItem * item2 = tableWidget_codecs->takeItem(currentRow + 1, i);
+// 		tableWidget_codecs->setItem(currentRow + 1, i , item1);
+// 		tableWidget_codecs->setItem(currentRow, i , item2);
+// 	}
+// 	QTableWidgetItem * item1 = tableWidget_codecs->takeVerticalHeaderItem(currentRow);
+// 	QTableWidgetItem * item2 = tableWidget_codecs->takeVerticalHeaderItem(currentRow + 1);
+// 	tableWidget_codecs->setVerticalHeaderItem(currentRow + 1, item1);
+// 	tableWidget_codecs->setVerticalHeaderItem(currentRow, item2);
+// 	tableWidget_codecs->setCurrentCell(currentRow + 1, currentCol);
+// }
 
-void DlgAudio::on_toolButton_codecDown_clicked()
+
+void DlgAudio::applyCustomSettings()
 {
-	qDebug() << "on_toolButton_codecDown_clicked";
-	int currentCol = tableWidget_codecs->currentColumn();
-	int currentRow = tableWidget_codecs->currentRow();
-	int nbCol = tableWidget_codecs->columnCount();
-	for(int i = 0 ; i < nbCol ; i++)
-	{
-		QTableWidgetItem * item1 = tableWidget_codecs->takeItem(currentRow, i);
-		QTableWidgetItem * item2 = tableWidget_codecs->takeItem(currentRow + 1, i);
-		tableWidget_codecs->setItem(currentRow + 1, i , item1);
-		tableWidget_codecs->setItem(currentRow, i , item2);
-	}
-	QTableWidgetItem * item1 = tableWidget_codecs->takeVerticalHeaderItem(currentRow);
-	QTableWidgetItem * item2 = tableWidget_codecs->takeVerticalHeaderItem(currentRow + 1);
-	tableWidget_codecs->setVerticalHeaderItem(currentRow + 1, item1);
-	tableWidget_codecs->setVerticalHeaderItem(currentRow, item2);
-	tableWidget_codecs->setCurrentCell(currentRow + 1, currentCol);
+	codecTableHasChanged = false;
 }
 
 
diff --git a/sflphone-client-kde/src/conf/dlgaudio.h b/sflphone-client-kde/src/conf/dlgaudio.h
index cad1b9ee65..74fe3db72b 100644
--- a/sflphone-client-kde/src/conf/dlgaudio.h
+++ b/sflphone-client-kde/src/conf/dlgaudio.h
@@ -46,11 +46,12 @@ public slots:
 	void updateSettings();
 	bool hasChanged();
 	void updateAlsaSettings();
+	void applyCustomSettings();
 	
 private slots:
-	void updateCodecListCommands();
-	void on_toolButton_codecUp_clicked();
-	void on_toolButton_codecDown_clicked();
+// 	void updateCodecListCommands();
+// 	void on_toolButton_codecUp_clicked();
+// 	void on_toolButton_codecDown_clicked();
 	void codecTableChanged();
 	
 signals:
diff --git a/sflphone-client-kde/src/conf/dlgaudiobase.ui b/sflphone-client-kde/src/conf/dlgaudiobase.ui
index 3679d8c79d..a73315057e 100644
--- a/sflphone-client-kde/src/conf/dlgaudiobase.ui
+++ b/sflphone-client-kde/src/conf/dlgaudiobase.ui
@@ -95,87 +95,7 @@
        <number>2</number>
       </property>
       <item>
-       <widget class="QTableWidget" name="tableWidget_codecs">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="minimumSize">
-         <size>
-          <width>0</width>
-          <height>100</height>
-         </size>
-        </property>
-        <property name="frameShape">
-         <enum>QFrame::StyledPanel</enum>
-        </property>
-        <property name="frameShadow">
-         <enum>QFrame::Sunken</enum>
-        </property>
-        <property name="verticalScrollBarPolicy">
-         <enum>Qt::ScrollBarAsNeeded</enum>
-        </property>
-        <property name="textElideMode">
-         <enum>Qt::ElideRight</enum>
-        </property>
-        <property name="verticalScrollMode">
-         <enum>QAbstractItemView::ScrollPerPixel</enum>
-        </property>
-        <property name="horizontalScrollMode">
-         <enum>QAbstractItemView::ScrollPerPixel</enum>
-        </property>
-        <column>
-         <property name="text">
-          <string>Active</string>
-         </property>
-        </column>
-        <column>
-         <property name="text">
-          <string>Name</string>
-         </property>
-        </column>
-        <column>
-         <property name="text">
-          <string>Frequency</string>
-         </property>
-        </column>
-        <column>
-         <property name="text">
-          <string>Bitrate</string>
-         </property>
-        </column>
-        <column>
-         <property name="text">
-          <string>Bandwidth</string>
-         </property>
-        </column>
-       </widget>
-      </item>
-      <item>
-       <layout class="QVBoxLayout" name="verticalLayout_codecsOrder">
-        <property name="leftMargin">
-         <number>0</number>
-        </property>
-        <property name="rightMargin">
-         <number>0</number>
-        </property>
-        <item>
-         <widget class="QToolButton" name="toolButton_codecUp">
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QToolButton" name="toolButton_codecDown">
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-       </layout>
+       <widget class="SortableCodecListWidget" name="sortableCodecList" native="true"/>
       </item>
      </layout>
     </widget>
@@ -311,6 +231,12 @@
    <extends>QFrame</extends>
    <header>kurlrequester.h</header>
   </customwidget>
+  <customwidget>
+   <class>SortableCodecListWidget</class>
+   <extends>QWidget</extends>
+   <header>SortableCodecListWidget.h</header>
+   <container>1</container>
+  </customwidget>
  </customwidgets>
  <resources/>
  <connections>
diff --git a/sflphone-client-kde/src/conf/dlgrecord.cpp b/sflphone-client-kde/src/conf/dlgrecord.cpp
index 3c97898f5c..49181a1b63 100644
--- a/sflphone-client-kde/src/conf/dlgrecord.cpp
+++ b/sflphone-client-kde/src/conf/dlgrecord.cpp
@@ -29,6 +29,7 @@ DlgRecord::DlgRecord(QWidget *parent)
 	KUrlRequester_destinationFolder->setMode(KFile::Directory|KFile::ExistingOnly|KFile::LocalOnly);
 	KUrlRequester_destinationFolder->setUrl(KUrl(QDir::home().path()));
 	KUrlRequester_destinationFolder->lineEdit()->setObjectName("kcfg_destinationFolder"); 
+	KUrlRequester_destinationFolder->lineEdit()->setReadOnly(true); 
 }
 
 
diff --git a/sflphone-client-kde/src/conf/sflphone-client-kde.kcfg b/sflphone-client-kde/src/conf/sflphone-client-kde.kcfg
index f8b904e1e6..11d1fc817d 100644
--- a/sflphone-client-kde/src/conf/sflphone-client-kde.kcfg
+++ b/sflphone-client-kde/src/conf/sflphone-client-kde.kcfg
@@ -2,7 +2,10 @@
 <!DOCTYPE kcfg SYSTEM "http://www.kde.org/standards/kcfg/1.0/kcfg.dtd">
 <kcfg> 
   <kcfgfile name="ConfigDialogKDE" /> 
-  <group name="main"> 
+  <group name="main">
+
+    <!-- General Settings -->
+       
     <entry name="SIPPort" type="Int"> 
       <label>Defines the port that will be used for SIP communication.</label> 
       <min> 1025 </min>
@@ -18,6 +21,9 @@
       <max> 99 </max>
       <default> 30 </default> 
     </entry> 
+    
+    <!-- Display Settings -->
+    
     <entry name="notifOnCalls" type="Bool">
     	<label>Defines whether user should be notified when receiving a call.</label>
     </entry>
@@ -30,6 +36,9 @@
     <entry name="displayOnCalls" type="Bool">
     	<label>Defines whether the main window should be displayed when receiving a message.</label>
     </entry>
+    
+    <!-- Accounts Settings -->
+    
     <!--
     <entry name="accountList" type="StringList">
     	<label>Defines the list of accounts to register, in order of preference (first registered used by default).</label>
@@ -41,6 +50,9 @@
     <entry name="stunServer" type="String">
     	<label>Defines the Stun server to use.</label>
     </entry> 
+    
+    <!-- Audio Settings -->
+    
     <entry name="interface" type="Enum">
     	<label>Defines the Stun server to use.</label>
     	<choices>
@@ -71,6 +83,12 @@
     <entry name="pulseAudioVolumeAlter" type="Bool">
     	<label>Defines whether pulse audio can mute other applications during a call.</label>
     </entry>
+    
+    <!-- Address Book Settings -->
+    
+    <entry name="enableAddressBook" type="Bool">
+    	<label>Defines whether the search in KDE Address Book is enabled</label>
+    </entry>
     <entry name="maxResults" type="Int">
     	<label>Defines the max number of contacts to display during a search in address book.</label>
     </entry>
@@ -86,9 +104,15 @@
     <entry name="home" type="Bool">
     	<label>Defines whether to display personnal phone numbers.</label>
     </entry>
+    
+    <!-- Record Settings -->
+    
     <entry name="destinationFolder" type="Path">
     	<label>Defines the destination directory for call recordings.</label>
     </entry>
+    
+    <!-- Hooks Settings -->
+    
     <entry name="enableHooksSIP" type="Bool">
     	<label>Defines whether to enable hooks for SIP accounts.</label>
     </entry>
diff --git a/sflphone-client-kde/src/main.cpp b/sflphone-client-kde/src/main.cpp
index 75e6b85c14..c6de33b710 100644
--- a/sflphone-client-kde/src/main.cpp
+++ b/sflphone-client-kde/src/main.cpp
@@ -55,21 +55,11 @@ int main(int argc, char **argv)
 		
 		//configuration dbus
 		registerCommTypes();
-		
 		SFLPhone * fenetre = new SFLPhone();
 
 		InstanceInterface & instance = InstanceInterfaceSingleton::getInstance();
 		instance.Register(getpid(), APP_NAME);
 		
-// 		QTableView * table = new QTableView();
-// 		QListView * table = new QListView();
-// 		CodecListModel * model = new CodecListModel();
-// 		model->setCodecs(QList<Codec * >());
-// 		table->setModel(model);
-// 		table->resizeColumnsToContents();
-// 		table->resizeRowsToContents();
-// 		table->show();
-// 		model->setActiveCodecList(QStringList("8"));
 // 		SortableCodecListWidget * cl = new SortableCodecListWidget();
 // 		cl->show();
 	
diff --git a/sflphone-client-kde/src/sflphone_const.h b/sflphone-client-kde/src/sflphone_const.h
index aa08c6e4e0..d7810672e5 100644
--- a/sflphone-client-kde/src/sflphone_const.h
+++ b/sflphone-client-kde/src/sflphone_const.h
@@ -184,6 +184,7 @@
 #define ADDRESSBOOK_DISPLAY_BUSINESS      "ADDRESSBOOK_DISPLAY_PHONE_BUSINESS"
 #define ADDRESSBOOK_DISPLAY_HOME          "ADDRESSBOOK_DISPLAY_PHONE_HOME"
 #define ADDRESSBOOK_DISPLAY_MOBILE        "ADDRESSBOOK_DISPLAY_PHONE_MOBILE"
+#define ADDRESSBOOK_ENABLE                "ADDRESSBOOK_ENABLE"
 
 /** Hooks settings */
 #define HOOKS_ADD_PREFIX                  "PHONE_NUMBER_HOOK_ADD_PREFIX"
@@ -208,38 +209,4 @@
 
 
 
-/** Error while opening capture device */
-#define ALSA_CAPTURE_DEVICE	            0x0001
-/** Error while opening playback device */
-#define ALSA_PLAYBACK_DEVICE	            0x0010
-/** Error pulseaudio */
-#define PULSEAUDIO_NOT_RUNNING            0x0100
-
-/** Tone to play when no voice mails */
-#define TONE_WITHOUT_MESSAGE              0
-/** Tone to play when voice mails */
-#define TONE_WITH_MESSAGE                 1
-
-
-/** Notification levels */
-#define __NOTIF_LEVEL_MIN                 0
-#define __NOTIF_LEVEL_MED                 1
-#define __NOTIF_LEVEL_HIGH                2
-
-/** Messages ID for the status bar - Incoming calls */
-#define __MSG_INCOMING_CALL               0
-/** Messages ID for the status bar - Calling */
-#define __MSG_CALLING	                  1
-/** Messages ID for the status bar - Voice mails  notification */
-#define __MSG_VOICE_MAILS                 2
-/** Messages ID for the status bar - Current account */
-#define __MSG_ACCOUNT_DEFAULT             3
-
-/** Desktop notifications - Time before to close the notification*/
-#define __TIMEOUT_MODE                    "default"
-/** Desktop notifications - Time before to close the notification*/
-#define __TIMEOUT_TIME                    18000       // 30 secondes
-
-
-
 #endif
diff --git a/sflphone-client-kde/src/sflphone_kdeview.cpp b/sflphone-client-kde/src/sflphone_kdeview.cpp
index b40fde0d20..d15099c48f 100644
--- a/sflphone-client-kde/src/sflphone_kdeview.cpp
+++ b/sflphone-client-kde/src/sflphone_kdeview.cpp
@@ -105,13 +105,16 @@ sflphone_kdeView::sflphone_kdeView(QWidget *parent)
 	connect(configDialog, SIGNAL(clearCallHistoryAsked()),
 	        callList,     SLOT(clearHistory()));
 	        
+	connect(configDialog, SIGNAL(changesApplied()),
+	        this,         SLOT(loadWindow()));
+	        
 	connect(accountList, SIGNAL(accountListUpdated()),
-	        this,     SLOT(updateStatusMessage()));
+	        this,        SLOT(updateStatusMessage()));
 	connect(accountList, SIGNAL(accountListUpdated()),
-	        this,     SLOT(updateWindowCallState()));
+	        this,        SLOT(updateWindowCallState()));
 	        
 	accountList->updateAccounts();
-	        
+	
 	QPalette pal = QPalette(palette());
 	pal.setColor(QPalette::AlternateBase, Qt::lightGray);
 	setPalette(pal);
@@ -148,6 +151,9 @@ void sflphone_kdeView::loadWindow()
 	updateVolumeControls();
 	updateDialpad();
 	updateSearchHistory();
+	updateAddressBookButton();
+	updateAddressBook();
+	if(! isAddressBookEnabled() && stackedWidget_screen->currentWidget() == page_addressBook) stackedWidget_screen->setCurrentWidget(page_callList);
 }
 
 
@@ -498,7 +504,7 @@ void sflphone_kdeView::updateWindowCallState()
 					buttonIconFiles[0] = ICON_ACCEPT;
 					buttonIconFiles[1] = ICON_REFUSE;
 					actionTexts[0] = ACTION_LABEL_ACCEPT;
-					actionTexts[0] = ACTION_LABEL_REFUSE;
+					actionTexts[1] = ACTION_LABEL_REFUSE;
 					break;
 				case CALL_STATE_RINGING:
 					qDebug() << "Reached CALL_STATE_RINGING with call " << (*callList)[item]->getCallId();
@@ -684,22 +690,41 @@ void sflphone_kdeView::updateAddressBook()
 		QListWidgetItem * item = listWidget_addressBook->takeItem(0);
 		qDebug() << "take item " << item->text();
 	}
-	QString textSearched = lineEdit_addressBook->text();
-	if(textSearched.isEmpty())
+	if(!isAddressBookEnabled())
 	{
+		lineEdit_addressBook->setText(i18n("Address book has been disabled"));
+		lineEdit_addressBook->setEnabled(false);
 		label_addressBookFull->setVisible(false);
-		return;
 	}
-	bool full = false;
-	QVector<Contact *> contactsFound = findContactsInKAddressBook(textSearched, full);
-	qDebug() << "Full : " << full;
-	label_addressBookFull->setVisible(full);
-	for(int i = 0 ; i < contactsFound.size() ; i++)
+	else
 	{
-		Contact * contact = contactsFound[i];
-		addContactToContactList(contact);
+		if(loadAddressBook())
+		{
+			QString textSearched = lineEdit_addressBook->text();
+			if(textSearched.isEmpty())
+			{
+				label_addressBookFull->setVisible(false);
+				return;
+			}
+			bool full = false;
+			QVector<Contact *> contactsFound = findContactsInKAddressBook(textSearched, full);
+			qDebug() << "Full : " << full;
+			label_addressBookFull->setVisible(full);
+			for(int i = 0 ; i < contactsFound.size() ; i++)
+			{
+				Contact * contact = contactsFound[i];
+				addContactToContactList(contact);
+			}
+			alternateColors(listWidget_addressBook);
+		}
+		else
+		{
+			lineEdit_addressBook->setText(i18n("Address book loading..."));
+			lineEdit_addressBook->setEnabled(false);
+			label_addressBookFull->setVisible(false);
+		}
 	}
-	alternateColors(listWidget_addressBook);
+	
 }
 
 void sflphone_kdeView::alternateColors(QListWidget * listWidget)
@@ -722,8 +747,7 @@ QVector<Contact *> sflphone_kdeView::findContactsInKAddressBook(QString textSear
 	int maxResults = addressBookSettings[ADDRESSBOOK_MAX_RESULTS];
 	int typesDisplayed = phoneNumberTypesDisplayed();
 	bool displayPhoto = addressBookSettings[ADDRESSBOOK_DISPLAY_CONTACT_PHOTO];
-	
-	AddressBook * ab = KABC::StdAddressBook::self();
+	AddressBook * ab = KABC::StdAddressBook::self(true);
 	QVector<Contact *> results = QVector<Contact *>();
 	AddressBook::Iterator it;
 	full = false;
@@ -1433,6 +1457,42 @@ void sflphone_kdeView::on1_volumeChanged(const QString &device, double value)
 		updateVolumeBar();
 }
 
+void sflphone_kdeView::enableAddressBook()
+{
+	qDebug() << "\nenableAddressBook\n";
+	lineEdit_addressBook->clear();
+	lineEdit_addressBook->setEnabled(true);
+}
+
+bool sflphone_kdeView::loadAddressBook()
+{
+	qDebug() << "loadAddressBook";
+	AddressBook * ab = StdAddressBook::self(true);
+	if(ab->loadingHasFinished())
+	{
+		return true;
+	}
+	else
+	{
+		connect(ab,         SIGNAL(addressBookChanged(AddressBook *)),
+		        this,       SLOT(enableAddressBook()));
+		return false;
+	}
+}
+
 
+void sflphone_kdeView::updateAddressBookButton()
+{
+	action_addressBook->setVisible(isAddressBookEnabled());
+}
+
+
+
+bool sflphone_kdeView::isAddressBookEnabled()
+{
+	ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
+	MapStringInt addressBookSettings = configurationManager.getAddressbookSettings().value();
+	return addressBookSettings[ADDRESSBOOK_ENABLE];
+}
 
 #include "sflphone_kdeview.moc"
diff --git a/sflphone-client-kde/src/sflphone_kdeview.h b/sflphone-client-kde/src/sflphone_kdeview.h
index ddcc22354e..ea33ea4f8e 100644
--- a/sflphone-client-kde/src/sflphone_kdeview.h
+++ b/sflphone-client-kde/src/sflphone_kdeview.h
@@ -81,11 +81,6 @@ public:
 	//Constructors & Destructors
 	sflphone_kdeView(QWidget *parent);
 	virtual ~sflphone_kdeView();
-	/**
-	 * Called at construction. Updates all the display
-	 * according to the settings.
-	 */
-	void loadWindow();
 	
 	//Getters
 	/**
@@ -118,6 +113,12 @@ public:
 	*/
 	int phoneNumberTypesDisplayed();
 	
+	/**
+	 * 
+	 * @return true if the address book is enabled in config
+	 */
+	bool isAddressBookEnabled();
+	
 	//Updates
 	QVector<Contact *> findContactsInKAddressBook(QString textSearched, bool & full);
 	
@@ -227,7 +228,32 @@ private slots:
 	void updateDialpad();
 	
 public slots:
+	/**
+	 * Updates all the display
+	 * according to the settings.
+	 */
+	void loadWindow();
+	
+	
 	void updateStatusMessage();
+	/**
+	 *   Enable the address book search line edit.
+	 *   To be called once the address book loading has finished.
+	 */
+	void enableAddressBook();
+	/**
+	 *   Loads the address book asynchronously.
+	 *   Calls enableAddressBook() once the address book
+	 *   loading has finished if it is not allready loaded.
+	 * @return true if address book has finished loading
+	 */
+	bool loadAddressBook();
+	
+	/**
+	 *   choose to enable/disable the address book button
+	 *   according to the configuration's setting.
+	 */
+	void updateAddressBookButton();
 	
 	
 	virtual void keyPressEvent(QKeyEvent *event)
diff --git a/sflphone-client-kde/src/ui/sflphone_kdeview_base.ui b/sflphone-client-kde/src/ui/sflphone_kdeview_base.ui
index b739d849ae..831907f407 100644
--- a/sflphone-client-kde/src/ui/sflphone_kdeview_base.ui
+++ b/sflphone-client-kde/src/ui/sflphone_kdeview_base.ui
@@ -66,6 +66,12 @@
        </item>
        <item>
         <widget class="KLineEdit" name="lineEdit_addressBook">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="text">
+          <string>Address book loading...</string>
+         </property>
          <property name="showClearButton" stdset="0">
           <bool>true</bool>
          </property>
-- 
GitLab