diff --git a/sflphone-client-gnome/VERSION b/sflphone-client-gnome/VERSION index 517317e95fb23bda5f1c305dfaa84bfa8021a824..bc440692c3b559a2d3fe749ce99f8993b879252f 100644 --- a/sflphone-client-gnome/VERSION +++ b/sflphone-client-gnome/VERSION @@ -1 +1 @@ -0.9.6~beta +0.9.6~rc1 diff --git a/sflphone-client-kde/po/de/sflphone-client-kde.po b/sflphone-client-kde/po/de/sflphone-client-kde.po index 3d6e2576f7993bb099964f17398d6374a6e06d48..3df5026271a9b97e1a3e808718e6853df3493bec 100644 --- a/sflphone-client-kde/po/de/sflphone-client-kde.po +++ b/sflphone-client-kde/po/de/sflphone-client-kde.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-03 13:49-0400\n" +"POT-Creation-Date: 2009-07-08 15:18-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" @@ -222,22 +222,22 @@ msgstr "" msgid "(C) 2009 Savoir-faire Linux" msgstr "" -#: ../src/main.cpp:43 +#: ../src/main.cpp:42 msgid "Jérémy Quentin" msgstr "" -#: ../src/main.cpp:45 +#: ../src/main.cpp:43 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "" -#: ../src/main.cpp:45 +#: ../src/main.cpp:43 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 +#: ../src/SFLPhone.cpp:62 ../src/sflphone_kdeview.cpp:1066 +#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1076 msgid "SFLphone" msgstr "" @@ -257,28 +257,28 @@ msgstr "" msgid "Click to accept or refuse it." msgstr "" -#: ../src/sflphone_kdeview.cpp:864 +#: ../src/sflphone_kdeview.cpp:883 msgid "No account registered" msgstr "" -#: ../src/sflphone_kdeview.cpp:868 +#: ../src/sflphone_kdeview.cpp:887 msgid "Using account" msgstr "" -#: ../src/sflphone_kdeview.cpp:1047 +#: ../src/sflphone_kdeview.cpp:1066 msgid "Main screen" msgstr "" -#: ../src/sflphone_kdeview.cpp:1052 ../build/src/ui_dlggeneralbase.h:165 +#: ../src/sflphone_kdeview.cpp:1071 ../build/src/ui_dlggeneralbase.h:165 msgid "Call history" msgstr "" -#: ../src/sflphone_kdeview.cpp:1057 +#: ../src/sflphone_kdeview.cpp:1076 #: ../build/src/ui_sflphone_kdeview_base.h:407 msgid "Address book" msgstr "" -#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1132 +#: ../src/sflphone_kdeview.cpp:1090 ../src/sflphone_kdeview.cpp:1151 msgid "Edit before call" msgstr "" @@ -352,7 +352,7 @@ msgid "Hooks" msgstr "" #: ../build/src/ui_dlgaccountsbase.h:321 -#: ../build/src/ui_dlgaddressbookbase.h:142 ../build/src/ui_dlgaudiobase.h:262 +#: ../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 @@ -476,56 +476,52 @@ msgstr "" msgid "&Home" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:264 +#: ../build/src/ui_dlgaudiobase.h:265 msgid "Audio device" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:267 +#: ../build/src/ui_dlgaudiobase.h:268 msgid "ALSA" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:268 +#: ../build/src/ui_dlgaudiobase.h:269 msgid "PulseAudio" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:270 +#: ../build/src/ui_dlgaudiobase.h:271 msgid "Enable ringtones" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:271 -msgid "&Codecs" +#: ../build/src/ui_dlgaudiobase.h:272 +msgid "*.ul *.au *.wav" msgstr "" #: ../build/src/ui_dlgaudiobase.h:273 -msgid "Active" +msgid "&Codecs" msgstr "" #: ../build/src/ui_dlgaudiobase.h:275 -msgid "Name" +msgid "Active" msgstr "" #: ../build/src/ui_dlgaudiobase.h:277 -msgid "Frequency" +msgid "Name" msgstr "" #: ../build/src/ui_dlgaudiobase.h:279 -msgid "Bitrate" +msgid "Frequency" msgstr "" #: ../build/src/ui_dlgaudiobase.h:281 -msgid "Bandwidth" -msgstr "" - -#: ../build/src/ui_dlgaudiobase.h:284 -msgid "ALSA settings" +msgid "Bitrate" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:285 -msgid "In" +#: ../build/src/ui_dlgaudiobase.h:283 +msgid "Bandwidth" msgstr "" #: ../build/src/ui_dlgaudiobase.h:286 -msgid "Out" +msgid "ALSA settings" msgstr "" #: ../build/src/ui_dlgaudiobase.h:287 @@ -533,10 +529,18 @@ msgid "ALSA plugin" msgstr "" #: ../build/src/ui_dlgaudiobase.h:288 -msgid "PulseAudio settings" +msgid "In" msgstr "" #: ../build/src/ui_dlgaudiobase.h:289 +msgid "Out" +msgstr "" + +#: ../build/src/ui_dlgaudiobase.h:290 +msgid "PulseAudio settings" +msgstr "" + +#: ../build/src/ui_dlgaudiobase.h:291 msgid "Mute other applications during a call" msgstr "" @@ -651,7 +655,7 @@ msgid "Display dialpad" msgstr "" #: ../build/src/ui_sflphone_kdeview_base.h:405 -msgctxt "Action record a calld" +msgctxt "Action record a call" msgid "Record" msgstr "" diff --git a/sflphone-client-kde/po/es/sflphone-client-kde.po b/sflphone-client-kde/po/es/sflphone-client-kde.po index 79dcfb0c572de5c5d2afbbfd3818ddf66780607c..d2f4921bf98f6c95717f6a389333e15cff51bbf8 100644 --- a/sflphone-client-kde/po/es/sflphone-client-kde.po +++ b/sflphone-client-kde/po/es/sflphone-client-kde.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-03 13:49-0400\n" +"POT-Creation-Date: 2009-07-08 15:18-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" @@ -222,22 +222,22 @@ msgstr "" msgid "(C) 2009 Savoir-faire Linux" msgstr "" -#: ../src/main.cpp:43 +#: ../src/main.cpp:42 msgid "Jérémy Quentin" msgstr "" -#: ../src/main.cpp:45 +#: ../src/main.cpp:43 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "" -#: ../src/main.cpp:45 +#: ../src/main.cpp:43 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 +#: ../src/SFLPhone.cpp:62 ../src/sflphone_kdeview.cpp:1066 +#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1076 msgid "SFLphone" msgstr "" @@ -257,28 +257,28 @@ msgstr "" msgid "Click to accept or refuse it." msgstr "" -#: ../src/sflphone_kdeview.cpp:864 +#: ../src/sflphone_kdeview.cpp:883 msgid "No account registered" msgstr "" -#: ../src/sflphone_kdeview.cpp:868 +#: ../src/sflphone_kdeview.cpp:887 msgid "Using account" msgstr "" -#: ../src/sflphone_kdeview.cpp:1047 +#: ../src/sflphone_kdeview.cpp:1066 msgid "Main screen" msgstr "" -#: ../src/sflphone_kdeview.cpp:1052 ../build/src/ui_dlggeneralbase.h:165 +#: ../src/sflphone_kdeview.cpp:1071 ../build/src/ui_dlggeneralbase.h:165 msgid "Call history" msgstr "" -#: ../src/sflphone_kdeview.cpp:1057 +#: ../src/sflphone_kdeview.cpp:1076 #: ../build/src/ui_sflphone_kdeview_base.h:407 msgid "Address book" msgstr "" -#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1132 +#: ../src/sflphone_kdeview.cpp:1090 ../src/sflphone_kdeview.cpp:1151 msgid "Edit before call" msgstr "" @@ -352,7 +352,7 @@ msgid "Hooks" msgstr "" #: ../build/src/ui_dlgaccountsbase.h:321 -#: ../build/src/ui_dlgaddressbookbase.h:142 ../build/src/ui_dlgaudiobase.h:262 +#: ../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 @@ -476,56 +476,52 @@ msgstr "" msgid "&Home" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:264 +#: ../build/src/ui_dlgaudiobase.h:265 msgid "Audio device" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:267 +#: ../build/src/ui_dlgaudiobase.h:268 msgid "ALSA" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:268 +#: ../build/src/ui_dlgaudiobase.h:269 msgid "PulseAudio" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:270 +#: ../build/src/ui_dlgaudiobase.h:271 msgid "Enable ringtones" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:271 -msgid "&Codecs" +#: ../build/src/ui_dlgaudiobase.h:272 +msgid "*.ul *.au *.wav" msgstr "" #: ../build/src/ui_dlgaudiobase.h:273 -msgid "Active" +msgid "&Codecs" msgstr "" #: ../build/src/ui_dlgaudiobase.h:275 -msgid "Name" +msgid "Active" msgstr "" #: ../build/src/ui_dlgaudiobase.h:277 -msgid "Frequency" +msgid "Name" msgstr "" #: ../build/src/ui_dlgaudiobase.h:279 -msgid "Bitrate" +msgid "Frequency" msgstr "" #: ../build/src/ui_dlgaudiobase.h:281 -msgid "Bandwidth" -msgstr "" - -#: ../build/src/ui_dlgaudiobase.h:284 -msgid "ALSA settings" +msgid "Bitrate" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:285 -msgid "In" +#: ../build/src/ui_dlgaudiobase.h:283 +msgid "Bandwidth" msgstr "" #: ../build/src/ui_dlgaudiobase.h:286 -msgid "Out" +msgid "ALSA settings" msgstr "" #: ../build/src/ui_dlgaudiobase.h:287 @@ -533,10 +529,18 @@ msgid "ALSA plugin" msgstr "" #: ../build/src/ui_dlgaudiobase.h:288 -msgid "PulseAudio settings" +msgid "In" msgstr "" #: ../build/src/ui_dlgaudiobase.h:289 +msgid "Out" +msgstr "" + +#: ../build/src/ui_dlgaudiobase.h:290 +msgid "PulseAudio settings" +msgstr "" + +#: ../build/src/ui_dlgaudiobase.h:291 msgid "Mute other applications during a call" msgstr "" @@ -651,7 +655,7 @@ msgid "Display dialpad" msgstr "" #: ../build/src/ui_sflphone_kdeview_base.h:405 -msgctxt "Action record a calld" +msgctxt "Action record a call" msgid "Record" msgstr "" diff --git a/sflphone-client-kde/po/fr/sflphone-client-kde.po b/sflphone-client-kde/po/fr/sflphone-client-kde.po index aad2a8233fc14b7c9a826a414c4002fd4edea9c8..7e73a3ee9fc66d2d2f5186c05ee2b5f77012d65e 100644 --- a/sflphone-client-kde/po/fr/sflphone-client-kde.po +++ b/sflphone-client-kde/po/fr/sflphone-client-kde.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-03 13:49-0400\n" +"POT-Creation-Date: 2009-07-08 15:18-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" @@ -224,22 +224,22 @@ msgstr "SFLphone Client KDE" msgid "(C) 2009 Savoir-faire Linux" msgstr "(C) 2009 Savoir-faire Linux" -#: ../src/main.cpp:43 +#: ../src/main.cpp:42 msgid "Jérémy Quentin" msgstr "Jérémy Quentin" -#: ../src/main.cpp:45 +#: ../src/main.cpp:43 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Jérémy Quentin" -#: ../src/main.cpp:45 +#: ../src/main.cpp:43 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "jeremy.quentin@savoirfairelinux.com" -#: ../src/SFLPhone.cpp:62 ../src/sflphone_kdeview.cpp:1047 -#: ../src/sflphone_kdeview.cpp:1052 ../src/sflphone_kdeview.cpp:1057 +#: ../src/SFLPhone.cpp:62 ../src/sflphone_kdeview.cpp:1066 +#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1076 msgid "SFLphone" msgstr "SFLphone" @@ -261,28 +261,28 @@ msgstr "Vous avez un appel entrant de" msgid "Click to accept or refuse it." msgstr "Cliquez sur ce message pour accepter ou refuser" -#: ../src/sflphone_kdeview.cpp:864 +#: ../src/sflphone_kdeview.cpp:883 msgid "No account registered" msgstr "Aucun compte enregistré" -#: ../src/sflphone_kdeview.cpp:868 +#: ../src/sflphone_kdeview.cpp:887 msgid "Using account" msgstr "Utilise le compte" -#: ../src/sflphone_kdeview.cpp:1047 +#: ../src/sflphone_kdeview.cpp:1066 msgid "Main screen" msgstr "Écran principal" -#: ../src/sflphone_kdeview.cpp:1052 ../build/src/ui_dlggeneralbase.h:165 +#: ../src/sflphone_kdeview.cpp:1071 ../build/src/ui_dlggeneralbase.h:165 msgid "Call history" msgstr "Historique d'appel" -#: ../src/sflphone_kdeview.cpp:1057 +#: ../src/sflphone_kdeview.cpp:1076 #: ../build/src/ui_sflphone_kdeview_base.h:407 msgid "Address book" msgstr "Carnet d'adresse" -#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1132 +#: ../src/sflphone_kdeview.cpp:1090 ../src/sflphone_kdeview.cpp:1151 msgid "Edit before call" msgstr "Éditer avant d'appeler" @@ -356,7 +356,7 @@ msgid "Hooks" msgstr "Ancrage" #: ../build/src/ui_dlgaccountsbase.h:321 -#: ../build/src/ui_dlgaddressbookbase.h:142 ../build/src/ui_dlgaudiobase.h:262 +#: ../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 @@ -493,67 +493,71 @@ msgstr "&Mobiles" msgid "&Home" msgstr "P&ersonnels" -#: ../build/src/ui_dlgaudiobase.h:264 +#: ../build/src/ui_dlgaudiobase.h:265 msgid "Audio device" msgstr "Interface audio" -#: ../build/src/ui_dlgaudiobase.h:267 +#: ../build/src/ui_dlgaudiobase.h:268 msgid "ALSA" msgstr "ALSA" -#: ../build/src/ui_dlgaudiobase.h:268 +#: ../build/src/ui_dlgaudiobase.h:269 msgid "PulseAudio" msgstr "PulseAudio" -#: ../build/src/ui_dlgaudiobase.h:270 +#: ../build/src/ui_dlgaudiobase.h:271 msgid "Enable ringtones" msgstr "Activer les sonneries" -#: ../build/src/ui_dlgaudiobase.h:271 +#: ../build/src/ui_dlgaudiobase.h:272 +msgid "*.ul *.au *.wav" +msgstr "" + +#: ../build/src/ui_dlgaudiobase.h:273 msgid "&Codecs" msgstr "&Codecs" -#: ../build/src/ui_dlgaudiobase.h:273 +#: ../build/src/ui_dlgaudiobase.h:275 msgid "Active" msgstr "Activé" -#: ../build/src/ui_dlgaudiobase.h:275 +#: ../build/src/ui_dlgaudiobase.h:277 msgid "Name" msgstr "Nom" -#: ../build/src/ui_dlgaudiobase.h:277 +#: ../build/src/ui_dlgaudiobase.h:279 msgid "Frequency" msgstr "Fréquence" -#: ../build/src/ui_dlgaudiobase.h:279 +#: ../build/src/ui_dlgaudiobase.h:281 msgid "Bitrate" msgstr "Bitrate" -#: ../build/src/ui_dlgaudiobase.h:281 +#: ../build/src/ui_dlgaudiobase.h:283 msgid "Bandwidth" msgstr "Bande passante" -#: ../build/src/ui_dlgaudiobase.h:284 +#: ../build/src/ui_dlgaudiobase.h:286 msgid "ALSA settings" msgstr "Paramètre ALSA" -#: ../build/src/ui_dlgaudiobase.h:285 +#: ../build/src/ui_dlgaudiobase.h:287 +msgid "ALSA plugin" +msgstr "Greffon ALSA" + +#: ../build/src/ui_dlgaudiobase.h:288 msgid "In" msgstr "Entrée" -#: ../build/src/ui_dlgaudiobase.h:286 +#: ../build/src/ui_dlgaudiobase.h:289 msgid "Out" msgstr "Sortie" -#: ../build/src/ui_dlgaudiobase.h:287 -msgid "ALSA plugin" -msgstr "Greffon ALSA" - -#: ../build/src/ui_dlgaudiobase.h:288 +#: ../build/src/ui_dlgaudiobase.h:290 msgid "PulseAudio settings" msgstr "Paramètres PulseAudio" -#: ../build/src/ui_dlgaudiobase.h:289 +#: ../build/src/ui_dlgaudiobase.h:291 msgid "Mute other applications during a call" msgstr "Couper le son des autres applications pendant un appel" @@ -670,9 +674,10 @@ msgid "Display dialpad" msgstr "Afficher le clavier" #: ../build/src/ui_sflphone_kdeview_base.h:405 -msgctxt "Action record a calld" +#, fuzzy +msgctxt "Action record a call" msgid "Record" -msgstr "Enregistrer" +msgstr "Enregistrement" #: ../build/src/ui_sflphone_kdeview_base.h:406 msgid "Account creation wizard" @@ -682,6 +687,10 @@ msgstr "Assistant de création de compte" msgid "Attention:number of results exceeds max displayed." msgstr "Attention:tous les résultats ne sont pas affichés." +#~ msgctxt "Action record a calld" +#~ msgid "Record" +#~ msgstr "Enregistrer" + #~ msgid "Attention : SIP port must be over 1024 !" #~ msgstr "Attention : le port SIP doit être supérieur à 1024 !" diff --git a/sflphone-client-kde/po/ru/sflphone-client-kde.po b/sflphone-client-kde/po/ru/sflphone-client-kde.po index 79dcfb0c572de5c5d2afbbfd3818ddf66780607c..3a2f9f528549a963da6e8cb4483d53579d4f07ee 100644 --- a/sflphone-client-kde/po/ru/sflphone-client-kde.po +++ b/sflphone-client-kde/po/ru/sflphone-client-kde.po @@ -1,664 +1,1534 @@ -# 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 "Authentication Failed" -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 "" +# 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 +#, fuzzy +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 +#, fuzzy +msgctxt "account state" +msgid "Stun configuration error" +msgstr "Окно настроек" + +#: ../src/Account.cpp:50 +#, fuzzy +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 +#, fuzzy +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 "" - -#: ../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 "" +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 или IAX2 аккаунт" + +#: ../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 "" + +#: ../src/main.cpp:38 +msgid "(C) 2009 Savoir-faire Linux" +msgstr "" + +#: ../src/main.cpp:42 +msgid "Jérémy Quentin" +msgstr "" + +#: ../src/main.cpp:43 +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: ../src/main.cpp:43 +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: ../src/SFLPhone.cpp:62 ../src/sflphone_kdeview.cpp:1066 +#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1076 +#, fuzzy +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 +#, fuzzy +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 +#, fuzzy +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 "" + +#: ../build/src/ui_dlgaccountsbase.h:327 +#, fuzzy +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 +#, fuzzy +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 +#, fuzzy +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 +#, fuzzy +msgid "Enable Stun" +msgstr "&Включить STUN" + +#: ../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:265 +#, fuzzy +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 +#, fuzzy +msgid "Enable ringtones" +msgstr "Включить звонок" + +#: ../build/src/ui_dlgaudiobase.h:272 +msgid "*.ul *.au *.wav" +msgstr "" + +#: ../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 +#, fuzzy +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 +#, fuzzy +msgid "Clear history" +msgstr "Стереть журнал" + +#: ../build/src/ui_dlggeneralbase.h:169 +msgid "Connection" +msgstr "Подключение" + +#: ../build/src/ui_dlggeneralbase.h:170 +#, fuzzy +msgid "SIP Port" +msgstr "SIP-порт" + +#: ../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 +#, fuzzy +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 +#, fuzzy +msgid "Pick up" +msgstr "&Взять трубку" + +#: ../build/src/ui_sflphone_kdeview_base.h:395 +#, fuzzy +msgid "History" +msgstr "Журнал" + +#: ../build/src/ui_sflphone_kdeview_base.h:397 +#, fuzzy +msgid "Configure accounts" +msgstr "Настроить &аккаунты" + +#: ../build/src/ui_sflphone_kdeview_base.h:398 +#, fuzzy +msgid "Configure audio" +msgstr "Настроить &звук" + +#: ../build/src/ui_sflphone_kdeview_base.h:399 +#: ../build/src/ui_sflphone_kdeview_base.h:401 +#, fuzzy +msgid "Configure SFLphone" +msgstr "&Настроить SFLPhone" + +#: ../build/src/ui_sflphone_kdeview_base.h:403 +#, fuzzy +msgid "Display volume bars" +msgstr "Показать уровень &громкости" + +#: ../build/src/ui_sflphone_kdeview_base.h:404 +#, fuzzy +msgid "Display dialpad" +msgstr "Показать &клавиатуру" + +#: ../build/src/ui_sflphone_kdeview_base.h:405 +#, fuzzy +msgctxt "Action record a call" +msgid "Record" +msgstr "Записать" + +#: ../build/src/ui_sflphone_kdeview_base.h:406 +#, fuzzy +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 "Записать" +======= +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 "Записать" +>>>>>>> rc1:sflphone-client-kde/po/ru/sflphone-client-kde.po diff --git a/sflphone-client-kde/po/sflphone-client-kde.pot b/sflphone-client-kde/po/sflphone-client-kde.pot index 79dcfb0c572de5c5d2afbbfd3818ddf66780607c..d2f4921bf98f6c95717f6a389333e15cff51bbf8 100644 --- a/sflphone-client-kde/po/sflphone-client-kde.pot +++ b/sflphone-client-kde/po/sflphone-client-kde.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-03 13:49-0400\n" +"POT-Creation-Date: 2009-07-08 15:18-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" @@ -222,22 +222,22 @@ msgstr "" msgid "(C) 2009 Savoir-faire Linux" msgstr "" -#: ../src/main.cpp:43 +#: ../src/main.cpp:42 msgid "Jérémy Quentin" msgstr "" -#: ../src/main.cpp:45 +#: ../src/main.cpp:43 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "" -#: ../src/main.cpp:45 +#: ../src/main.cpp:43 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 +#: ../src/SFLPhone.cpp:62 ../src/sflphone_kdeview.cpp:1066 +#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1076 msgid "SFLphone" msgstr "" @@ -257,28 +257,28 @@ msgstr "" msgid "Click to accept or refuse it." msgstr "" -#: ../src/sflphone_kdeview.cpp:864 +#: ../src/sflphone_kdeview.cpp:883 msgid "No account registered" msgstr "" -#: ../src/sflphone_kdeview.cpp:868 +#: ../src/sflphone_kdeview.cpp:887 msgid "Using account" msgstr "" -#: ../src/sflphone_kdeview.cpp:1047 +#: ../src/sflphone_kdeview.cpp:1066 msgid "Main screen" msgstr "" -#: ../src/sflphone_kdeview.cpp:1052 ../build/src/ui_dlggeneralbase.h:165 +#: ../src/sflphone_kdeview.cpp:1071 ../build/src/ui_dlggeneralbase.h:165 msgid "Call history" msgstr "" -#: ../src/sflphone_kdeview.cpp:1057 +#: ../src/sflphone_kdeview.cpp:1076 #: ../build/src/ui_sflphone_kdeview_base.h:407 msgid "Address book" msgstr "" -#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1132 +#: ../src/sflphone_kdeview.cpp:1090 ../src/sflphone_kdeview.cpp:1151 msgid "Edit before call" msgstr "" @@ -352,7 +352,7 @@ msgid "Hooks" msgstr "" #: ../build/src/ui_dlgaccountsbase.h:321 -#: ../build/src/ui_dlgaddressbookbase.h:142 ../build/src/ui_dlgaudiobase.h:262 +#: ../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 @@ -476,56 +476,52 @@ msgstr "" msgid "&Home" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:264 +#: ../build/src/ui_dlgaudiobase.h:265 msgid "Audio device" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:267 +#: ../build/src/ui_dlgaudiobase.h:268 msgid "ALSA" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:268 +#: ../build/src/ui_dlgaudiobase.h:269 msgid "PulseAudio" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:270 +#: ../build/src/ui_dlgaudiobase.h:271 msgid "Enable ringtones" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:271 -msgid "&Codecs" +#: ../build/src/ui_dlgaudiobase.h:272 +msgid "*.ul *.au *.wav" msgstr "" #: ../build/src/ui_dlgaudiobase.h:273 -msgid "Active" +msgid "&Codecs" msgstr "" #: ../build/src/ui_dlgaudiobase.h:275 -msgid "Name" +msgid "Active" msgstr "" #: ../build/src/ui_dlgaudiobase.h:277 -msgid "Frequency" +msgid "Name" msgstr "" #: ../build/src/ui_dlgaudiobase.h:279 -msgid "Bitrate" +msgid "Frequency" msgstr "" #: ../build/src/ui_dlgaudiobase.h:281 -msgid "Bandwidth" -msgstr "" - -#: ../build/src/ui_dlgaudiobase.h:284 -msgid "ALSA settings" +msgid "Bitrate" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:285 -msgid "In" +#: ../build/src/ui_dlgaudiobase.h:283 +msgid "Bandwidth" msgstr "" #: ../build/src/ui_dlgaudiobase.h:286 -msgid "Out" +msgid "ALSA settings" msgstr "" #: ../build/src/ui_dlgaudiobase.h:287 @@ -533,10 +529,18 @@ msgid "ALSA plugin" msgstr "" #: ../build/src/ui_dlgaudiobase.h:288 -msgid "PulseAudio settings" +msgid "In" msgstr "" #: ../build/src/ui_dlgaudiobase.h:289 +msgid "Out" +msgstr "" + +#: ../build/src/ui_dlgaudiobase.h:290 +msgid "PulseAudio settings" +msgstr "" + +#: ../build/src/ui_dlgaudiobase.h:291 msgid "Mute other applications during a call" msgstr "" @@ -651,7 +655,7 @@ msgid "Display dialpad" msgstr "" #: ../build/src/ui_sflphone_kdeview_base.h:405 -msgctxt "Action record a calld" +msgctxt "Action record a call" msgid "Record" msgstr "" diff --git a/sflphone-client-kde/po/zh_CN/sflphone-client-kde.po b/sflphone-client-kde/po/zh_CN/sflphone-client-kde.po index 79dcfb0c572de5c5d2afbbfd3818ddf66780607c..d2f4921bf98f6c95717f6a389333e15cff51bbf8 100644 --- a/sflphone-client-kde/po/zh_CN/sflphone-client-kde.po +++ b/sflphone-client-kde/po/zh_CN/sflphone-client-kde.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-03 13:49-0400\n" +"POT-Creation-Date: 2009-07-08 15:18-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" @@ -222,22 +222,22 @@ msgstr "" msgid "(C) 2009 Savoir-faire Linux" msgstr "" -#: ../src/main.cpp:43 +#: ../src/main.cpp:42 msgid "Jérémy Quentin" msgstr "" -#: ../src/main.cpp:45 +#: ../src/main.cpp:43 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "" -#: ../src/main.cpp:45 +#: ../src/main.cpp:43 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 +#: ../src/SFLPhone.cpp:62 ../src/sflphone_kdeview.cpp:1066 +#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1076 msgid "SFLphone" msgstr "" @@ -257,28 +257,28 @@ msgstr "" msgid "Click to accept or refuse it." msgstr "" -#: ../src/sflphone_kdeview.cpp:864 +#: ../src/sflphone_kdeview.cpp:883 msgid "No account registered" msgstr "" -#: ../src/sflphone_kdeview.cpp:868 +#: ../src/sflphone_kdeview.cpp:887 msgid "Using account" msgstr "" -#: ../src/sflphone_kdeview.cpp:1047 +#: ../src/sflphone_kdeview.cpp:1066 msgid "Main screen" msgstr "" -#: ../src/sflphone_kdeview.cpp:1052 ../build/src/ui_dlggeneralbase.h:165 +#: ../src/sflphone_kdeview.cpp:1071 ../build/src/ui_dlggeneralbase.h:165 msgid "Call history" msgstr "" -#: ../src/sflphone_kdeview.cpp:1057 +#: ../src/sflphone_kdeview.cpp:1076 #: ../build/src/ui_sflphone_kdeview_base.h:407 msgid "Address book" msgstr "" -#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1132 +#: ../src/sflphone_kdeview.cpp:1090 ../src/sflphone_kdeview.cpp:1151 msgid "Edit before call" msgstr "" @@ -352,7 +352,7 @@ msgid "Hooks" msgstr "" #: ../build/src/ui_dlgaccountsbase.h:321 -#: ../build/src/ui_dlgaddressbookbase.h:142 ../build/src/ui_dlgaudiobase.h:262 +#: ../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 @@ -476,56 +476,52 @@ msgstr "" msgid "&Home" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:264 +#: ../build/src/ui_dlgaudiobase.h:265 msgid "Audio device" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:267 +#: ../build/src/ui_dlgaudiobase.h:268 msgid "ALSA" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:268 +#: ../build/src/ui_dlgaudiobase.h:269 msgid "PulseAudio" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:270 +#: ../build/src/ui_dlgaudiobase.h:271 msgid "Enable ringtones" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:271 -msgid "&Codecs" +#: ../build/src/ui_dlgaudiobase.h:272 +msgid "*.ul *.au *.wav" msgstr "" #: ../build/src/ui_dlgaudiobase.h:273 -msgid "Active" +msgid "&Codecs" msgstr "" #: ../build/src/ui_dlgaudiobase.h:275 -msgid "Name" +msgid "Active" msgstr "" #: ../build/src/ui_dlgaudiobase.h:277 -msgid "Frequency" +msgid "Name" msgstr "" #: ../build/src/ui_dlgaudiobase.h:279 -msgid "Bitrate" +msgid "Frequency" msgstr "" #: ../build/src/ui_dlgaudiobase.h:281 -msgid "Bandwidth" -msgstr "" - -#: ../build/src/ui_dlgaudiobase.h:284 -msgid "ALSA settings" +msgid "Bitrate" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:285 -msgid "In" +#: ../build/src/ui_dlgaudiobase.h:283 +msgid "Bandwidth" msgstr "" #: ../build/src/ui_dlgaudiobase.h:286 -msgid "Out" +msgid "ALSA settings" msgstr "" #: ../build/src/ui_dlgaudiobase.h:287 @@ -533,10 +529,18 @@ msgid "ALSA plugin" msgstr "" #: ../build/src/ui_dlgaudiobase.h:288 -msgid "PulseAudio settings" +msgid "In" msgstr "" #: ../build/src/ui_dlgaudiobase.h:289 +msgid "Out" +msgstr "" + +#: ../build/src/ui_dlgaudiobase.h:290 +msgid "PulseAudio settings" +msgstr "" + +#: ../build/src/ui_dlgaudiobase.h:291 msgid "Mute other applications during a call" msgstr "" @@ -651,7 +655,7 @@ msgid "Display dialpad" msgstr "" #: ../build/src/ui_sflphone_kdeview_base.h:405 -msgctxt "Action record a calld" +msgctxt "Action record a call" msgid "Record" msgstr "" diff --git a/sflphone-client-kde/po/zh_HK/sflphone-client-kde.po b/sflphone-client-kde/po/zh_HK/sflphone-client-kde.po index 79dcfb0c572de5c5d2afbbfd3818ddf66780607c..d2f4921bf98f6c95717f6a389333e15cff51bbf8 100644 --- a/sflphone-client-kde/po/zh_HK/sflphone-client-kde.po +++ b/sflphone-client-kde/po/zh_HK/sflphone-client-kde.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-07-03 13:49-0400\n" +"POT-Creation-Date: 2009-07-08 15:18-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" @@ -222,22 +222,22 @@ msgstr "" msgid "(C) 2009 Savoir-faire Linux" msgstr "" -#: ../src/main.cpp:43 +#: ../src/main.cpp:42 msgid "Jérémy Quentin" msgstr "" -#: ../src/main.cpp:45 +#: ../src/main.cpp:43 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "" -#: ../src/main.cpp:45 +#: ../src/main.cpp:43 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 +#: ../src/SFLPhone.cpp:62 ../src/sflphone_kdeview.cpp:1066 +#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1076 msgid "SFLphone" msgstr "" @@ -257,28 +257,28 @@ msgstr "" msgid "Click to accept or refuse it." msgstr "" -#: ../src/sflphone_kdeview.cpp:864 +#: ../src/sflphone_kdeview.cpp:883 msgid "No account registered" msgstr "" -#: ../src/sflphone_kdeview.cpp:868 +#: ../src/sflphone_kdeview.cpp:887 msgid "Using account" msgstr "" -#: ../src/sflphone_kdeview.cpp:1047 +#: ../src/sflphone_kdeview.cpp:1066 msgid "Main screen" msgstr "" -#: ../src/sflphone_kdeview.cpp:1052 ../build/src/ui_dlggeneralbase.h:165 +#: ../src/sflphone_kdeview.cpp:1071 ../build/src/ui_dlggeneralbase.h:165 msgid "Call history" msgstr "" -#: ../src/sflphone_kdeview.cpp:1057 +#: ../src/sflphone_kdeview.cpp:1076 #: ../build/src/ui_sflphone_kdeview_base.h:407 msgid "Address book" msgstr "" -#: ../src/sflphone_kdeview.cpp:1071 ../src/sflphone_kdeview.cpp:1132 +#: ../src/sflphone_kdeview.cpp:1090 ../src/sflphone_kdeview.cpp:1151 msgid "Edit before call" msgstr "" @@ -352,7 +352,7 @@ msgid "Hooks" msgstr "" #: ../build/src/ui_dlgaccountsbase.h:321 -#: ../build/src/ui_dlgaddressbookbase.h:142 ../build/src/ui_dlgaudiobase.h:262 +#: ../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 @@ -476,56 +476,52 @@ msgstr "" msgid "&Home" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:264 +#: ../build/src/ui_dlgaudiobase.h:265 msgid "Audio device" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:267 +#: ../build/src/ui_dlgaudiobase.h:268 msgid "ALSA" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:268 +#: ../build/src/ui_dlgaudiobase.h:269 msgid "PulseAudio" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:270 +#: ../build/src/ui_dlgaudiobase.h:271 msgid "Enable ringtones" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:271 -msgid "&Codecs" +#: ../build/src/ui_dlgaudiobase.h:272 +msgid "*.ul *.au *.wav" msgstr "" #: ../build/src/ui_dlgaudiobase.h:273 -msgid "Active" +msgid "&Codecs" msgstr "" #: ../build/src/ui_dlgaudiobase.h:275 -msgid "Name" +msgid "Active" msgstr "" #: ../build/src/ui_dlgaudiobase.h:277 -msgid "Frequency" +msgid "Name" msgstr "" #: ../build/src/ui_dlgaudiobase.h:279 -msgid "Bitrate" +msgid "Frequency" msgstr "" #: ../build/src/ui_dlgaudiobase.h:281 -msgid "Bandwidth" -msgstr "" - -#: ../build/src/ui_dlgaudiobase.h:284 -msgid "ALSA settings" +msgid "Bitrate" msgstr "" -#: ../build/src/ui_dlgaudiobase.h:285 -msgid "In" +#: ../build/src/ui_dlgaudiobase.h:283 +msgid "Bandwidth" msgstr "" #: ../build/src/ui_dlgaudiobase.h:286 -msgid "Out" +msgid "ALSA settings" msgstr "" #: ../build/src/ui_dlgaudiobase.h:287 @@ -533,10 +529,18 @@ msgid "ALSA plugin" msgstr "" #: ../build/src/ui_dlgaudiobase.h:288 -msgid "PulseAudio settings" +msgid "In" msgstr "" #: ../build/src/ui_dlgaudiobase.h:289 +msgid "Out" +msgstr "" + +#: ../build/src/ui_dlgaudiobase.h:290 +msgid "PulseAudio settings" +msgstr "" + +#: ../build/src/ui_dlgaudiobase.h:291 msgid "Mute other applications during a call" msgstr "" @@ -651,7 +655,7 @@ msgid "Display dialpad" msgstr "" #: ../build/src/ui_sflphone_kdeview_base.h:405 -msgctxt "Action record a calld" +msgctxt "Action record a call" msgid "Record" msgstr "" diff --git a/sflphone-client-kde/src/Account.cpp b/sflphone-client-kde/src/Account.cpp index f5fcf0362b4ea4ab7a5f01f0973cfe1a738d09ff..aee3cb2c54bb9c4f32ee35664061412287230629 100644 --- a/sflphone-client-kde/src/Account.cpp +++ b/sflphone-client-kde/src/Account.cpp @@ -53,10 +53,12 @@ const QString account_state_name(QString & s) //Constructors -Account::Account():accountId(NULL), item(NULL), itemWidget(NULL){} +Account::Account():accountId(NULL) +{ +} -void Account::initAccountItem() +void Account::initItem() { if(item != NULL) { @@ -65,10 +67,10 @@ void Account::initAccountItem() item = new QListWidgetItem(); item->setSizeHint(QSize(140,25)); item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsDragEnabled|Qt::ItemIsDropEnabled|Qt::ItemIsEnabled); - initAccountItemWidget(); + initItemWidget(); } -void Account::initAccountItemWidget() +void Account::initItemWidget() { if(itemWidget != NULL) { @@ -90,6 +92,7 @@ void Account::initAccountItemWidget() { itemWidget->setState(AccountItemWidget::NotWorking); } + connect(itemWidget, SIGNAL(checkStateChanged(bool)), this, SLOT(setEnabled(bool))); } Account * Account::buildExistingAccountFromId(QString _accountId) @@ -99,7 +102,7 @@ Account * Account::buildExistingAccountFromId(QString _accountId) a->accountId = new QString(_accountId); qDebug() << "getAccountDetails 1 sent"; a->accountDetails = new MapStringString( configurationManager.getAccountDetails(_accountId).value() ); - a->initAccountItem(); + a->initItem(); return a; } @@ -108,7 +111,7 @@ Account * Account::buildNewAccountFromAlias(QString alias) Account * a = new Account(); a->accountDetails = new MapStringString(); a->setAccountDetail(ACCOUNT_ALIAS,alias); - a->initAccountItem(); + a->initItem(); return a; } @@ -147,13 +150,11 @@ MapStringString & Account::getAccountDetails() const QListWidgetItem * Account::getItem() { - if(!item) { qDebug() << "null" ; } return item; } AccountItemWidget * Account::getItemWidget() { - if(itemWidget == NULL) { qDebug() << "null"; } return itemWidget; } @@ -214,6 +215,12 @@ void Account::setAccountId(QString id) accountId = new QString(id); } +void Account::setEnabled(bool checked) +{ + qDebug() << "setEnabled = " << checked; + setAccountDetail(ACCOUNT_ENABLED, checked ? ACCOUNT_ENABLED_TRUE : ACCOUNT_ENABLED_FALSE); +} + void Account::updateState() { qDebug() << "updateState"; diff --git a/sflphone-client-kde/src/Account.h b/sflphone-client-kde/src/Account.h index e1463bb64e3b280999f25f7a14e1bc7b49392187..37f11f4b23fcdae36e7e90ced18adfe25b4f8eeb 100644 --- a/sflphone-client-kde/src/Account.h +++ b/sflphone-client-kde/src/Account.h @@ -28,17 +28,18 @@ #include "typedefs.h" #include "AccountItemWidget.h" +#include "Item.h" const QString account_state_name(QString & s); -class Account{ - +class Account : public QObject, public Item<AccountItemWidget>{ +Q_OBJECT private: QString * accountId; MapStringString * accountDetails; - QListWidgetItem * item; - AccountItemWidget * itemWidget; +// QListWidgetItem * item; +// AccountItemWidget * itemWidget; Account(); @@ -69,13 +70,17 @@ public: void setAccountDetail(QString param, QString val); //Updates - void initAccountItem(); - void initAccountItemWidget(); + void initItem(); + void initItemWidget(); void updateState(); //Operators bool operator==(const Account&)const; +private slots: + void setEnabled(bool checked); + + }; diff --git a/sflphone-client-kde/src/AccountItemWidget.cpp b/sflphone-client-kde/src/AccountItemWidget.cpp index ab841e83a60a089db27df0bae82344571972aa49..3549b5fd92f2da3398e394d35ec317e6606faebe 100644 --- a/sflphone-client-kde/src/AccountItemWidget.cpp +++ b/sflphone-client-kde/src/AccountItemWidget.cpp @@ -113,7 +113,8 @@ bool AccountItemWidget::getEnabled() return checkBox->checkState(); } -void AccountItemWidget::on_checkBox_stateChanged() +void AccountItemWidget::on_checkBox_stateChanged(int state) { - emit checkStateChanged(); + qDebug() << "on_checkBox_stateChanged"; + emit checkStateChanged(state == Qt::Checked); } diff --git a/sflphone-client-kde/src/AccountItemWidget.h b/sflphone-client-kde/src/AccountItemWidget.h index 25c1a688dc1fb7c88a753d793a1de68ce69db6f5..60055a3e5b09728a0bc886d9c152eecaee791294 100644 --- a/sflphone-client-kde/src/AccountItemWidget.h +++ b/sflphone-client-kde/src/AccountItemWidget.h @@ -65,11 +65,11 @@ public: void updateDisplay(); private slots: - void on_checkBox_stateChanged(); + void on_checkBox_stateChanged(int state); signals: - void checkStateChanged(); + void checkStateChanged(bool checked); }; diff --git a/sflphone-client-kde/src/AccountList.cpp b/sflphone-client-kde/src/AccountList.cpp index 3f53f475fdb6502359b1db9726ce391bd7364772..82f2afd0bb2c8f3083269455565b58dd6d2eca05 100644 --- a/sflphone-client-kde/src/AccountList.cpp +++ b/sflphone-client-kde/src/AccountList.cpp @@ -40,7 +40,10 @@ AccountList::AccountList(bool fill) { qDebug() << "AccountList()"; accounts = new QVector<Account *>(); - updateAccounts(); + if(fill) + { + updateAccounts(); + } } void AccountList::update() diff --git a/sflphone-client-kde/src/CMakeLists.txt b/sflphone-client-kde/src/CMakeLists.txt index 32540e27410f48052ba8ab62a9999a14b5ae47a6..1513094c6247e19af0d06a12d5c57d0874592765 100644 --- a/sflphone-client-kde/src/CMakeLists.txt +++ b/sflphone-client-kde/src/CMakeLists.txt @@ -54,6 +54,10 @@ SET( sflphone_client_kde_SRCS conf/dlghooks.cpp conf/ConfigurationSkeleton.cpp Dialpad.cpp + Codec.cpp + CodecListModel.cpp + SortableCodecListWidget.cpp + Item.cpp ) diff --git a/sflphone-client-kde/src/Call.cpp b/sflphone-client-kde/src/Call.cpp index e5f2e94c1f6cad8eee3ad25a3f2a25f44867b283..efb34db0da9ab6b59166ceb24edb7f62736ac8c4 100644 --- a/sflphone-client-kde/src/Call.cpp +++ b/sflphone-client-kde/src/Call.cpp @@ -54,7 +54,7 @@ const function Call::actionPerformedFunctionMap[11][5] = /*INCOMING */ {&Call::accept , &Call::refuse , &Call::acceptTransf , &Call::acceptHold , &Call::setRecord }, /*RINGING */ {&Call::nothing , &Call::hangUp , &Call::nothing , &Call::nothing , &Call::setRecord }, /*CURRENT */ {&Call::nothing , &Call::hangUp , &Call::nothing , &Call::hold , &Call::setRecord }, -/*DIALING */ {&Call::call , &Call::nothing , &Call::nothing , &Call::nothing , &Call::nothing }, +/*DIALING */ {&Call::call , &Call::cancel , &Call::nothing , &Call::nothing , &Call::nothing }, /*HOLD */ {&Call::nothing , &Call::hangUp , &Call::nothing , &Call::unhold , &Call::setRecord }, /*FAILURE */ {&Call::nothing , &Call::hangUp , &Call::nothing , &Call::nothing , &Call::nothing }, /*BUSY */ {&Call::nothing , &Call::hangUp , &Call::nothing , &Call::nothing , &Call::nothing }, @@ -164,24 +164,20 @@ Call::Call(call_state startState, QString callId, QString peerName, QString peer this->stopTime = NULL; } -Call::Call(QString callId) +Call * Call::buildExistingCall(QString callId) { CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance(); MapStringString details = callManager.getCallDetails(callId).value(); qDebug() << "Constructing existing call with details : " << details; - this->callId = callId; - this->peerPhoneNumber = details[CALL_PEER_NUMBER]; - this->peerName = details[CALL_PEER_NAME]; - initCallItem(); + QString peerNumber = details[CALL_PEER_NUMBER]; + QString peerName = details[CALL_PEER_NAME]; call_state startState = getStartStateFromDaemonCallState(details[CALL_STATE], details[CALL_TYPE]); - changeCurrentState(startState); - this->historyState = getHistoryStateFromDaemonCallState(details[CALL_STATE], details[CALL_TYPE]); - this->account = details[CALL_ACCOUNTID]; - this->recording = false; - this->startTime = new QDateTime(QDateTime::currentDateTime()); - this->stopTime = NULL; - this->historyItem = NULL; - this->historyItemWidget = NULL; + QString account = details[CALL_ACCOUNTID]; + Call * call = new Call(startState, callId, peerName, peerNumber, account); + call->startTime = new QDateTime(QDateTime::currentDateTime()); + call->recording = callManager.getIsRecording(callId); + call->historyState = getHistoryStateFromDaemonCallState(details[CALL_STATE], details[CALL_TYPE]); + return call; } Call::~Call() @@ -251,6 +247,7 @@ history_state Call::getHistoryStateFromType(QString type) { return INCOMING; } + return NONE; } call_state Call::getStartStateFromDaemonCallState(QString daemonCallState, QString daemonCallType) @@ -275,6 +272,14 @@ call_state Call::getStartStateFromDaemonCallState(QString daemonCallState, QStri { return CALL_STATE_RINGING; } + else if(daemonCallState == DAEMON_CALL_STATE_INIT_INCOMING) + { + return CALL_STATE_INCOMING; + } + else if(daemonCallState == DAEMON_CALL_STATE_INIT_RINGING) + { + return CALL_STATE_RINGING; + } else { return CALL_STATE_FAILURE; @@ -353,7 +358,7 @@ Contact * Call::findContactForNumberInKAddressBook(QString number) ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); MapStringInt addressBookSettings = configurationManager.getAddressbookSettings().value(); 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; for ( it = ab->begin(); it != ab->end(); ++it ) { @@ -558,6 +563,13 @@ void Call::hangUp() callManager.hangUp(callId); } +void Call::cancel() +{ + CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance(); + qDebug() << "Canceling call. callId : " << callId; + callManager.hangUp(callId); +} + void Call::hold() { CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance(); @@ -572,8 +584,8 @@ void Call::call() qDebug() << "account = " << account; if(account.isEmpty()) { - qDebug() << "account is empty"; - this->account = sflphone_kdeView::firstRegisteredAccount()->getAccountId(); + qDebug() << "account is empty, taking the first registered."; + this->account = sflphone_kdeView::firstRegisteredAccountId(); } if(!account.isEmpty()) { @@ -581,8 +593,8 @@ void Call::call() callManager.placeCall(account, callId, number); this->account = account; this->peerPhoneNumber = number; - Contact * contact = findContactForNumberInKAddressBook(peerPhoneNumber); - if(contact) this->peerName = contact->getNickName(); +// Contact * contact = findContactForNumberInKAddressBook(peerPhoneNumber); +// if(contact) this->peerName = contact->getNickName(); this->startTime = new QDateTime(QDateTime::currentDateTime()); this->historyState = OUTGOING; } @@ -647,7 +659,6 @@ void Call::warning() void Call::appendItemText(QString text) { - ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); QLabel * editNumber; switch(currentState) { diff --git a/sflphone-client-kde/src/Call.h b/sflphone-client-kde/src/Call.h index 143c0cb4ebfa5075e9cedeb6951bffe468a832ef..3d3ae20fc7de786f9c040bd9c78f0309f115dc63 100644 --- a/sflphone-client-kde/src/Call.h +++ b/sflphone-client-kde/src/Call.h @@ -113,6 +113,31 @@ class Call; typedef void (Call::*function)(); + +/** + * This class represents a call either actual (in the call list + * displayed in main window), either past (in the call history). + * A call is represented by an automate, with a list of states + * (enum call_state) and 2 lists of transition signals + * (call_action when the user performs an action on the UI and + * daemon_call_state when the daemon sends a stateChanged signal) + * When a transition signal is received, the automate calls a + * function then go to a new state according to the previous state + * of the call and the signal received. + * The functions to call and the new states to go to are placed in + * the maps actionPerformedStateMap, actionPerformedFunctionMap, + * stateChangedStateMap and stateChangedFunctionMap. + * Those maps are used by actionPerformed and stateChanged functions + * to handle the behavior of the automate. + * When an actual call goes to the state OVER, it becomes part of + * the call history. + * + * It may be better to handle call list and call history separately, + * and to use the class Item to handle their display, or a model/view + * way. For this it needs to handle the becoming of a call to a past call + * keeping the information gathered by the call and needed by the history + * call (history state, start time...). +**/ class Call { private: @@ -144,9 +169,34 @@ private: //Automate attributes + /** + * actionPerformedStateMap[orig_state][action] + * Map of the states to go to when the action action is + * performed on a call in state orig_state. + **/ static const call_state actionPerformedStateMap [11][5]; + + /** + * actionPerformedFunctionMap[orig_state][action] + * Map of the functions to call when the action action is + * performed on a call in state orig_state. + **/ static const function actionPerformedFunctionMap [11][5]; + + /** + * stateChangedStateMap[orig_state][daemon_new_state] + * Map of the states to go to when the daemon sends the signal + * callStateChanged with arg daemon_new_state + * on a call in state orig_state. + **/ static const call_state stateChangedStateMap [11][6]; + + /** + * stateChangedFunctionMap[orig_state][daemon_new_state] + * Map of the functions to call when the daemon sends the signal + * callStateChanged with arg daemon_new_state + * on a call in state orig_state. + **/ static const function stateChangedFunctionMap [11][6]; static const char * historyIcons[3]; @@ -161,12 +211,15 @@ private: static daemon_call_state toDaemonCallState(const QString & stateName); //Automate functions + // See actionPerformedFunctionMap and stateChangedFunctionMap + // to know when it is called. void nothing(); void accept(); void refuse(); void acceptTransf(); void acceptHold(); void hangUp(); + void cancel(); void hold(); void call(); void transfer(); @@ -180,13 +233,14 @@ private: public: //Constructors & Destructors - Call(QString callId); ~Call(); void initCallItem(); static Call * buildDialingCall(QString callId, const QString & peerName, QString account = ""); - static Call * buildIncomingCall(const QString & callId/*, const QString & from, const QString & account*/); + static Call * buildIncomingCall(const QString & callId); static Call * buildRingingCall(const QString & callId); static Call * buildHistoryCall(const QString & callId, uint startTimeStamp, uint stopTimeStamp, QString account, QString name, QString number, QString type); + static Call * buildExistingCall(QString callId); + static history_state getHistoryStateFromType(QString type); static call_state getStartStateFromDaemonCallState(QString daemonCallState, QString daemonCallType); static history_state getHistoryStateFromDaemonCallState(QString daemonCallState, QString daemonCallType); diff --git a/sflphone-client-kde/src/CallList.cpp b/sflphone-client-kde/src/CallList.cpp index ca189dee7763918ddb9e57d6b23890d990d74bab..9f2cb774456cb3f812375a2e78fd720d19bb9e64 100644 --- a/sflphone-client-kde/src/CallList.cpp +++ b/sflphone-client-kde/src/CallList.cpp @@ -31,11 +31,10 @@ CallList::CallList() ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); QStringList callList = callManager.getCallList(); qDebug() << "Call List = " << callList; - callIdCpt = 0; calls = new QVector<Call *>(); for(int i = 0 ; i < callList.size() ; i++) { - calls->append(new Call(callList[i])); + calls->append(Call::buildExistingCall(callList[i])); } MapStringString historyMap = configurationManager.getHistory().value(); qDebug() << "Call History = " << historyMap; @@ -49,7 +48,7 @@ CallList::CallList() QString name = param[2]; uint stopTimeStamp = param[3].toUInt(); QString account = param[4]; - calls->append(Call::buildHistoryCall(getAndIncCallId(), startTimeStamp, stopTimeStamp, account, name, number, type)); + calls->append(Call::buildHistoryCall(generateCallId(), startTimeStamp, stopTimeStamp, account, name, number, type)); } } @@ -127,10 +126,11 @@ Call * CallList::operator[](int ind) return (*calls)[ind]; } -QString CallList::getAndIncCallId() + +QString CallList::generateCallId() { - QString res = QString::number(callIdCpt++); - + int id = qrand(); + QString res = QString::number(id); return res; } @@ -141,7 +141,7 @@ int CallList::size() Call * CallList::addDialingCall(const QString & peerName, QString account) { - Call * call = Call::buildDialingCall(getAndIncCallId(), peerName, account); + Call * call = Call::buildDialingCall(generateCallId(), peerName, account); calls->append(call); return call; } diff --git a/sflphone-client-kde/src/CallList.h b/sflphone-client-kde/src/CallList.h index 2ca3dd10b1f0d304b276bbc1db4df9c7acdda67a..e9ff5341b32a19a4822620b7e63886495eb733c7 100644 --- a/sflphone-client-kde/src/CallList.h +++ b/sflphone-client-kde/src/CallList.h @@ -35,7 +35,6 @@ Q_OBJECT private: QVector<Call *> * calls; - int callIdCpt; public: @@ -58,7 +57,7 @@ public: Call * addRingingCall(const QString & callId); //GSetter - QString getAndIncCallId(); + QString generateCallId(); public slots: void clearHistory(); diff --git a/sflphone-client-kde/src/Codec.cpp b/sflphone-client-kde/src/Codec.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3e94070c0de39b524cf2153406c0ac2d1a2cefa9 --- /dev/null +++ b/sflphone-client-kde/src/Codec.cpp @@ -0,0 +1,64 @@ +/*************************************************************************** + * Copyright (C) 2009 by Savoir-Faire Linux * + * Author : Jérémy Quentin * + * jeremy.quentin@savoirfairelinux.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#include "Codec.h" + +#include "configurationmanager_interface_singleton.h" +#include "sflphone_const.h" + +Codec::Codec(int payload, bool enabled) +{ + ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); + QStringList details = configurationManager.getCodecDetails(payload); + this->payload = QString::number(payload); + this->enabled = enabled; + this->name = details[CODEC_NAME]; + this->frequency = details[CODEC_SAMPLE_RATE]; + this->bitrate = details[CODEC_BIT_RATE]; + this->bandwidth = details[CODEC_BANDWIDTH]; +} + +QString Codec::getPayload() const +{ return payload; } +QString Codec::getName() const +{ return name; } +QString Codec::getFrequency() const +{ return frequency; } +QString Codec::getBitrate() const +{ return bitrate; } +QString Codec::getBandwidth() const +{ return bandwidth; } +bool Codec::isEnabled() const +{ return enabled; } + +void Codec::setPayload(QString payload) +{ this->payload = payload; } +void Codec::setName(QString name) +{ this->name = name; } +void Codec::setFrequency(QString frequency) +{ this->frequency = frequency; } +void Codec::setBitrate(QString bitrate) +{ this->bitrate = bitrate; } +void Codec::setBandwidth(QString bandwidth) +{ this->bandwidth = bandwidth; } +void Codec::setEnabled(bool enabled) +{ this->enabled = enabled; } + + diff --git a/sflphone-client-kde/src/Codec.h b/sflphone-client-kde/src/Codec.h new file mode 100644 index 0000000000000000000000000000000000000000..9a86d604d5a9a293cf7a1e9b2a9b59cd463d86e8 --- /dev/null +++ b/sflphone-client-kde/src/Codec.h @@ -0,0 +1,66 @@ +/*************************************************************************** + * Copyright (C) 2009 by Savoir-Faire Linux * + * Author : Jérémy Quentin * + * jeremy.quentin@savoirfairelinux.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#ifndef CODEC_H +#define CODEC_H + +#include <QObject> +#include <QtCore/QString> + +/** + @author Jérémy Quentin <jeremy.quentin@gmail.com> +*/ +class Codec : public QObject +{ +Q_OBJECT +private: + QString payload; + QString name; + QString frequency; + QString bitrate; + QString bandwidth; + bool enabled; + +public: + Codec(int payload, bool enabled); +// Codec(const Codec & codec); + +// ~Codec(); + + QString getPayload() const; + QString getName() const; + QString getFrequency() const; + QString getBitrate() const; + QString getBandwidth() const; + bool isEnabled() const; + + void setPayload(QString payload); + void setName(QString name); + void setFrequency(QString frequency); + void setBitrate(QString bitrate); + void setBandwidth(QString bandwidth); + void setEnabled(bool enabled); + + Codec & operator=(const Codec&); + + +}; + +#endif diff --git a/sflphone-client-kde/src/CodecListModel.cpp b/sflphone-client-kde/src/CodecListModel.cpp new file mode 100644 index 0000000000000000000000000000000000000000..60b7866dd52c34899ef51f2290811393bd249a90 --- /dev/null +++ b/sflphone-client-kde/src/CodecListModel.cpp @@ -0,0 +1,203 @@ +/*************************************************************************** + * Copyright (C) 2009 by Savoir-Faire Linux * + * Author : Jérémy Quentin * + * jeremy.quentin@savoirfairelinux.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#include "CodecListModel.h" + +#include <QtCore/QSize> +#include <QtCore/QDebug> +#include "configurationmanager_interface_singleton.h" + +CodecListModel::CodecListModel(QObject *parent) + : QAbstractTableModel(parent) +{ + this->codecs = QList<Codec *>(); + ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); + QStringList activeCodecList = configurationManager.getActiveCodecList(); + setActiveCodecList(activeCodecList); +} + + +CodecListModel::~CodecListModel() +{ +} + + +QVariant CodecListModel::data ( const QModelIndex & index, int role) const +{ + if (!index.isValid()) + return QVariant(); + + const Codec * codec = codecs[index.row()]; + if(index.column() == 0 && role == Qt::DisplayRole) + { + return QVariant(codec->getName()); + } + else if(index.column() == 0 && role == Qt::CheckStateRole) + { + return QVariant(codec->isEnabled() ? Qt::Checked : Qt::Unchecked); + } + else if(index.column() == 1 && role == Qt::DisplayRole) + { + return QVariant(codec->getFrequency()); + } + else if(index.column() == 2 && role == Qt::DisplayRole) + { + return QVariant(codec->getBitrate()); + } + else if(index.column() == 3 && role == Qt::DisplayRole) + { + return QVariant(codec->getBandwidth()); + } + + return QVariant(); +} + + +int CodecListModel::rowCount(const QModelIndex & parent) const +{ + return codecs.count(); +} + +int CodecListModel::columnCount(const QModelIndex & parent) const +{ + return 4; +} + + +QVariant CodecListModel::headerData(int section , Qt::Orientation orientation, int role) const +{ + if (section == 0 && orientation == Qt::Horizontal && role == Qt::DisplayRole) + { + return QVariant("Codec"); + } + else if (section == 1 && orientation == Qt::Horizontal && role == Qt::DisplayRole) + { + return QVariant("Frequency"); + } + else if (section == 2 && orientation == Qt::Horizontal && role == Qt::DisplayRole) + { + return QVariant("Bitrate"); + } + else if (section == 3 && orientation == Qt::Horizontal && role == Qt::DisplayRole) + { + return QVariant("Bandwidth"); + } + return QVariant(); +} + +Qt::ItemFlags CodecListModel::flags(const QModelIndex & index) const +{ + if (index.column() == 0) + { + return QAbstractItemModel::flags(index) | Qt::ItemIsUserCheckable; + } + return QAbstractItemModel::flags(index); +} + +bool CodecListModel::setData ( const QModelIndex & index, const QVariant &value, int role) +{ + qDebug() << "setData"; + if (index.isValid() && index.column() == 0 && role == Qt::CheckStateRole) { + codecs[index.row()]->setEnabled(value.toBool()); + emit dataChanged(index, index); + return true; + } + return false; +} + +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; +} + +bool CodecListModel::codecDown( int index ) +{ + if(index >= 0 && index < rowCount()) + { + codecs.swap(index + 1, index); + emit dataChanged(this->index(index, 0, QModelIndex()), this->index(index + 1, columnCount(), QModelIndex())); + return true; + } + return false; +} + +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) +{ + this->codecs = QList<Codec *>(); + ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); + QStringList codecList = configurationManager.getCodecList(); + QStringList activeCodecList = activeCodecListToSet; + #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])); + } + } + + emit dataChanged(this->index(0, 0, QModelIndex()), this->index(rowCount(), columnCount(), QModelIndex())); +} diff --git a/sflphone-client-kde/src/CodecListModel.h b/sflphone-client-kde/src/CodecListModel.h new file mode 100644 index 0000000000000000000000000000000000000000..26b63b642c12baa619abed2dedaf1054f0bf1673 --- /dev/null +++ b/sflphone-client-kde/src/CodecListModel.h @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright (C) 2009 by Savoir-Faire Linux * + * Author : Jérémy Quentin * + * jeremy.quentin@savoirfairelinux.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#ifndef CODECLISTMODEL_H +#define CODECLISTMODEL_H + +#include <QAbstractItemModel> +#include "Codec.h" + +/** + @author Jérémy Quentin <jeremy.quentin@gmail.com> +*/ +class CodecListModel : public QAbstractTableModel +{ +Q_OBJECT +private: + QList<Codec *> codecs; + +public: + CodecListModel(QObject *parent = 0); + + ~CodecListModel(); + void setCodecs(QList<Codec *> codecs); + + QVariant data ( const QModelIndex & index, int role = Qt::DisplayRole ) const; + int rowCount(const QModelIndex & parent = QModelIndex()) const; + int columnCount(const QModelIndex & parent = QModelIndex()) const; +// bool insertRows(int position, int rows, const QModelIndex &parent); + QVariant headerData(int section , Qt::Orientation orientation, int role) const; + Qt::ItemFlags flags(const QModelIndex & index) const; + virtual bool setData ( const QModelIndex & index, const QVariant &value, int role); + + bool codecUp( int index ); + 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/Contact.cpp b/sflphone-client-kde/src/Contact.cpp index 60d32f21a85e7232ac29269f0578b54b70588665..af3ee5ea9644a29387c583e63c4d65456de471b5 100644 --- a/sflphone-client-kde/src/Contact.cpp +++ b/sflphone-client-kde/src/Contact.cpp @@ -33,6 +33,7 @@ Contact::Contact(Addressee addressee, const PhoneNumber & number, bool displayPh this->nickName = addressee.nickName(); this->phoneNumber = number.number(); this->type = number.type(); + this->displayPhoto = displayPhoto; if(displayPhoto) { this->photo = new Picture(addressee.photo()); @@ -42,7 +43,7 @@ Contact::Contact(Addressee addressee, const PhoneNumber & number, bool displayPh this->photo = NULL; } - initItem(displayPhoto); + initItem(); } @@ -53,10 +54,15 @@ Contact::~Contact() delete photo; } -void Contact::initItem(bool displayPhoto) +void Contact::initItem() { this->item = new QListWidgetItem(); this->item->setSizeHint(QSize(140,CONTACT_ITEM_HEIGHT)); + initItemWidget(); +} + +void Contact::initItemWidget() +{ this->itemWidget = new ContactItemWidget(this, displayPhoto); } @@ -90,13 +96,4 @@ PhoneNumber::Type Contact::getType() const return type; } -QListWidgetItem * Contact::getItem() -{ - return item; -} - -QWidget * Contact::getItemWidget() -{ - return itemWidget; -} diff --git a/sflphone-client-kde/src/Contact.h b/sflphone-client-kde/src/Contact.h index 383aaa688e72391c83621a22d4e5573f85fe39b4..bf4f4f987ca885bf41ebd3fcf4960b76ea49a7be 100644 --- a/sflphone-client-kde/src/Contact.h +++ b/sflphone-client-kde/src/Contact.h @@ -28,25 +28,26 @@ #include <kabc/picture.h> #include <kabc/phonenumber.h> +#include "Item.h" +#include "ContactItemWidget.h" + using namespace KABC; +class ContactItemWidget; + /** @author Jérémy Quentin <jeremy.quentin@savoirfairelinux.com> */ -class Contact{ +class Contact : public QObject, public Item<ContactItemWidget>{ private: - QListWidgetItem * item; - QWidget * itemWidget; QString firstName; QString secondName; QString nickName; QString phoneNumber; Picture * photo; PhoneNumber::Type type; + bool displayPhoto; -private: - void initItem(bool displayPhoto); - public: //Constructors & Destructors @@ -60,8 +61,10 @@ public: QString getSecondName() const; const Picture * getPhoto() const; PhoneNumber::Type getType() const; - QListWidgetItem * getItem(); - QWidget * getItemWidget(); + void initItem(); + +protected: + void initItemWidget(); }; diff --git a/sflphone-client-kde/src/ContactItemWidget.h b/sflphone-client-kde/src/ContactItemWidget.h index a3d4e3d41ea41fb45b28ffc8bc27b69af78bc093..517d0a78dc169411fd1e1be48584c6d53cfb3a8c 100644 --- a/sflphone-client-kde/src/ContactItemWidget.h +++ b/sflphone-client-kde/src/ContactItemWidget.h @@ -25,6 +25,8 @@ #include <QtGui/QLabel> #include "Contact.h" +class Contact; + /** @author Jérémy Quentin <jeremy.quentin@savoirfairelinux.com> */ diff --git a/sflphone-client-kde/src/Item.cpp b/sflphone-client-kde/src/Item.cpp new file mode 100644 index 0000000000000000000000000000000000000000..705cb2948c4eefbf44912f1b598ed4c4cf23c8d9 --- /dev/null +++ b/sflphone-client-kde/src/Item.cpp @@ -0,0 +1,22 @@ +/*************************************************************************** + * Copyright (C) 2009 by Savoir-Faire Linux * + * Author : Jérémy Quentin * + * jeremy.quentin@savoirfairelinux.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#include "Item.h" + diff --git a/sflphone-client-kde/src/Item.h b/sflphone-client-kde/src/Item.h new file mode 100644 index 0000000000000000000000000000000000000000..c859375c07cfbabc6091b52b67b13745106e99e9 --- /dev/null +++ b/sflphone-client-kde/src/Item.h @@ -0,0 +1,92 @@ +/*************************************************************************** + * Copyright (C) 2009 by Savoir-Faire Linux * + * Author : Jérémy Quentin * + * jeremy.quentin@savoirfairelinux.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#ifndef ITEM_H +#define ITEM_H + +#include <QObject> +#include <QListWidgetItem> +#include <QWidget> + +/** + @author Jérémy Quentin <jeremy.quentin@gmail.com> + Represents an item of a list, that is displayed + by an QListWidgetItem with a QWidget inside. + The two objects are contained in this class, but their + initializations are pure virtual. + The template class WIDGET_TYPE should be derived from + QWidget. + The implementation of initItem should call initItemWidget +*/ +template<class WIDGET_TYPE>class Item +{ +protected: + QListWidgetItem * item; + WIDGET_TYPE * itemWidget; + + +public: + Item(QListWidget *list=0) + { + item = NULL; + itemWidget = NULL; + } + + /** + * Be careful that it is not already deleted by QObject + * Commented for safety reasons... + */ + virtual ~Item() + { +// delete item; +// delete itemWidget; + } + + QListWidgetItem * getItem() + { + return item; + } + WIDGET_TYPE * getItemWidget() + { + return itemWidget; + } + + const QListWidgetItem * getItem() const + { + return item; + } + const WIDGET_TYPE * getItemWidget() const + { + return itemWidget; + } + + /** + * Initializes the item and widget + * Implementation should call initItemWidget! + */ + virtual void initItem() = 0; + +protected: + virtual void initItemWidget() = 0; + + +}; + +#endif diff --git a/sflphone-client-kde/src/SortableCodecListWidget.cpp b/sflphone-client-kde/src/SortableCodecListWidget.cpp new file mode 100644 index 0000000000000000000000000000000000000000..27587446b7b735b6c972b8e07a930009d13fe343 --- /dev/null +++ b/sflphone-client-kde/src/SortableCodecListWidget.cpp @@ -0,0 +1,145 @@ +/*************************************************************************** + * Copyright (C) 2009 by Savoir-Faire Linux * + * Author : Jérémy Quentin * + * jeremy.quentin@savoirfairelinux.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#include "SortableCodecListWidget.h" + +#include <QHBoxLayout> +#include <QVBoxLayout> +#include <QDebug> + +SortableCodecListWidget::SortableCodecListWidget(QWidget *parent) + : QWidget(parent) +{ + codecTable = new QTableView(this); + codecTable->setObjectName("codecTable"); +// CodecListModel * model = new CodecListModel(); +// codecTable->setModel(model); +// codecTable->resizeColumnsToContents(); +// codecTable->resizeRowsToContents(); + codecTable->setSelectionBehavior(QAbstractItemView::SelectRows); + + codecUpButton = new KPushButton(this); + codecUpButton->setObjectName("codecUpButton"); + codecUpButton->setIcon(KIcon("go-up")); + + codecDownButton = new KPushButton(this); + codecDownButton->setObjectName("codecDownButton"); + codecDownButton->setIcon(KIcon("go-down")); + + QHBoxLayout * mainLayout = new QHBoxLayout(this); + QVBoxLayout * buttonsLayout = new QVBoxLayout(); + + buttonsLayout->addWidget(codecUpButton); + buttonsLayout->addWidget(codecDownButton); + + mainLayout->addWidget(codecTable); + mainLayout->addLayout(buttonsLayout); + + QMetaObject::connectSlotsByName(this); +} + +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() +{ + return (CodecListModel *) codecTable->model(); +} + +void SortableCodecListWidget::on_codecUpButton_clicked() +{ + qDebug() << "on_toolButton_codecUpButton_clicked"; + CodecListModel * model = (CodecListModel *) codecTable->model(); + int currentRow = selectedRow(); + model->codecUp(currentRow); + setSelectedRow(currentRow - 1); +} + +void SortableCodecListWidget::on_codecDownButton_clicked() +{ + qDebug() << "on_codecDownButton_clicked"; + CodecListModel * model = (CodecListModel *) codecTable->model(); + int currentRow = selectedRow(); + model->codecDown(currentRow); + setSelectedRow(currentRow + 1); +} + +void SortableCodecListWidget::updateCommands() +{ + qDebug() << "SortableCodecListWidget::updateCommands"; + bool buttonsEnabled[2] = {true,true}; + if(selectedRow() == -1) + { + buttonsEnabled[0] = false; + buttonsEnabled[1] = false; + } + else + { + if(selectedRow() == 0) + { + buttonsEnabled[0] = false; + } + if(selectedRow() == codecTable->model()->rowCount() - 1) + { + buttonsEnabled[1] = false; + } + } + codecUpButton->setEnabled(buttonsEnabled[0]); + codecDownButton->setEnabled(buttonsEnabled[1]); +} + +QModelIndex SortableCodecListWidget::selectedIndex() +{ + QItemSelectionModel *selection = codecTable->selectionModel(); + const QModelIndexList selectedIndexes = selection->selectedIndexes(); + if ( !selectedIndexes.isEmpty() && selectedIndexes[0].isValid() ) + return selectedIndexes[0]; + else + return QModelIndex(); + } + +int SortableCodecListWidget::selectedRow() +{ + QModelIndex index = selectedIndex(); + if(index.isValid()) + return index.row(); + else + return -1; +} + +void SortableCodecListWidget::setSelectedRow(int row) +{ + QItemSelectionModel * selection = codecTable->selectionModel(); + QAbstractItemModel * model = codecTable->model(); + QItemSelection newSelection = QItemSelection(model->index(row, 0, QModelIndex()), model->index(row +1 , model->columnCount(), QModelIndex())); + selection->clear(); + 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 new file mode 100644 index 0000000000000000000000000000000000000000..0ea9eae8fecad5859968f56d28585be317e81f66 --- /dev/null +++ b/sflphone-client-kde/src/SortableCodecListWidget.h @@ -0,0 +1,64 @@ +/*************************************************************************** + * Copyright (C) 2009 by Savoir-Faire Linux * + * Author : Jérémy Quentin * + * jeremy.quentin@savoirfairelinux.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#ifndef SORTABLECODECLISTWIDGET_H +#define SORTABLECODECLISTWIDGET_H + +#include <QWidget> +#include <KPushButton> +#include <QTableView> +#include "CodecListModel.h" + +/** + @author Jérémy Quentin <jeremy.quentin@gmail.com> +*/ +class SortableCodecListWidget : public QWidget +{ +Q_OBJECT +private: + KPushButton * codecUpButton; + KPushButton * codecDownButton; + QTableView * codecTable; + +public: + SortableCodecListWidget(QWidget *parent = 0); + + virtual void setModel(CodecListModel * model); + virtual CodecListModel * model(); + +private slots: + void on_codecUpButton_clicked(); + void on_codecDownButton_clicked(); + +public slots: + void updateCommands(); + +private: + QModelIndex selectedIndex(); + int selectedRow(); + + void setSelectedRow(int row); + +signals: + void dataChanged(); + +}; + +#endif diff --git a/sflphone-client-kde/src/conf/ConfigurationDialog.cpp b/sflphone-client-kde/src/conf/ConfigurationDialog.cpp index 9ed7f643854e187cf2bdcec6ebaf2725c404f57e..a6477354e10b424fe3ce3e807bf2d196239d344b 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 02ac0fe0dc4b1477a9675a0651c708e21b883f6c..7fc0009b9caeb04a68cf32a5099a349c86a83ba1 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 e6f89cdd33ebc64d95def2231e93725d69c011fe..f73b8de984f9cff49cd3004f30c4fab72c76e368 100644 --- a/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp +++ b/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp @@ -26,9 +26,10 @@ ConfigurationSkeleton::ConfigurationSkeleton() : ConfigurationSkeletonBase() { - qDebug() << "Yoooooooouuuuupppppppiiiiii"; + qDebug() << "Building ConfigurationSkeleton"; + codecListModel = new CodecListModel(); readConfig(); - isImmutable( QString::fromLatin1 ( "alsaPlugin" ) ); + } ConfigurationSkeleton * ConfigurationSkeleton::instance = NULL; @@ -45,6 +46,11 @@ ConfigurationSkeleton::~ConfigurationSkeleton() { } +CodecListModel * ConfigurationSkeleton::getCodecListModel() +{ + return codecListModel; +} + void ConfigurationSkeleton::readConfig() { qDebug() << "\nReading config"; @@ -151,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]); @@ -181,6 +188,8 @@ void ConfigurationSkeleton::writeConfig() ////General settings//// //////////////////////// + qDebug() << "Writing General settings"; + //Call history settings if(enableHistory() != configurationManager.getHistoryEnabled()) configurationManager.setHistoryEnabled(); configurationManager.setHistoryLimit(historyMax()); @@ -192,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(); @@ -205,6 +216,8 @@ void ConfigurationSkeleton::writeConfig() ////Accounts settings//// ///////////////////////// + qDebug() << "Writing Accounts settings"; + // saveAccountList(); @@ -216,6 +229,8 @@ void ConfigurationSkeleton::writeConfig() ////Audio settings//// ////////////////////// + qDebug() << "Writing Audio settings"; + //Audio Interface settings int prevManager = configurationManager.getAudioManager(); int newManager = interface(); @@ -229,6 +244,7 @@ void ConfigurationSkeleton::writeConfig() configurationManager.setRingtoneChoice(ringtone()); //codecs settings + qDebug() << "activeCodecList = " << activeCodecList(); configurationManager.setActiveCodecList(activeCodecList()); @@ -252,6 +268,8 @@ void ConfigurationSkeleton::writeConfig() ////Record settings//// /////////////////////// + qDebug() << "Writing Record settings"; + QString destination = destinationFolder(); qDebug() << destination ; configurationManager.setRecordPath(destination); @@ -261,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(); @@ -273,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(); @@ -285,4 +308,12 @@ void ConfigurationSkeleton::writeConfig() readConfig(); } +QStringList ConfigurationSkeleton::activeCodecList() const +{ + return codecListModel->getActiveCodecList(); +} +void ConfigurationSkeleton::setActiveCodecList(const QStringList & v) +{ + codecListModel->setActiveCodecList(v); +} diff --git a/sflphone-client-kde/src/conf/ConfigurationSkeleton.h b/sflphone-client-kde/src/conf/ConfigurationSkeleton.h index a7f31d68b405aac9198aba9312aa939291bebc32..71386a50701c0e72979caeadd154a15cd5973b5b 100644 --- a/sflphone-client-kde/src/conf/ConfigurationSkeleton.h +++ b/sflphone-client-kde/src/conf/ConfigurationSkeleton.h @@ -24,6 +24,7 @@ #include <QWidget> #include "kcfg_settings.h" +#include "CodecListModel.h" /** @author Jérémy Quentin <jeremy.quentin@gmail.com> @@ -34,6 +35,8 @@ Q_OBJECT private: static ConfigurationSkeleton * instance; + + CodecListModel * codecListModel; public: ConfigurationSkeleton(); @@ -47,6 +50,10 @@ public: static ConfigurationSkeleton * self(); + QStringList activeCodecList() const; + void setActiveCodecList(const QStringList & v); + + CodecListModel * getCodecListModel(); // protected: diff --git a/sflphone-client-kde/src/conf/dlgaccounts.cpp b/sflphone-client-kde/src/conf/dlgaccounts.cpp index f0732f85e8c26f9eff9d3a0e99da26b1cc1ffcdd..9179626e67969216fa06de7aea74777ac15c4c81 100644 --- a/sflphone-client-kde/src/conf/dlgaccounts.cpp +++ b/sflphone-client-kde/src/conf/dlgaccounts.cpp @@ -33,7 +33,6 @@ DlgAccounts::DlgAccounts(KConfigDialog *parent) setupUi(this); ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); - QStyle * style = QApplication::style(); button_accountUp->setIcon(KIcon("go-up")); button_accountDown->setIcon(KIcon("go-down")); button_accountAdd->setIcon(KIcon("list-add")); @@ -109,7 +108,6 @@ void DlgAccounts::saveAccountList() } } qDebug() << currentId << " : " << current.isChecked(); - configurationManager.sendRegister(currentId, current.isChecked() ? 1 : 0 ); } //remove accounts that are in the configurationManager but not in the client for (int i = 0; i < accountIds.size(); i++) @@ -205,7 +203,7 @@ void DlgAccounts::addAccountToAccountList(Account * account) qDebug() << "addAccountToAccountList"; QListWidgetItem * item = account->getItem(); QWidget * widget = account->getItemWidget(); - connect(widget, SIGNAL(checkStateChanged()), + connect(widget, SIGNAL(checkStateChanged(bool)), this, SLOT(changedAccountList())); qDebug() << "item->isHidden()" << item->isHidden(); listWidget_accountList->addItem(item); @@ -215,6 +213,7 @@ void DlgAccounts::addAccountToAccountList(Account * account) void DlgAccounts::changedAccountList() { + qDebug() << "changedAccountList"; accountListHasChanged = true; emit updateButtons(); toolButton_accountsApply->setEnabled(hasChanged()); @@ -237,7 +236,7 @@ void DlgAccounts::on_button_accountUp_clicked() QListWidgetItem * prevItem = listWidget_accountList->takeItem(currentRow); Account * account = accountList->getAccountByItem(prevItem); //we need to build a new item to set the itemWidget back - account->initAccountItem(); + account->initItem(); QListWidgetItem * item = account->getItem(); AccountItemWidget * widget = account->getItemWidget(); accountList->upAccount(currentRow); @@ -254,7 +253,7 @@ void DlgAccounts::on_button_accountDown_clicked() QListWidgetItem * prevItem = listWidget_accountList->takeItem(currentRow); Account * account = accountList->getAccountByItem(prevItem); //we need to build a new item to set the itemWidget back - account->initAccountItem(); + account->initItem(); QListWidgetItem * item = account->getItem(); AccountItemWidget * widget = account->getItemWidget(); accountList->downAccount(currentRow); @@ -297,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 0048b161954c45f5831794baff6ecf528c610c0f..779a3dc5705b55829beaed96a867605e98ffdfe1 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 dba951041646efb354ad4631e262db625021f71c..8a29233bca28d592ca06d1e65b27886a9e6aa10d 100644 --- a/sflphone-client-kde/src/conf/dlgaudio.cpp +++ b/sflphone-client-kde/src/conf/dlgaudio.cpp @@ -33,25 +33,38 @@ DlgAudio::DlgAudio(KConfigDialog *parent) { setupUi(this); - ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); - QStyle * style = QApplication::style(); KUrlRequester_ringtone->setMode(KFile::File | KFile::ExistingOnly); KUrlRequester_ringtone->lineEdit()->setObjectName("kcfg_ringtone"); 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(toolButton_codecUp, SIGNAL(clicked()), this, SLOT(codecTableChanged())); - connect(toolButton_codecDown, SIGNAL(clicked()), this, SLOT(codecTableChanged())); + 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(this, SIGNAL(updateButtons()), parent, SLOT(updateButtons())); + connect(this, SIGNAL(updateButtons()), + parent, SLOT(updateButtons())); + + connect(sortableCodecList, SIGNAL(dataChanged()), + this, SLOT(codecTableChanged())); + } @@ -67,96 +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(); - #if QT_VERSION >= 0x040500 - activeCodecList.removeDuplicates(); - #else - for (int i = 0 ; i < activeCodecList.size() ; i++) - { - if(activeCodecList.lastIndexOf(activeCodecList[i]) != i) - { - activeCodecList.removeAt(i); - i--; - } - } - #endif - - for (int i=0 ; i<activeCodecList.size() ; i++) - { - if(! codecList.contains(activeCodecList[i])) - { - activeCodecList.removeAt(i); - i--; - } - } - QStringList codecListToDisplay = activeCodecList; - for (int i=0 ; i<codecList.size() ; i++) - { - if(! activeCodecList.contains(codecList[i])) - { - codecListToDisplay << codecList[i]; - } - } - 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; } @@ -208,75 +233,75 @@ void DlgAudio::updateAlsaSettings() } } -void DlgAudio::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; - } - else 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_tableWidget_codecs_currentCellChanged(int currentRow) -{ - qDebug() << "on_tableWidget_codecs_currentCellChanged"; - int nbCol = tableWidget_codecs->columnCount(); - for(int i = 0 ; i < nbCol ; i++) - { - tableWidget_codecs->setRangeSelected(QTableWidgetSelectionRange(currentRow, 0, currentRow, nbCol - 1), true); - } - updateCodecListCommands(); -} -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 15c1f8f70b26d0d6dbaf22772282e9ccd9d651b8..74fe3db72b88cd2f02fb7eaf9c7a51167b539d09 100644 --- a/sflphone-client-kde/src/conf/dlgaudio.h +++ b/sflphone-client-kde/src/conf/dlgaudio.h @@ -46,12 +46,12 @@ public slots: void updateSettings(); bool hasChanged(); void updateAlsaSettings(); + void applyCustomSettings(); private slots: - void updateCodecListCommands(); - void on_tableWidget_codecs_currentCellChanged(int currentRow); - 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 08c842887c2194360655e7bf54787777bd6f6ed9..a73315057e53ed48b8623718b5cc564acdd67920 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> @@ -202,32 +122,15 @@ <string>ALSA settings</string> </property> <layout class="QFormLayout" name="formLayout_4"> + <property name="fieldGrowthPolicy"> + <enum>QFormLayout::ExpandingFieldsGrow</enum> + </property> <property name="verticalSpacing"> <number>5</number> </property> <property name="leftMargin"> <number>9</number> </property> - <item row="3" column="0"> - <widget class="QLabel" name="label2_in"> - <property name="text"> - <string>In</string> - </property> - <property name="buddy"> - <cstring>kcfg_alsaInputDevice</cstring> - </property> - </widget> - </item> - <item row="5" column="0"> - <widget class="QLabel" name="label3_out"> - <property name="text"> - <string>Out</string> - </property> - <property name="buddy"> - <cstring>kcfg_alsaOutputDevice</cstring> - </property> - </widget> - </item> <item row="0" column="0"> <widget class="QLabel" name="label1_alsaPugin"> <property name="text"> @@ -245,14 +148,34 @@ </property> </widget> </item> - <item row="3" column="1"> + <item row="2" column="0"> + <widget class="QLabel" name="label2_in"> + <property name="text"> + <string>In</string> + </property> + <property name="buddy"> + <cstring>kcfg_alsaInputDevice</cstring> + </property> + </widget> + </item> + <item row="2" column="1"> <widget class="KComboBox" name="kcfg_alsaInputDevice"> <property name="sizeAdjustPolicy"> <enum>QComboBox::AdjustToContents</enum> </property> </widget> </item> - <item row="5" column="1"> + <item row="4" column="0"> + <widget class="QLabel" name="label3_out"> + <property name="text"> + <string>Out</string> + </property> + <property name="buddy"> + <cstring>kcfg_alsaOutputDevice</cstring> + </property> + </widget> + </item> + <item row="4" column="1"> <widget class="KComboBox" name="kcfg_alsaOutputDevice"> <property name="sizeAdjustPolicy"> <enum>QComboBox::AdjustToContents</enum> @@ -308,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 3c97898f5cd30bd11aca1a278a9a2bd93482cfff..49181a1b632ff31dbce54d14ac9a6a4802810001 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 c90d937a82b9467862627d82d0798fc2287ed8e0..11d1fc817d6c834d4286b09c288411a43e6fcd07 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> @@ -54,9 +66,11 @@ <entry name="ringtone" type="Path"> <label>Defines which ringtone is used.</label> </entry> + <!-- <entry name="activeCodecList" type="StringList"> <label>Defines which ALSA plugin to use.</label> </entry> + --> <entry name="alsaPlugin" type="String"> <label>Defines which ALSA plugin to use.</label> </entry> @@ -69,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> @@ -84,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 ae4bd9142787bf43d2ba0ce85881f4f0fe06606d..c6de33b710fe18315102c533ab8832d3b38d7251 100644 --- a/sflphone-client-kde/src/main.cpp +++ b/sflphone-client-kde/src/main.cpp @@ -16,6 +16,11 @@ #include "conf/ConfigurationDialog.h" +#include <QTableView> +#include <QListView> +#include "CodecListModel.h" +#include "SortableCodecListWidget.h" + static const char description[] = "A KDE 4 Client for SFLphone"; @@ -39,9 +44,7 @@ int main(int argc, char **argv) KLocalizedString(), "http://www.sflphone.org.", "sflphone@lists.savoirfairelinux.net"); - about.setProgramLogo(QVariant(QImage(ICON_SFLPHONE))); about.addAuthor( ki18n("Jérémy Quentin"), KLocalizedString(), "jeremy.quentin@savoirfairelinux.com" ); - about.setProgramIconName(ICON_SFLPHONE); about.setTranslator( ki18nc("NAME OF TRANSLATORS","Your names"), ki18nc("EMAIL OF TRANSLATORS","Your emails") ); KCmdLineArgs::init(argc, argv, &about); KCmdLineOptions options; @@ -52,11 +55,13 @@ int main(int argc, char **argv) //configuration dbus registerCommTypes(); - SFLPhone * fenetre = new SFLPhone(); InstanceInterface & instance = InstanceInterfaceSingleton::getInstance(); instance.Register(getpid(), APP_NAME); + +// SortableCodecListWidget * cl = new SortableCodecListWidget(); +// cl->show(); return app.exec(); } diff --git a/sflphone-client-kde/src/sflphone_const.h b/sflphone-client-kde/src/sflphone_const.h index 06d67cef2b1cd91e6d654cf6e066bc06db16a8ce..d7810672e513f15b1127539913b788f20a93fe81 100644 --- a/sflphone-client-kde/src/sflphone_const.h +++ b/sflphone-client-kde/src/sflphone_const.h @@ -167,6 +167,8 @@ #define DAEMON_CALL_STATE_INIT_CURRENT "CURRENT" #define DAEMON_CALL_STATE_INIT_HOLD "HOLD" #define DAEMON_CALL_STATE_INIT_BUSY "BUSY" +#define DAEMON_CALL_STATE_INIT_INCOMING "INCOMING" +#define DAEMON_CALL_STATE_INIT_RINGING "RINGING" #define DAEMON_CALL_STATE_INIT_INACTIVE "INACTIVE" #define DAEMON_CALL_TYPE_INCOMING "0" @@ -182,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" @@ -206,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 3049235f1a1c6ee6c872963a1614be2b2bedd420..3e144e160e7174a99852d97213c1684dda79bea9 100644 --- a/sflphone-client-kde/src/sflphone_kdeview.cpp +++ b/sflphone-client-kde/src/sflphone_kdeview.cpp @@ -105,11 +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())); connect(accountList, SIGNAL(accountListUpdated()), - this, SLOT(updateStatusMessage())); + this, SLOT(updateWindowCallState())); accountList->updateAccounts(); - + QPalette pal = QPalette(palette()); pal.setColor(QPalette::AlternateBase, Qt::lightGray); setPalette(pal); @@ -146,6 +151,8 @@ void sflphone_kdeView::loadWindow() updateVolumeControls(); updateDialpad(); updateSearchHistory(); + updateAddressBookEnabled(); + updateAddressBook(); } @@ -163,6 +170,19 @@ Account * sflphone_kdeView::firstRegisteredAccount() } } +QString sflphone_kdeView::firstRegisteredAccountId() +{ + Account * firstRegistered = firstRegisteredAccount(); + if(firstRegistered == NULL) + { + return QString(); + } + else + { + return firstRegistered->getAccountId(); + } +} + AccountList * sflphone_kdeView::getAccountList() { return accountList; @@ -463,7 +483,7 @@ void sflphone_kdeView::updateWindowCallState() item = listWidget_callList->currentItem(); if (!item) { - qDebug() << "No item selected. Updating window."; + qDebug() << "No item selected."; enabledActions[1] = false; enabledActions[2] = false; enabledActions[3] = false; @@ -479,57 +499,57 @@ void sflphone_kdeView::updateWindowCallState() switch (state) { case CALL_STATE_INCOMING: - qDebug() << "Reached CALL_STATE_INCOMING with call " << (*callList)[item]->getCallId() << ". Updating window."; + qDebug() << "Reached CALL_STATE_INCOMING with call " << (*callList)[item]->getCallId(); 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() << ". Updating window."; + qDebug() << "Reached CALL_STATE_RINGING with call " << (*callList)[item]->getCallId(); enabledActions[2] = false; enabledActions[3] = false; break; case CALL_STATE_CURRENT: qDebug() << "details = " << CallManagerInterfaceSingleton::getInstance().getCallDetails(call->getCallId()).value(); - qDebug() << "Reached CALL_STATE_CURRENT with call " << (*callList)[item]->getCallId() << ". Updating window."; + qDebug() << "Reached CALL_STATE_CURRENT with call " << (*callList)[item]->getCallId(); recordEnabled = true; break; case CALL_STATE_DIALING: - qDebug() << "Reached CALL_STATE_DIALING with call " << (*callList)[item]->getCallId() << ". Updating window."; + qDebug() << "Reached CALL_STATE_DIALING with call " << (*callList)[item]->getCallId(); enabledActions[2] = false; enabledActions[3] = false; enabledActions[4] = false; buttonIconFiles[0] = ICON_ACCEPT; break; case CALL_STATE_HOLD: - qDebug() << "Reached CALL_STATE_HOLD with call " << (*callList)[item]->getCallId() << ". Updating window."; + qDebug() << "Reached CALL_STATE_HOLD with call " << (*callList)[item]->getCallId(); buttonIconFiles[2] = ICON_UNHOLD; actionTexts[2] = ACTION_LABEL_UNHOLD; break; case CALL_STATE_FAILURE: - qDebug() << "Reached CALL_STATE_FAILURE with call " << (*callList)[item]->getCallId() << ". Updating window."; + qDebug() << "Reached CALL_STATE_FAILURE with call " << (*callList)[item]->getCallId(); enabledActions[0] = false; enabledActions[2] = false; enabledActions[3] = false; enabledActions[4] = false; break; case CALL_STATE_BUSY: - qDebug() << "Reached CALL_STATE_BUSY with call " << (*callList)[item]->getCallId() << ". Updating window."; + qDebug() << "Reached CALL_STATE_BUSY with call " << (*callList)[item]->getCallId(); enabledActions[0] = false; enabledActions[2] = false; enabledActions[3] = false; enabledActions[4] = false; break; case CALL_STATE_TRANSFER: - qDebug() << "Reached CALL_STATE_TRANSFER with call " << (*callList)[item]->getCallId() << ". Updating window."; + qDebug() << "Reached CALL_STATE_TRANSFER with call " << (*callList)[item]->getCallId(); buttonIconFiles[0] = ICON_EXEC_TRANSF; actionTexts[3] = ACTION_LABEL_GIVE_UP_TRANSF; transfer = true; recordEnabled = true; break; case CALL_STATE_TRANSF_HOLD: - qDebug() << "Reached CALL_STATE_TRANSF_HOLD with call " << (*callList)[item]->getCallId() << ". Updating window."; + qDebug() << "Reached CALL_STATE_TRANSF_HOLD with call " << (*callList)[item]->getCallId(); buttonIconFiles[0] = ICON_EXEC_TRANSF; buttonIconFiles[2] = ICON_UNHOLD; actionTexts[3] = ACTION_LABEL_GIVE_UP_TRANSF; @@ -553,10 +573,10 @@ void sflphone_kdeView::updateWindowCallState() item = listWidget_callHistory->currentItem(); buttonIconFiles[0] = ICON_ACCEPT; actionTexts[0] = ACTION_LABEL_CALL_BACK; - actionTexts[1] = ACTION_LABEL_GIVE_UP_SEARCH; +// actionTexts[1] = ACTION_LABEL_GIVE_UP_SEARCH; if (!item) { - qDebug() << "No item selected. Updating window."; + qDebug() << "No item selected."; enabledActions[0] = false; enabledActions[1] = false; enabledActions[2] = false; @@ -570,19 +590,19 @@ void sflphone_kdeView::updateWindowCallState() enabledActions[3] = false; enabledActions[4] = false; } - if(!lineEdit_searchHistory->text().isEmpty()) - { - enabledActions[1] = true; - } +// if(!lineEdit_searchHistory->text().isEmpty()) +// { +// enabledActions[1] = true; +// } } if(stackedWidget_screen->currentWidget() == page_addressBook) { item = listWidget_addressBook->currentItem(); buttonIconFiles[0] = ICON_ACCEPT; - actionTexts[1] = ACTION_LABEL_GIVE_UP_SEARCH; +// actionTexts[1] = ACTION_LABEL_GIVE_UP_SEARCH; if (!item) { - qDebug() << "No item selected. Updating window."; + qDebug() << "No item selected."; enabledActions[0] = false; enabledActions[1] = false; enabledActions[2] = false; @@ -596,12 +616,14 @@ void sflphone_kdeView::updateWindowCallState() enabledActions[3] = false; enabledActions[4] = false; } - if(!lineEdit_addressBook->text().isEmpty()) - { - enabledActions[1] = true; - } +// if(!lineEdit_addressBook->text().isEmpty()) +// { +// enabledActions[1] = true; +// } } + qDebug() << "Updating Window."; + action_accept->setEnabled(enabledActions[0]); action_refuse->setEnabled(enabledActions[1]); action_hold->setEnabled(enabledActions[2]); @@ -622,6 +644,8 @@ void sflphone_kdeView::updateWindowCallState() action_transfer->setChecked(transfer); action_record->setChecked(recordActivated); + + qDebug() << "Window updated."; } void sflphone_kdeView::updateSearchHistory() @@ -664,23 +688,37 @@ void sflphone_kdeView::updateAddressBook() { QListWidgetItem * item = listWidget_addressBook->takeItem(0); qDebug() << "take item " << item->text(); + delete item; } - 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++) + if(isAddressBookEnabled()) { - 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) @@ -703,8 +741,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; @@ -1337,7 +1374,6 @@ void sflphone_kdeView::on_action_addressBook_triggered(bool checked) void sflphone_kdeView::on_action_mailBox_triggered() { - ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance(); Account * account = firstRegisteredAccount(); QString mailBoxNumber = account->getAccountDetail(ACCOUNT_MAILBOX); Call * call = callList->addDialingCall(); @@ -1415,6 +1451,46 @@ 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::updateAddressBookEnabled() +{ + action_addressBook->setVisible(isAddressBookEnabled()); + if(! isAddressBookEnabled() && stackedWidget_screen->currentWidget() == page_addressBook) + { + stackedWidget_screen->setCurrentWidget(page_callList); + action_history->setChecked(false); + } +} + + +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 41bdde02f89c710300c73f5ce30f2117da0db658..a9a4e72a779d9a108cc77ea07bd5e586e07c799c 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 /** @@ -97,6 +92,15 @@ public: * @return the account to use if an outgoing call is placed. */ static Account * firstRegisteredAccount(); + /** + * Seeks the ID of the account to use. + * If priorAccountId is defined and the corresponding + * account exists and is registered, uses this one, else, + * asks the first registered of accountList. + * If there is no account registered, returns an empty string. + * @return the ID of the account to use if an outgoing call is placed. + */ + static QString firstRegisteredAccountId(); static AccountList * getAccountList(); QErrorMessage * getErrorWindow(); @@ -109,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); @@ -218,7 +228,34 @@ 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(); + + /** + * Chooses to enable/disable (show/hide) the address book + * button according to the configuration's setting, and + * returns to the main window if is in address book + * whereas it is disabled. + */ + void updateAddressBookEnabled(); 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 b739d849aefbcbff6c35a58c62e5818efc44ac6b..831907f40781fcc0f789bdd4304d5a5cfe5cee87 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> diff --git a/sflphone-common/VERSION b/sflphone-common/VERSION index 517317e95fb23bda5f1c305dfaa84bfa8021a824..bc440692c3b559a2d3fe749ce99f8993b879252f 100644 --- a/sflphone-common/VERSION +++ b/sflphone-common/VERSION @@ -1 +1 @@ -0.9.6~beta +0.9.6~rc1 diff --git a/sflphone-common/configure.ac b/sflphone-common/configure.ac index b39dc0343faa0146a480fe1388fc95212f2c7c65..92c734e3d61ae39012220437756c563118fd5a26 100644 --- a/sflphone-common/configure.ac +++ b/sflphone-common/configure.ac @@ -2,7 +2,7 @@ dnl SFLPhone - configure.ac for automake 1.9 and autoconf 2.59 dnl dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) - AC_INIT([SFLphone],[0.9.6~beta],[sflphoneteam@savoirfairelinux.com],[sflphone]) + AC_INIT([SFLphone],[0.9.6~rc1],[sflphoneteam@savoirfairelinux.com],[sflphone]) AC_COPYRIGHT([[Copyright (c) Savoir-Faire Linux 2004-2009]]) AC_REVISION([$Revision$]) diff --git a/sflphone-common/libs/pjproject-1.0.3/configure.ac b/sflphone-common/libs/pjproject-1.0.3/configure.ac new file mode 100644 index 0000000000000000000000000000000000000000..bf1644033a4f5cb86b7e9dc8e49804bfa092ee58 --- /dev/null +++ b/sflphone-common/libs/pjproject-1.0.3/configure.ac @@ -0,0 +1,5 @@ +dnl Dummy configure.ac for autotools + +AC_INIT +LT_INIT +AC_OUTPUT diff --git a/sflphone-common/libs/pjproject-1.0.3/pjsip-apps/bin/samples/hack b/sflphone-common/libs/pjproject-1.0.3/pjsip-apps/bin/samples/hack new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/sflphone-common/src/global.h b/sflphone-common/src/global.h index d08d9ce8524dddad65ddb2831421baf27eaa2d62..a6053980b86bb7f1947ff03ca7b9da1f55dee94c 100644 --- a/sflphone-common/src/global.h +++ b/sflphone-common/src/global.h @@ -32,7 +32,7 @@ #include <map> #include <vector> -#define SFLPHONED_VERSION "0.9.6~beta" /** Version number */ +#define SFLPHONED_VERSION "0.9.6~rc1" /** Version number */ #define HOMEDIR (getenv ("HOME")) /** Home directory */