Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
savoirfairelinux
jami-daemon
Commits
5633ac9e
Commit
5633ac9e
authored
Jan 24, 2005
by
llea
Browse files
Fix some bugs, tone, add congestion sound when call number is not found
parent
18400676
Changes
17
Expand all
Hide whitespace changes
Inline
Side-by-side
src/audiortp.cpp
View file @
5633ac9e
...
...
@@ -69,7 +69,7 @@ AudioRtp::createNewSession (SipCall *ca) {
}
RTXThread
=
new
AudioRtpRTX
(
ca
,
manager
->
audiodriver
,
manager
,
symetric
);
qDebug
(
"
Start audio thread !!
"
);
qDebug
(
"
-- START SOUND --
"
);
RTXThread
->
start
();
return
0
;
...
...
src/configurationpanel.ui
View file @
5633ac9e
...
...
@@ -89,20 +89,6 @@
</size>
</property>
</spacer>
<widget
class=
"QPushButton"
>
<property
name=
"name"
>
<cstring>
buttonApply
</cstring>
</property>
<property
name=
"text"
>
<string>
&
Apply
</string>
</property>
<property
name=
"accel"
>
<string>
Alt+A
</string>
</property>
<property
name=
"autoDefault"
>
<bool>
true
</bool>
</property>
</widget>
<widget
class=
"QPushButton"
>
<property
name=
"name"
>
<cstring>
buttonSave
</cstring>
...
...
@@ -1214,7 +1200,7 @@ Montreal, Quebec H2T 1S6</p></string>
</widget>
<images>
<image
name=
"image0"
>
<data
format=
"PNG"
length=
"4
288"
>
89504e470d0a1a0a0000000d49484452000000ad0000003008060000006357fade0000108749444154789ced5d5f685b579efe6e098b5adca20cc31087cc600fdb82dd61a8b4f6839d9912b92f3b761266a476a176b70f529c12bbfbd0dadd97fc5912252ca9e32c9db5a638910261ac04b2561e6cd903d98db278472ad4d1f59022071cb08ba7dc04136c238c224ce0db876b5deb4af75edd7be5b4e954f7e523b9e7fcceef1c9dfbddeffceeef1c8300c200760c49729924c9e4167293dcf1766af883c5aa27687c41626685748dde26ce91383dae8b9e2839702b4392fcae3b5ec3ef2fdaaa9859219312e91c8e13d324ce8d5b466782f44fb036816b6819ad5520e9b95a9951ada2274a4ad95c4d42d4d0149a2ac84d32b36a8f51ad607026539bb835ac88150b64567274457696598dd0357abb26196a68888605b8423a13cf9e614bd1391caf4ddc1aeaa2ee8dcc4a8ece611b8c198a131112a3b78908d979334d921c9f97b8b86ade8ef3fc78f51397e4c86898fe637df4f7f66da19ffe637d1c1a1e22255292a4ef8f2421199fd8d9073a97cd716838477f6f1fdb0e78e8eff593924dfbcfc03f2ddc19863d1fe7ea26c92c0dafe422bf15c6658e94262436b5b838d21266538b8bae9636dd7f1f3f1dfc5e30fbf1d341c5ff9df2373d9a2e1b8f814f066c3dc8cfc23f534c9bdba465863573f9a7d3b634ae1dc6f51feb53fd109d07bd1c190d9359722c3aced5e11c3d073b95fbae9636a6c5f4f3cfb894fd677687264496aa7172b5b4d1dfdb677fc2edb47f3a58f61f9e798b1a345579c2b6dd4856a5713d5793e62714a962d44c74517700b94072818c4fc70ded7381d53347a5fa55d8a764c33f926d073c656fa0d5999cf1787d0bfe552a2f840104004400746f922ffd7b0cd8e5039e9a43bf4b44e4376ee85d813f89b832e7366d4f0fc70e3d44cf2ff70a91227fb55014d33c72f443e49187030eb479da111a1aae584f8559d2f7410f961e2c29768ab1d3d389fede001a5ffbb9d07ec0c3fc461e8e3a07521309445e1184627b8999244f9c3a81f58d75b89a9ad0f1c76b42c14fc7f5dd38321b407e23afb2ef6a6a82eb0d17063f1e4444d8b6e71dce71fff5fd70c0810b172fa0e3cdfd426834ccc8e58852dfb96737d61fad218f3ce6af8988bca6f6a78005bfb5fa373f2122b257100212d971b44bb1575cce51e740cc13057a81fabdf2ef62c63f479d43e9afe21fc9d0a508a627a7b1f46849d58e73cf6e247e378527ef3cc18bafbc244400bca07484e4deff9c025a7d0062a6b1bf457fc2a696802b705bb2a7871f3eae0736c94a13ceed72ab06b8f94e13ba0e7ae99dc9313593648064a589dbdce1c6d2832538ea1c989f10215e4b617e564487a71dfde8c7f49d69f4f405801cd9bfab1f79e491dfc8a3abbbabccdedac535ac6facc30107d6d7d6110070617884478e7e88b7eff8d0b3d183fa3df508f786e16a75e1b8f338e6eedfc7b5eb37d1dcea4640daf677fff5fde887dc5e475d3b2200dae052f5d7f7c8abfcfbc4f5b3bafd4c5d4a208fbc62af507ffca318e0dc1a87c36ef81e7951bfa71ef31322c297469471c86fe4f1d66417527d22acf8d7b3d1a3f68f64bba70391cb112c3d5a42705f109d873a91bc9844e3ab8df03df2a2f97337def276010bf2efaf306d6022cd2b5fd960c41f27c0a31d9a93b6ff21f087cbd5316c31063ff2a1fe156de650a144361f769731482953343535a1e3571de8e9f6a9182d40529c13e176ff43194337b7b8a830d2ac88d0a5088a99646a22a6304f806473ebb61ff31322a6ee4ee1e49973c8230f679d13fdbdfde8e9795bddce02d9dc5d542f2122f28a20845ada586827d01b40ff074784406f1fe7e6e6ca98bafb9d6e741d3e2844a3e374fdc58de1f5b3c02e07dc6fb8d17f3420f7b7a41def212f1affed64e57128edd7ac888860c3bf435d081ced47e17ea7a7134d43e754bfef89d3414e4f4e238f3cda5adbd0fef91f0459436c56178fcdace888d9156bd1821d8d26901c1a1ee1ede1a4a92802457dbb69314d2e909d07bdaafa14b734fb01cff6aab9c8cef1d341a5fcf86fe30c0318ff6d5ca93f76635c572316a21fae96366535afe56f726bf5afd57e1880567f0bed5264797f0cc69522b7c6a15365afb088b5ea1f17d4ed7bdfed26b394ed91e40ccb7e3f9214c2b0a7658bb1ed5d1f52af6a922d2e7cb1844fee34ee08d3cada76093dbffcb9358d0ae0a124b1bebe1e89ff4ba1e3413b7cff53ae590b8c1190c8feff18c4dcaca8bcda35b5df56f9b5e11caf6c6939479d03a93b092c3d5842cfd180523f78ea38ba0e1f144a995ac5f04598984972f0e341859103ff7b4787c9fc9c9bbbaff8d57ff78b32a67af8e821f014c02ec051f722429f5e90dbd561cce237969571b0ec5f49fb95d059e7c4ed892979c6bb46ab6744a36b28b5738c3b62c08856313e1d5731467834cc62866b3be02117c8c26a76ecc6b826c350a2611cb8f3a0576130adfa9afe492cabafc558a571562bfd4f8b69cdfe943264e741af3c0645e3a0c5d056fd2b6ddf6cbcfc8587d91ce71e03988d01f0d9c6d8fd87da540b60b00d186f7828336695ed7c381943c5c51449514c575c7475fda60b21849427796da31b6f9de9523166e43541c05e41880882d0f34f6f0bb13d3795f26e971b1100d82b089d873ae1804365aff0efa9dfc5b6a31b2e51b97fedfa4ddd37836fa047a91f6e1d410450d90fcd46100010ba1b51b567e50de476b955fe16fa13c892472e1f81030e44eba2989a8c21b2b7681cdef1a9fa07176cf957dafed98f4ee8be791e4a92b2087fc1f9f28ba87a75ef4cc0d754af3b6901c0d7540f1e03d2c7aa8b22a0d587e857c613b6b9d58d2f8ecea1b9d58db6e822a337c61920891c1920999a49b2734252bd9a82fb82186c7d51b5cac59cdaeee027032c847ffad1afba7ff6d409d5abacb08a763a9dc0bbdbe5229742cafde93bd3688b2eb2b02a56c26def76b3e3418752bfbeb71e01406dbf3520976f09a8dab32299300795bf85fe4cfd794ab1875d803827aac6c1d7dda38a3a14ee5bf64f1084e4c5a472bffd70872a5a821c1910c9f6031ede3c3cbd1d3df0db8d1a14d03905f675194e58ad4bb894001e77d86a77e0980f4d3fd17e229f64733cd27f0473f7ef9bd64aaea6269c3d79560eb174abb5ae73cf6ee4379e686aba520dd8795ae25b935daa72056d571a07eee8d68e7f1663e39e468c5cbc80c6d7640d1f39e061c10f2dcdd8b8a711def8cdcad1959207bcac3f5b61a8e238ae9971b879d0cb429c55cbbf82362f0b0b16ad09f4c6a3f1d546c4ae45111104016356bf8015a1772b19c6ee753c91b1f985cc78951b86fc89726878885adfd69b5a5cbc3d9c9435546972c896664b8ea6e93fd6c7f4685a5ebd2f6cad6a45323c1a96b56e4eed4721e7c17fac8fc9d1b49c9463e0677c3aae2a5f686f687844f353687c3abeed4f41fb914afde48c852f8745e354e84fd917bad130d35b7e2547d3f2782d50d6b06279bd4afe197e79d468cf7fac8fd28444cea8c719b6f25e3f93b3b676e24a2eae12216bed3b879fffe4961a3e3b8455a68b2fb3623697e52b4b86172c462b0c3ac64d9904076e919e797933658eaced0afe1b41f34c7bde5c36573597957c5ba38e35e830b72b523d43e736655f93cbab2475ec15dd4f2eafeee88392d379f092cbab94b2f296a56056de25bd13ed8d7cb948bf24272d495932b3a2ee4f7c41a2272adf97f1368359fb7bfe322bab0c66d5f6bc8b6a7be69836f4cce7ab72e536ab675abbf5cce088581e9f2e9db05aed6656abcf122bec7e768daa272eb3da71f0e4b2f604373f61cbed3a13ea7ec417f57fa7815b16f6fc91f41a6403168f7365a6fd1618b6f45acd55c7b476eb997a3595d82bdd8ce9bd91d4f5db13951f4abb8ca7db0f6ab717ac32af3598d5b65b3c81729ba427aa3fdea6f6fc916cf82cae3b6e991575fd8a4cfb2caecc8aac61e3f3fa652a31ee77c5b4a5f6a49c7a402be523bbc4ad5c0d8bed4a39fd7e2497b599363863bd9d620cce9867f01cf5cfc130ca1931aad710d2ae07a319deb6f04ce62cc9a27642710ee5c8558dc59d77d99e36fd2e99d6ccb910ce61eb5a373893b1ccb452954c2b9960da523f8c4e1a6a086d6bee815b19eaad3d70cef82422fd386d82ba5102ef4d12a22c1d304de2aa8d499bd268f76a525d284b62a6bc9cf7069f5ba6b512f71ebb67dc0fb34c4b5da6adee1c89e08c761c9d15b4b21e439b4167a2b2fd17961ecf43eb1b7fe7ba08bc0ce51abc330fe1f7807026869bf7014cc680a772f9c543b07e7d95286ff79b76089fc6b6cbbc0c781f8b65e546fed1f84b8f51ee82d5ecb0b24f9fa5f6eeceabcbcda60cdb2fc6f726e53c6653eddf55ff4eaafefeb4dc2fccc680379aabea2fde68d6b6fb53e37a27de1484e42fd6e07458cb2d71edf141fa15809f0986597cbaab5d152b866e1b3e2146da54976945e327ae105ad2f2afd2aaf879d2b42e918c17ef31a3cc80c5f9cbde1bc9edfb3aed3eef9a560badecea6e48d1741c5d57036e4f587dcd6b65376ed9a43571ca62db427939e7f9ca13ef79d2b47ad182dc26e95ddc2e5769953d70eb7ba0694b51c72f2d6cf8cc7c823f08c07ba3fc894aaf9030732aa289ddb89a93b602d3ea61d2c44112cf8ba635b38bb8f48cb4cc2ae5b544d10faf152f7d9e356dc16faba76a9a3d124bde234652386333cb6b5f0a7cbf1d562fbb595ec97f5e43fbcf7e64a8798e9c23f5ea4bfff204f55bbb3aed683de1f4388bed057f3d8f136fbeaed8ebb89ae49d6fda81a73178fede879e1e137bda48eefe3486f5a7e6c7217c5cbda74debf733bda74e07efaf90c39f97dbe5299f6edeeb934d72691d785da39e1974ee8a41fac8876b7fa7efb732831bb456f32630adb73fec1930ada9ec2ec0906973665f6d3a6845d39af5d70e3315d7cfe8ecc5b3d4be063684b4fdd1d5b0cba4d13c728d92524e7e036456e538ac5effc6e64bde3845f84261069fad7b083b3b094efe5984ad6bd2face85c4fb2657bd06765e3a13434a2253cbaba6b6935b8d1e60b6282ab2cb02b30982b0f671175c7fd588aa54888234ff44101a1e4c9595bbf30d707626632e3a5182818934bf5eef2a6bd7ff542c2f4f72f05686c21f81afff5b3b2a90fcc51ac40f0461fa254138f1e6ebc2173f1284a5fe83c2c88f9734a30ceffd570cbb2f03a12f17cbfc57cd60cf551b27c1883668d6e2995e38374ecfbc7986b4f3c6307ae2e34527abecb4a6d542ff44e5f1b1c2d49e421cbdc2ea9c5b111b3d06d4d49c06e50b1abd527f99255d066fde82ff6a4d5bf4c4d8d1b63ce58395cbea7908ce3a1fe67bcd6b51234d6b170b1ab292a62d3e3fc2b4a6d5c0e8bd45be37a9bf8b59a5698b7ebfc6df4fe1eb8d2edd7a9e7d29ecfe753b5cdfcccb71d8bfcc23f1d766ac6f243067b0c6f0ec4b20f17e87a2659f6c9227d7012dcd5bd0a66bffaaaf7db53025915774e645b1bdb2999fa375463a9ec858d3b316579556be1c29e1a11d62dad25578691c568b790af7076e55a729b9accd40aed1db8676c7ee91a5d9687631bea81d9735caeef25cad1c77b6abed4952b3a25fa2b59d0ce7e51d08662eaba727fa27ec9d66589af76a17f506b6d2fd1dfd1b12a57e59a837766f51959faa976be21abd4d4f54fed0a1e4e31a4cbcb17b721eadf3bc5cdf733549efe20ee5f1921cf97251c9a72dc4713d51795c75b58d91c6d0c4947cfeacd165f5fc03bb9ab0867fdb68c85476fed682de664757543fcf54d38e894f9b35fc6162c5024969e7b4a159b42b096af8c3405305739bdbdac52af35a41e7b0acc19e8781a9e1f38be62b50d698cf8a613d065f406a58c362b45c21b9bc6ab827c82a56151ea9e10f12ed1ba01c87b493b3d0108a976733d5b0862671670c911cbb2751cacaab7e39bea6deb71e9c913f40d4fe066e0dabc5ff077529ed1596bde0d3
0000000049454e44ae426082
</data>
<data
format=
"PNG"
length=
"4
100"
>
89504e470d0a1a0a0000000d49484452000000ad0000003008060000006357fade00000fcb49444154789ced5d61681b679a7ea684a216efa22ccb1197b6d84bbb602f2c2bd78595bb5b32eadec2d9ced295b63f1aeff55829ce12bbfbe3eaf4e0ce6e97540947eaa84777ed2e6ead1cbeda2964edfc48641f98b5bc3827ed919ce5238b64480eb9f88212cc211b63142102cffd18499e19cd8c6646caaebbd5f7e72199ef7bbff7fbf4cd33cff7cefb8d41009300ea8624b9499264ac882c9075efa7815f5aac7981466e6798d9255d134bc43912676675519c2187169324c93ff7c01bf8c5455b0d935b64324b3a4311224ae2dcac6574c649ff55361670032da3b50624c5a9ea8c6a15c51932b39b6b4888069a425315592033397b8c6a05832bc9c6c26d6055ac5a21b995a32b5c5f663542d7c452433234d0100d2b708b74c61f3dc3aad1198a34166e037551f742722b4767c806638e478830898925224c765f592549cea632cce6ccdb719e9fad7de1921c9b98a4ffd400fdfd0345f4d37f6a80a3a151324b6632992f8e242119b95adf1b3ab79be36888f4f70fd07d54a4bfdf4f666dda7f04fe69617d18f6bce4287769586269fe4918973932b798635ba78bd39db36ceb74d1d5e9d6fdf7f099e01782d987cf04cbfed7cbdff454ba623e86de1eb275233f0aff4c316dae40cb0c6ba6f817566d695c3b8ceb3f35a0f821ba7bbd1c9b98240be4f4cc2c1922c5deeef27557a79bab89d583cfb82cfa5fa8d3822850314fae4e37fdfd03f6175cbdfdd3c18aff10d3163568a2fa82755f8ed5a471c5a998f905452a18357325ab3b81bc4d72938c2c440cedf3366b678e6aed6bb0cf8c0dff48ba8f8a154f20ded0b7c3dbb475635bf5af5a7d6112400040184080a4f0de1c70c8073c34877e5702e1bfe9805e09fc7b0217d73a4cdbd3c3e963f7d0f7eda784b0dc5f0d4c245679e2e49bc8230f071c708b5d181f0d556da7c002e9fbbb3e6cdcd928db9163b7d88dc1fe005abff90da1eba8c8fc5e1e8e2607e28b51841f1704b9bde84a8c23ef8e60676f07aeb636783ebd2494fc6cfeac15be9b3ee4f7f20afbaeb636b8bee3c2e9b74e232cc8ec85c8f6cf3ae08003173eb800cfcb2f09e313930c7f122eb7771e398c9dfbdbc8238fd49504c2cf2afd2961c96fadf1a51613087f4d100259d2f3464fd99ebc9ea3c98125711e3bfd3b687eaaf8bb98f0cfd1e4288fb7ec1fc9f18fc358b8b6808dfb1b8a7e9c470e23fae3793c78ed019ef8ea934218c063f2057bf88379e0fb3e0073a671e47bfa0b36be015c747458b2a7876fee350305b2da82eb70752826b86bd98d9e5e2f0337c8f84a8c0192d5166e7b570736ee6cc0d1e4406a3181c4a538523713f0885d18c630169617d037100072e4f0a111e491477e2f8f1e6f4f853d7c00ececedc0010776b6771000702134c61327dfc42bcbaf60706f10cd479a31fb8b39b85e7461d479016bebebb8f4d915b4bfd8814076dfdff6cf3a308c61e49187e7eb5d0803e8767814e30ddcf797ff3df2af6775c719ffb728f2c897ed95da2ffdd312e028f6f7c30e04eefbd17ca419a9c504263f1e2bcf437e2f8f17aebd84f5810d58f16f706f50e91fc92ed183f027616cdcdfc0d8d363e83ed68dd44709b43edf8ac07d3fda7fd38157bc3dc06de9f72f336de0ea2a2ffed106237e3d0a9ef4682edac16de0a35fd7c6b0720cfea30fcd8f6b338702b364fb0f3b2a1844cd146d6d6df07ccf83bee33e25a3914cac25d0d1f1420543b777ba5866a49b098c7f1c869c49e6afceed330fc9f617f7fd482d2630ff1ff378e7bd73c8230f67931383fd83e8ebfb89b29f4db2dd2b6b174f20fcb8208c77ba59ea27d01fc0e0cf4f0881fe01aeadad5530f5f1d78ea3e747bdc2cccc2c3dffedc1c8ce69e090031ddfe9c0e0c980345e553fde635eb4fef29deaf3a01ed7cd04c2820dff8ef520707210a5ebdd6237da46cf297edf9133412e5c5b401e79b85f74a3eb371f09928628d4168f4d6ee988d92d6bd182ba4613488e86c6b83a9e341545604adfee6a6295dc24bb7bbd8af62cea79f751715f13caec0c9f0996eb2fbd1ae32480a55763e5f6d3976775356229fae1ea749777f35afe268bbb7fadfe2701688db7d42f13ac1c8fc1bc32c1e23c742bec9536b156fde36d65ffded78f93054af648728515bf1f494a4c6b43cbcad1fd331fe2cf68922d2efc61036f2fb7d68569256dbb81be6f7fc39a4605702f9361737333a2d7e3f0dce982ef77959ab5c418812c39f8cfa7b17633517eb46b6abf62fded1079b1a8e51c4d0ec497a3d8b8b381be938172fbe0bbc3e8f951afa0666a05c3cb30ba12e3e9b74e971939f0fb651d26f3736d6dbdecd7e07ffda182a9eeddbf073c04700870343d81f1f72f48fdea30a6fc8965651e2cfba7eabf1a3a9b9c58ba3a2fad78d744ed8c685446e3f563dc690346b48a9185888231262726296738f75151ca0d2eee66a72fcf6a320c33348c0377f77acb0ca6d55ed3bf2c2bda6b31963ace6a65fcab8955cdf1a819b2bbd74b6695f3a0c5d056fd53f76f365e2e6476737cead74fd4cc80b33fbe075f5bb336dd02985bbf879f5c6b06f2b5332edff5e93294428bb93aaad693dfe9fed7135033a6babda7b79be5ddb98c99e4daab82894e25100e48f5e41a4f4bc395d0f7fa71969e04abc762b8f4cb274d694635d31aa21ed316c8f62e8379a841d31a316d49bbeb3e298b7b05907560c0f12543a62d975d32bd5b7b7fd3b70cb4172be3b4d3978b4f829c04b1959882514b9a932b061a8fe4d0db4386d7b534b3fb07a2d4af817f8af86781f4be7e5cd93eb3cf645535a305a6d5d3b4f22790fb07a2f28940a57f9635adda8f1bfbf3e13e2a2a5e21334732b5bf6728cd93e0b71b3528a1731e1ce8d16558bd227c1c05fecf63abdfa1bff7a1edabda77e483dd1c4f0c9ec0dafaba69ade46a6bc3d977cea2f5f956f88e2bb5aef3c861e4f71e686a3ab5063c7e26c717aebda4a857621c751cd8e3d58e7fcab1f5482bc63eb880d66f4a1a3e7c5464c90f2dcdd87aa415dec895da999652184a1ec735330f577abd2cc559b5fc2b6973b51ff23d81de7cb43edf8ab94b33080b828088d5376032f4169361ec96e168d2e61b3203a69531d66868945aefd6db3a5d5c1d4f4a1a4a9d1c4249b325a7d2f49f1a607a2a2dedde378bbbda143939312969dd9cd28f52ce83ffd4009353692929c7c0cfc8424451bfd4df68684cf355686421b2ef0f8bd7c972fbd88a853787b2792a8da7e20dddc424d345bf92536969be36293172aab25d35ff0cdf3c6af4e73f35c0dc628e5c51ce336ce5bd7e28656dd5a3c4d25962dc5affced0c14f6e69e0a3435865bad816ab6673592ebbe4eca6c56885c1c05890cc0e2d92627aff3065e354f05f069a67daf3e6b2b96a2956f26d8d06d6a2c3dcae70ed0c9d2bde10b1cd2c491d7bb2ebb1cd6c5d6f949cce8d17dbcc3257908e2c050bd229e97af43776234d7f564a5aca15c8e496723c91db198a33d2750997182cd83ff397dcca325850daf36694f6cc31edf8235faf8a522bd3da6d6706a75395f169f582d5ea3793ab3d4bac74fad935a15cb8dca5e678639bda0bdcfc82adb4eb8c2bc711cbe8ff4e438b16cefc91f41a6403cae7b93ad3fe091856abd4c2b476db997a34a9eca90f637a2fc774fd1667483da634c378bae3d099af608d79adc182b65df902ca154871467fbe4d9df923d9f2614477de32bbcaf65599f65194e496a46123a92a0bf70032adda5e4ef58354cb4776a58ab91a16fbcd517f1cb14d6da60dae58ef478ec1150b0c4efdef6018e68c18b46b19d76e07a315eeded45849752af23365a324b31a9b3bef963d6dfae7645a33df857086ac6bdde04ad232d3e66a64da9c09a655fb61f4a5a196f17dcd3db498a4dede03e78cbf44a41fa78d53374ae0bd422225490744494cd958b4098d7ea762ca4abb246e54d6f35ee681655a2b716fc3377bea0544fd715097696bfb8e4470453b8ece2a5a598fa1cda0335eddfe636b7753007cc0f5390576df4f005f41b99c5e4e41f81520bc37872beb007e3b073c94ea675f83f572335ad9efdd2e08efcfedd7f90ae0bd9ba8a837fdaaf19b1eadf194d06a76981ad5f642d7538aeba1eb71c3fee5f8d36b521eb3997e43d795bf9362bccf54fa85eb73c077db6b1a2fbedbae6df719e376232f0b42ecb96d381de6e6a184ae233e643a013c2b1866f1e9ee7615ac38be64788754d3a69a4c9b32bee314752dee8a0f92a675a5c888fc8c19250694e72f7b2fc7f6afebf47be035ad065a39d5dd92a0e938baae06dc5fb0fa9ad7ca69dc8a456be22b8beecdca7acef3d517de41d2b47ad1825c81f466f6eb55db650f2d7e0134ad1a75fcd2c2960fcd27f88300bc972befa8f42e09335f4534711a5773d156615a3d4c9af890c441d1b4664e11abbf9196c951da4bc87e78ad78e941d6b425bfad7e55d3ec27b16a3fb9f0741c7ca30b568bdd2cafd8df6ea3ebd9af196a9e13e748bdf6995f3c4073f154a71dad279c99a5dc5ef0fb298cbcfcadb23dcf548ccb77bb808773109ff3a1afcfc499369287df9fc3ce43f3f33039accc6fd5fafd4c9fa9d3c1f55d32f42fd6f2991f14c89d3cf094463b33e83c3487ed7f30ce972eafe016adddbc094cdbcc43b0c3b4a6b2bb0063a635fb68d3412b9ad6acbf769849de3ea97316cf52ff1ad832aeed8fae86dd248dd6916b424a8c0bae2499c9497158bdf145d2aa278e0c1f2bade0b387eec1ec2e4f8e6ffe2e015be5b7d6fac1f53944df30b9eb35b023bc378778968c6f664d1d27b71a3dc0755954e4900566130461fbad1eb8ee684455aa4441daff4a105afe385f516ff92e707625692a3aa1c6c0d5557ebed353d1af7f2fa1f9a438bd98a4f029f0f935eda840ecb96d247e2e089704411879f95bc2c29382b031d82b8c356d6846197a3f9dc3e14f80f11be90aff152b589cb2f125181b9103a6b599c108c5b47986b4f3c430bae323b29305f5d6b45ae8bf5a7d7eac30b5588aa357d99d97b2e3f4185053731ad42f69f46ae3e52ee93278f296fc576a5ad91d6347dbf25d1fac14abdf437036f990ea37af458d34ad5d2c69c86a9a56fefd08d39a5603676ea5f9d36bfaa798159a56f6fbb5fe6a1e9feff5e8b6139f8ee3f05f77c1f53f29290efb9f2944ffb71d3b7b51ac19ec31c4a7a388bee1296bcd0705f29d3ca0a579cd6a5335c6b3e4459d7521b7a71da6b0c848c3d1a425a235159590a1953747e5f0509d9856bd0b57c761b598a7747d68d19adf5a1a518b815c134b8676a76f91ea6c34bb18cb68c7658db2bbc4a9ea7167bbda9e24351bfab3b47692e1bc7402c14cb1faf544ff557b5f3354e7bdda45bd89ad76bdae7f4342ed978576d3b7d28afc54bd5c13d7c412c519e94547391fd760e14ddf92f2689de7a5f6e2548cde4c9df278498edd4897f3694b715c71469a575d6d63a4313431217d7fd6a858fdfe815d4dd8c0bf6c34642a3b7f6b41efb0a36b463fcf54d38e89579b0dfc7262d50ac96cfdb4a159b42b091af8e5407315b9af5dac32af157486240d761026a6810717cd37a0a4311f15c38a066f401ad840395a6e10dbcc1a9e09b28a3585471af8a544fb0628c521ede42cb48c472ab3991ad84093581f4324a76f65982b48bb7e29bea63cb71e5c915e4034fe066e036bc5ff074b22fee00d8621ca
0000000049454e44ae426082
</data>
</image>
</images>
<connections>
...
...
@@ -1242,12 +1228,6 @@ Montreal, Quebec H2T 1S6</p></string>
<receiver>
ConfigurationPanel
</receiver>
<slot>
saveSlot()
</slot>
</connection>
<connection>
<sender>
buttonApply
</sender>
<signal>
clicked()
</signal>
<receiver>
ConfigurationPanel
</receiver>
<slot>
applySlot()
</slot>
</connection>
</connections>
<tabstops>
<tabstop>
fullName
</tabstop>
...
...
@@ -1256,7 +1236,6 @@ Montreal, Quebec H2T 1S6</p></string>
<tabstop>
password
</tabstop>
<tabstop>
hostPart
</tabstop>
<tabstop>
sipproxy
</tabstop>
<tabstop>
buttonApply
</tabstop>
<tabstop>
buttonSave
</tabstop>
<tabstop>
buttonCancel
</tabstop>
<tabstop>
buttonHelp
</tabstop>
...
...
@@ -1290,7 +1269,6 @@ Montreal, Quebec H2T 1S6</p></string>
</includes>
<slots>
<slot>
saveSlot()
</slot>
<slot>
applySlot()
</slot>
<slot>
changeTabSlot()
</slot>
</slots>
<functions>
...
...
src/configurationpanel.ui.h
View file @
5633ac9e
...
...
@@ -107,7 +107,7 @@ void ConfigurationPanel::init()
// For saving settings at application 'save'
void
ConfigurationPanel
::
saveSlot
()
{
{
Config
::
set
(
"Signalisations"
,
"SIP.fullName"
,
fullName
->
text
());
Config
::
set
(
"Signalisations"
,
"SIP.userPart"
,
userPart
->
text
());
Config
::
set
(
"Signalisations"
,
"SIP.username"
,
username
->
text
());
...
...
@@ -147,40 +147,6 @@ void ConfigurationPanel::saveSlot()
}
void
ConfigurationPanel
::
applySlot
()
{
Config
::
set
(
"Signalisations"
,
"SIP.fullName"
,
fullName
->
text
());
Config
::
set
(
"Signalisations"
,
"SIP.userPart"
,
userPart
->
text
());
Config
::
set
(
"Signalisations"
,
"SIP.username"
,
username
->
text
());
Config
::
set
(
"Signalisations"
,
"SIP.password"
,
password
->
text
());
Config
::
set
(
"Signalisations"
,
"SIP.hostPart"
,
hostPart
->
text
());
Config
::
set
(
"Signalisations"
,
"SIP.sipproxy"
,
sipproxy
->
text
());
Config
::
set
(
"Signalisations"
,
"DTMF.pulseLength"
,
pulseLength
->
value
());
Config
::
set
(
"Signalisations"
,
"DTMF.playTones"
,
playTones
->
isChecked
());
Config
::
set
(
"Signalisations"
,
"DTMF.sendDTMFas"
,
sendDTMFas
->
currentItem
());
Config
::
set
(
"Signalisations"
,
"STUN.STUNserver"
,
STUNserver
->
text
());
Config
::
set
(
"Signalisations"
,
"STUN.useStunYes"
,
useStunYes
->
isChecked
());
Config
::
set
(
"Signalisations"
,
"STUN.useStunNo"
,
useStunNo
->
isChecked
());
Config
::
set
(
"Audio"
,
"Drivers.driverOSS"
,
ossButton
->
isChecked
());
Config
::
set
(
"Audio"
,
"Drivers.driverALSA"
,
alsaButton
->
isChecked
());
Config
::
set
(
"Audio"
,
"Codecs.codec1"
,
codec1
->
currentText
());
Config
::
set
(
"Audio"
,
"Codecs.codec2"
,
codec2
->
currentText
());
Config
::
set
(
"Audio"
,
"Codecs.codec3"
,
codec3
->
currentText
());
Config
::
set
(
"Audio"
,
"Codecs.codec4"
,
codec4
->
currentText
());
Config
::
set
(
"Audio"
,
"Codecs.codec5"
,
codec5
->
currentText
());
Config
::
set
(
"Preferences"
,
"Themes.skinChoice"
,
SkinChoice
->
currentText
());
Config
::
set
(
"Preferences"
,
"Options.zoneToneChoice"
,
zoneToneChoice
->
currentText
());
Config
::
set
(
"Preferences"
,
"Options.confirmQuit"
,
confirmationToQuit
->
isChecked
());
Config
::
set
(
"Preferences"
,
"Options.checkedTray"
,
checkedTray
->
isChecked
());
Config
::
set
(
"Preferences"
,
"Options.autoregister"
,
autoregister
->
isChecked
());
Config
::
set
(
"Preferences"
,
"Options.voicemailNumber"
,
voicemailNumber
->
text
());
}
// Handle tab view according to current item of listbox
void
ConfigurationPanel
::
changeTabSlot
()
{
...
...
src/configurationpanelui.cpp
View file @
5633ac9e
This diff is collapsed.
Click to expand it.
src/configurationpanelui.h
View file @
5633ac9e
/****************************************************************************
** Form interface generated from reading ui file 'configurationpanel.ui'
**
** Created:
Wed
Jan 1
9
1
9
:2
2:37
2005
** Created:
Fri
Jan
2
1 1
7
:2
3:55
2005
** by: The User Interface Compiler ($Id$)
**
** WARNING! All changes made in this file will be lost!
...
...
@@ -43,7 +43,6 @@ public:
QFrame
*
line1
;
QPushButton
*
buttonHelp
;
QPushButton
*
buttonApply
;
QPushButton
*
buttonSave
;
QPushButton
*
buttonCancel
;
QListBox
*
Menu
;
...
...
@@ -121,7 +120,6 @@ public:
public
slots
:
virtual
void
saveSlot
();
virtual
void
applySlot
();
virtual
void
changeTabSlot
();
protected:
...
...
src/manager.cpp
View file @
5633ac9e
...
...
@@ -71,6 +71,8 @@ Manager::Manager (QString *Dc = NULL) {
b_ringing
=
false
;
mute
=
false
;
b_ringtone
=
false
;
b_congestion
=
false
;
if
(
DirectCall
)
{
qWarning
(
"Direct call....."
);
gui
()
->
lcd
->
textBuffer
=
DirectCall
;
...
...
@@ -153,6 +155,8 @@ Manager::sip_init (void) {
// Register to the known proxies if available
if
(
Config
::
gets
(
"Signalisations"
,
"SIP.password"
).
length
()
>
0
)
{
sip
->
setRegister
();
}
else
{
errorDisplay
(
"Fill password field"
);
}
}
}
...
...
@@ -172,22 +176,16 @@ Manager::ringing (void) {
return
this
->
b_ringing
;
}
//
Broadcast ring message to every component
//
When IP-phone user receives a call
void
Manager
::
ring
(
bool
var
)
{
if
(
this
->
b_ringing
!=
var
)
{
this
->
b_ringing
=
var
;
// Blinking bar ring signalisation
// gui()->ring(var);
// Blinking not-used line
// bruitagesproot->ring(var);
}
// TODO: play file.wav
}
// When IP-phone user makes call
void
Manager
::
ringTone
(
bool
var
)
{
if
(
this
->
b_ringtone
!=
var
)
{
...
...
@@ -197,6 +195,16 @@ Manager::ringTone (bool var) {
tone
->
toneHandle
(
ZT_TONE_RINGTONE
);
}
void
Manager
::
congestion
(
bool
var
)
{
if
(
this
->
b_congestion
!=
var
)
{
this
->
b_congestion
=
var
;
}
tonezone
=
var
;
tone
->
toneHandle
(
ZT_TONE_CONGESTION
);
}
#if 0
bool
Manager::getCallInProgress (void) {
return gui()->callinprogress;
...
...
@@ -206,6 +214,7 @@ void
Manager::setCallInProgress (bool inprogress) {
gui()->callinprogress = inprogress;
}
#endif
bool
Manager
::
transferedCall
(
void
)
{
...
...
@@ -226,6 +235,7 @@ Manager::actionHandle (int lineNumber, int action) {
// Stopper l'etat "ringing" du main (audio, signalisation, gui)
sip
->
manageActions
(
lineNumber
,
ANSWER_CALL
);
this
->
ring
(
false
);
phLines
[
lineNumber
]
->
setbRinging
(
false
);
gui
()
->
lcd
->
setStatus
(
"Connected"
);
gui
()
->
startCallTimer
(
lineNumber
);
break
;
...
...
@@ -329,10 +339,13 @@ Manager::handleRemoteEvent (int code, char * reason, int remotetype, int line) {
// Remote callee hangup
case
EXOSIP_CALL_CLOSED
:
if
(
getCallInProgress
())
{
//if (getCallInProgress()) {
if
(
phLines
[
line
]
->
getbInProgress
())
{
this
->
ring
(
false
);
phLines
[
line
]
->
setbRinging
(
false
);
gui
()
->
setFreeStateLine
(
newCallLineNumber
());
setCallInProgress
(
false
);
//setCallInProgress(false);
phLines
[
line
]
->
setbInProgress
(
false
);
}
else
{
// Stop call timer
gui
()
->
stopCallTimer
(
line
);
...
...
@@ -441,6 +454,11 @@ Manager::otherLine (void) {
return
false
;
}
int
Manager
::
getCurrentLineNumber
(
void
)
{
return
gui
()
->
currentLineNumber
;
}
bool
Manager
::
isChosenLine
(
void
)
{
return
gui
()
->
choose
;
...
...
@@ -497,3 +515,7 @@ Manager::dtmf (int line, char digit) {
}
}
void
Manager
::
errorDisplay
(
char
*
error
)
{
gui
()
->
lcd
->
appendText
(
error
);
}
src/manager.h
View file @
5633ac9e
...
...
@@ -78,16 +78,23 @@ public:
void
setChoose
(
bool
,
bool
);
bool
useStun
(
void
);
void
dtmf
(
int
,
char
);
int
getCurrentLineNumber
(
void
);
#if 0
bool getCallInProgress (void);
void setCallInProgress (bool);
#endif
bool
transferedCall
(
void
);
void
ringTone
(
bool
);
void
startDialTone
(
void
);
void
congestion
(
bool
);
void
errorDisplay
(
char
*
);
private:
bool
b_ringing
;
bool
b_ringtone
;
bool
b_congestion
;
int
firewallPort
;
QString
firewallAddr
;
...
...
src/phonebookui.cpp
View file @
5633ac9e
/****************************************************************************
** Form implementation generated from reading ui file 'phonebook.ui'
**
** Created:
Wed
Jan 1
9
1
9
:2
2:37
2005
** Created:
Fri
Jan
2
1 1
7
:2
3:55
2005
** by: The User Interface Compiler ($Id$)
**
** WARNING! All changes made in this file will be lost!
...
...
src/phonebookui.h
View file @
5633ac9e
/****************************************************************************
** Form interface generated from reading ui file 'phonebook.ui'
**
** Created:
Wed
Jan 1
9
1
9
:2
2:37
2005
** Created:
Fri
Jan
2
1 1
7
:2
3:55
2005
** by: The User Interface Compiler ($Id$)
**
** WARNING! All changes made in this file will be lost!
...
...
src/phoneline.cpp
View file @
5633ac9e
...
...
@@ -29,6 +29,7 @@ PhoneLine::PhoneLine (void) {
first
=
true
;
timer
=
new
QTime
();
b_dial
=
false
;
b_ringing
=
false
;
}
PhoneLine
::~
PhoneLine
(
void
)
{
...
...
src/phoneline.h
View file @
5633ac9e
...
...
@@ -52,20 +52,28 @@ public:
JPushButton
*
button
(
void
);
void
startTimer
(
void
);
void
stopTimer
(
void
);
inline
void
setbDial
(
bool
dial
)
{
b_dial
=
dial
;}
inline
bool
getbDial
(
void
)
{
return
b_dial
;}
QTime
*
timer
;
QString
status
;
QString
text
;
bool
first
;
bool
b_dial
;
inline
void
setbDial
(
bool
dial
)
{
b_dial
=
dial
;
}
inline
bool
getbDial
(
void
)
{
return
b_dial
;
}
inline
void
setbInProgress
(
bool
prog
)
{
b_inProgress
=
prog
;
}
inline
bool
getbInProgress
(
void
)
{
return
b_inProgress
;
}
inline
bool
getbRinging
(
void
)
{
return
b_ringing
;
}
inline
void
setbRinging
(
bool
ring
)
{
if
(
this
->
b_ringing
!=
ring
)
this
->
b_ringing
=
ring
;
}
private:
JPushButton
*
jpb
;
enum
line_state
state
;
enum
line_state
stateLine
;
bool
b_dial
;
bool
b_inProgress
;
bool
b_ringing
;
};
#endif // __PHONE_LINE_H__
src/qtGUImainwindow.cpp
View file @
5633ac9e
...
...
@@ -162,7 +162,6 @@ QtGUIMainWindow::QtGUIMainWindow (QWidget *parent, const char *name, WFlags f,
currentLineNumber
=
-
1
;
onLine
=
currentLineNumber
;
callinprogress
=
false
;
chosenLine
=
-
1
;
choose
=
false
;
noChoose
=
false
;
...
...
@@ -188,8 +187,6 @@ QtGUIMainWindow::QtGUIMainWindow (QWidget *parent, const char *name, WFlags f,
// Connect to append url in display
connect
(
urlinput
->
buttonOK
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
stripSlot
()));
// Connect to apply settings
connect
(
panel
->
buttonApply
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
applySlot
()));
// Connect to save settings
connect
(
panel
->
buttonSave
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
save
()));
...
...
@@ -265,9 +262,6 @@ QtGUIMainWindow::QtGUIMainWindow (QWidget *parent, const char *name, WFlags f,
this
->
setIcon
(
QPixmap
(
Skin
::
getPathPixmap
(
QString
(
PIXDIR
),
QString
(
SFLPHONE_LOGO
))));
// Init ringing state (not ringing)
//this->ring(false);
// Show the GUI
this
->
show
();
...
...
@@ -591,7 +585,9 @@ QtGUIMainWindow::toggleLine (int num_line) {
==
ONHOLD
)
{
qDebug
(
"GUI: state OFF-HOLD line %d"
,
currentLineNumber
);
lcd
->
clear
(
QString
(
"Connected"
));
lcd
->
inFunction
=
true
;
if
(
callmanager
->
sip
->
call
[
currentLineNumber
]
!=
NULL
)
{
lcd
->
inFunction
=
true
;
}
callmanager
->
phLines
[
currentLineNumber
]
->
setStateLine
(
OFFHOLD
);
callmanager
->
actionHandle
(
currentLineNumber
,
OFFHOLD_CALL
);
lcd
->
appendText
(
callmanager
->
phLines
[
currentLineNumber
]
->
text
);
...
...
@@ -623,6 +619,7 @@ QtGUIMainWindow::dial (void) {
transfer
=
false
;
}
else
{
qDebug
(
"GUI: LINE CURRENT %d"
,
currentLineNumber
);
if
(
callmanager
->
ringing
())
{
// If new incoming call
currentLineNumber
=
callmanager
->
newCallLineNumber
();
...
...
@@ -654,14 +651,11 @@ QtGUIMainWindow::dial (void) {
callmanager
->
bufferTextRender
();
callmanager
->
phLines
[
currentLineNumber
]
->
setbDial
(
true
);
toggleLine
(
currentLineNumber
);
call
inp
rogress
=
true
;
call
manager
->
phLines
[
currentLineNumber
]
->
setbInP
rogress
(
true
)
;
// Set used-state pixmap 'currentLineNumber' line
callmanager
->
phLines
[
currentLineNumber
]
->
button
()
->
setPixmap
(
TabLinePixmap
[
currentLineNumber
][
BUSY
]);
callmanager
->
phLines
[
currentLineNumber
]
->
setState
(
BUSY
);
// RingTone
// TODO: callmanager->ringTone(true);
}
}
}
...
...
@@ -680,7 +674,7 @@ QtGUIMainWindow::hangupLine (void) {
// set free pixmap
setFreeStateLine
(
currentLineNumber
);
if
(
call
inp
rogress
)
{
if
(
call
manager
->
phLines
[
currentLineNumber
]
->
getbInP
rogress
()
)
{
// If call is progressing, cancel the call
callmanager
->
actionHandle
(
currentLineNumber
,
CANCEL_CALL
);
}
else
{
...
...
@@ -697,7 +691,9 @@ QtGUIMainWindow::hangupLine (void) {
// set free pixmap
setFreeStateLine
(
currentLineNumber
);
this
->
dialTone
(
false
);
callmanager
->
congestion
(
false
);
callmanager
->
phLines
[
currentLineNumber
]
->
setbDial
(
false
);
lcd
->
clear
(
QString
(
"Hung up"
));
}
choose
=
false
;
...
...
@@ -961,7 +957,8 @@ QtGUIMainWindow::blinkRingSlot (void) {
if
(
line
==
-
1
)
return
;
if
(
callmanager
->
ringing
())
{
//if (callmanager->ringing()) {
if
(
callmanager
->
phLines
[
line
]
->
getbRinging
())
{
// For the line
if
(
!
isOn
)
{
state
=
FREE
;
...
...
@@ -1062,12 +1059,6 @@ QtGUIMainWindow::pressedKeySlot (int id) {
}
}
// Apply new settings
void
QtGUIMainWindow
::
applySlot
()
{
}
// Save settings in config-file
void
QtGUIMainWindow
::
save
()
{
...
...
src/qtGUImainwindow.h
View file @
5633ac9e
...
...
@@ -164,7 +164,6 @@ public slots:
void
button_msg
(
void
);
void
button_transfer
(
void
);
void
button_conf
(
void
);
void
applySlot
(
void
);
void
clickHandle
(
void
);
void
reduceHandle
(
void
);
void
save
(
void
);
...
...
src/sip.cpp
View file @
5633ac9e
...
...
@@ -346,13 +346,23 @@ SIP::setRegister (void) {
qDebug
(
"proxy = %s"
,
proxy
);
qDebug
(
"from = %s"
,
from
);
if
(
from
==
NULL
||
proxy
==
NULL
)
{
qDebug
(
"ERROR:Proxy and from-URI required"
);
if
(
Config
::
gets
(
"Signalisations"
,
"SIP.userPart"
)
==
""
)
{
callmanager
->
errorDisplay
(
"Fill user part field"
);
return
-
1
;
}
if
(
Config
::
gets
(
"Signalisations"
,
"SIP.hostPart"
)
==
""
)
{
callmanager
->
errorDisplay
(
"Fill host part field"
);
return
-
1
;
}
if
(
Config
::
gets
(
"Signalisations"
,
"SIP.sipproxy"
)
==
""
)
{
callmanager
->
errorDisplay
(
"Fill proxy field"
);
return
-
1
;
}
eXosip_lock
();
setAuthentication
();
if
(
setAuthentication
()
==
-
1
)
{
return
-
1
;
}
if
(
Config
::
gets
(
"Signalisations"
,
"SIP.sipproxy"
)
!=
""
)
{
reg_id
=
eXosip_register_init
(
from
,
proxy
,
NULL
);
...
...
@@ -386,6 +396,10 @@ SIP::setAuthentication (void) {
login
=
Config
::
gets
(
"Signalisations"
,
"SIP.userPart"
);
}
pass
=
Config
::
gets
(
"Signalisations"
,
"SIP.password"
);
if
(
pass
==
""
)
{
callmanager
->
errorDisplay
(
"Fill password field"
);
return
-
1
;
}
if
(
callmanager
->
useStun
())
{
realm
=
Config
::
gets
(
"Signalisations"
,
"SIP.hostPart"
);
...
...
@@ -426,11 +440,11 @@ SIP::startCall ( char *from, char *to, char *subject, char *route) {
int
i
;
if
(
checkUrl
(
from
)
!=
0
)
{
qDebug
(
"Error syntax
for From header"
);
callmanager
->
errorDisplay
(
"Error
for From header"
);
return
-
1
;
}
if
(
checkUrl
(
to
)
!=
0
)
{
qDebug
(
"Error syntax
for To header"
);
callmanager
->
errorDisplay
(
"Error
for To header"
);
return
-
1
;
}
...
...
@@ -560,11 +574,11 @@ SIP::manageActions (int usedLine, int action) {
// IP-Phone user is answering a call.
case
ANSWER_CALL
:
qDebug
(
"ANSWER_CALL line %d, call = 0x%X, cid = %d, did = %d"
,
usedLine
,
call
[
usedLine
],
call
[
usedLine
]
->
cid
,
call
[
usedLine
]
->
did
);
qDebug
(
"ANSWER_CALL line %d, cid = %d, did = %d"
,
usedLine
,
call
[
usedLine
]
->
cid
,
call
[
usedLine
]
->
did
);
callmanager
->
setCallInProgress
(
false
);
//callmanager->setCallInProgress(false);
callmanager
->
phLines
[
usedLine
]
->
setbInProgress
(
false
);
// Get local port
snprintf
(
tmpbuf
,
63
,
"%d"
,
call
[
usedLine
]
->
getLocalAudioPort
());
...
...
@@ -587,6 +601,7 @@ SIP::manageActions (int usedLine, int action) {
qDebug
(
"CLOSE_CALL: cid = %d et did = %d"
,
call
[
usedLine
]
->
cid
,
call
[
usedLine
]
->
did
);
qDebug
(
"JE RACCROCHE CALL 0x%d, usedline = %d"
,
call
[
usedLine
],
usedLine
);
// Release SIP stack.
eXosip_lock
();
i
=
eXosip_terminate_call
(
call
[
usedLine
]
->
cid
,
call
[
usedLine
]
->
did
);
...
...
@@ -620,7 +635,7 @@ SIP::manageActions (int usedLine, int action) {
// IP-Phone user is parking peer OFF HOLD
case
OFFHOLD_CALL
:
call
[
usedLine
]
->
usehold
=
true
;
qDebug
(
"OFF HOLD CALL 0x%d, usedLine = %d"
,
call
[
usedLine
],
usedLine
);
eXosip_lock
();
i
=
eXosip_off_hold_call
(
call
[
usedLine
]
->
did
,
NULL
,
0
);
eXosip_unlock
();
...
...
@@ -654,6 +669,8 @@ SIP::manageActions (int usedLine, int action) {
i
=
eXosip_terminate_call
(
call
[
usedLine
]
->
cid
,
call
[
usedLine
]
->
did
);
eXosip_unlock
();
callmanager
->
ringTone
(
false
);
// Delete the call when I hangup
if
(
call
[
usedLine
]
!=
NULL
)
{
delete
call
[
usedLine
];
...
...
@@ -674,6 +691,7 @@ int
SIP
::
getEvent
(
void
)
{
eXosip_event_t
*
event
;
int
theline
=
-
1
;
int
curLine
;
static
int
countReg
=
0
;
event
=
eXosip_event_wait
(
0
,
50
);
...
...
@@ -702,15 +720,17 @@ SIP::getEvent (void) {
assert
(
theline
>=
0
);
assert
(
theline
<
NUMBER_OF_LINES
);
if
(
call
[
theline
]
==
NULL
)
{
callmanager
->
setCallInProgress
(
true
);
//callmanager->setCallInProgress(true);
callmanager
->
phLines
[
theline
]
->
setbInProgress
(
true
);
call
[
theline
]
=
new
SipCall
(
callmanager
);
call
[
theline
]
->
newIncomingCall
(
event
);
// Associate an audio port with a call
call
[
theline
]
->
setLocalAudioPort
(
local_port
);
//
Visual bl
in
k
s
ignal and tone setup
when somebody calls
me
//
Ring
in
g
s
tarts
when somebody calls
IP-phone user
callmanager
->
ring
();
callmanager
->
phLines
[
theline
]
->
setbRinging
(
true
);
}
break
;
...
...
@@ -722,14 +742,16 @@ SIP::getEvent (void) {
// TODO: stop the ringtone
callmanager
->
ringTone
(
false
);
// Stop the call progress
callmanager
->
setCallInProgress
(
false
);
curLine
=
callmanager
->
getCurrentLineNumber
();
theline
=
findLineNumber
(
event
);
if
(
call
[
theline
]
==
NULL
)
{
call
[
theline
]
=
new
SipCall
(
callmanager
);
}
// Stop the call progress
//callmanager->setCallInProgress(false);
callmanager
->
phLines
[
theline
]
->
setbInProgress
(
false
);
// Conditions to not start sound when callee answers for onhold
// and offhold state
...
...
@@ -757,7 +779,10 @@ SIP::getEvent (void) {
exit
(
1
);
}
}
}
else
if
(
callmanager
->
otherLine
())
{
}
else
if
(
callmanager
->
otherLine
()
and
call
[
curLine
]
==
NULL
)
{
// If a new line replaces the used current line and
// it's not ringing.
callmanager
->
startDialTone
();
}
break
;
...
...
@@ -768,6 +793,8 @@ SIP::getEvent (void) {
event
->
remote_uri
);
callmanager
->
handleRemoteEvent
(
0
,
NULL
,
EXOSIP_CALL_RINGING
);
// TODO : rajouter tonalite qd ca sonne
//callmanager->ringTone(true);
// If we have chosen the line before validating the phone number
if
(
callmanager
->
isChosenLine
()
and
!
callmanager
->
otherLine
())
{
...
...
@@ -803,39 +830,55 @@ SIP::getEvent (void) {
qDebug
(
"REQUESTFAILURE<- (%i %i) [%i %s] %s"
,
event
->
cid
,
event
->
did
,
event
->
status_code
,
event
->
reason_phrase
,
event
->
remote_uri
);
theline
=
findLineNumber
(
event
);
assert
(
theline
>=
0
);
assert
(
theline
<
NUMBER_OF_LINES
);
// call[theline]->requestfailureCall(event);
callmanager
->
phLines
[
theline
]
->
setbInProgress
(
false
);
// Handle 4XX errors
switch
(
event
->
status_code
)
{