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 &types :</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_7"> - <item> - <widget class="QCheckBox" name="kcfg_business"> - <property name="text"> - <string>&Work</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="kcfg_mobile"> - <property name="text"> - <string>&Mobile</string> - </property> - </widget> - </item> <item> - <widget class="QCheckBox" name="kcfg_home"> - <property name="text"> - <string>&Home</string> + <widget class="QGroupBox" name="groupBox_displayTypes"> + <property name="title"> + <string>Display phone numbers of these &types :</string> </property> + <layout class="QHBoxLayout" name="horizontalLayout_7"> + <item> + <widget class="QCheckBox" name="kcfg_business"> + <property name="text"> + <string>&Work</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_mobile"> + <property name="text"> + <string>&Mobile</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_home"> + <property name="text"> + <string>&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