via: 9ff716208ae05c3e9cb55d639243371e8553bb17 (commit)
via: 93112a4f782c3e44108439e6fdeb7789482735d4 (commit)
via: 32250fa69ff8b942ca99c4eaabafde285cc27c9a (commit)
via: b98a258f545eea7976d80c2bb6450a73caa9dd3c (commit)
via: 55ef55a5a9e951b26c52b3d2f0e5f902e568f1f9 (commit)
via: ca8489d71e127d5ff7beafbd91bcf5f9c683dd8d (commit)
via: 0cb41713987185aec7f42c9cff174b6d2757e460 (commit)
via: c2e63f1d8fc269cf17bd85d534c9099af8a454b6 (commit)
via: ee436d35144c7d85629d2c7356db64d5f392d1ff (commit)
via: abd1a5786ac8079d735ede53515dbaedd8324acd (commit)
via: d850c3f8a176e25142ee03cf316f4f19204837ea (commit)
via: c780da02444472e37aee420dbb3087c232094d4e (commit)
via: 90edbdd8fa5095b59024bbe41e3291c460d5a929 (commit)
via: d9ed290a32fd5dfd4401b02652e07c892126d7c6 (commit)
via: 0ad7de6241a7ed8f208ce82cfe39e27ba3a848ac (commit)
via: 078d663ef932223e27db8166e074cc4f4542a339 (commit)
via: 4bebf82901b579b38a58642bf4e409db912f33bb (commit)
via: 0d3117dc3c66448cd5b7f5219198d57865329619 (commit)
via: 7342c77d10810960f49fc5213db4a23dc203fd7a (commit)
via: 9ecdde39b5fb94c4708b530a7c90e82900ff15ed (commit)
via: 69415c934e4b3dc70b22816aa847706336c442f5 (commit)
via: 8b7b83f0a42fc7cce5deaacd1c3a56f76c392175 (commit)
via: 7f89d85adb464f103abda4c3cee75a10f9515921 (commit)
via: 68d384edcbabcac7e4058bbf26f409817d2c4505 (commit)
via: f763d39469b5e2c75ca9ba0ce3aa702cd31d02ab (commit)
via: 9d2159f50948fd24df3a8bd2cfca6b134fb06643 (commit)
via: 215d28aad12526e59f86e03e62b4a44def0bb0c9 (commit)
via: 24d4ad4efc9304067e70ef087ff723b9d996c49c (commit)
via: f242d90a8febb1151c3e52998e3af08780345026 (commit)
via: 6ca02e4ccb7d608a626e21141c8addd140b71a8e (commit)
via: 2d3389c92b55f5e357347a78d00f11c3a39095c3 (commit)
via: 12fdbfc7fdc9250384678c220f83c18750e1c7a5 (commit)
via: 05607e2921107e506212e5dc4682f741e5a2094d (commit)
via: dd717e22ac45a6f98df556058eb7f86f98e2f529 (commit)
via: d9b852ba104ca8ae88795008c476c9938a14e60d (commit)
via: 6c763424234f10968f440d663e4ee484d221fe32 (commit)
via: c0c365936eab87719433e1e96c4fbf4adf7c9e47 (commit)
via: eadf3dc00f690257a7ee04949bc5b676cb6b622f (commit)
via: 729cc6d3ea25ff83efa9f1cb344cf066eee69efe (commit)
via: d55d498c5d54b30055551e683d5e28b6bf2253f8 (commit)
via: 44e02296787e6776b62d528872eed216c8835fc6 (commit)
via: 2136632a9d3d3210edcb0296616b51f093505809 (commit)
via: 577fc9ba2ce176c24897eac5382d4c8239f204f0 (commit)
via: c79712dc7b6516c7cf866566558bd90a8b3019f8 (commit)
via: 3fda7b4ada645ac361dac8e55ac7cafe94ae7287 (commit)
via: 3d9d46652b597fd6360129de9c986491a58c5610 (commit)
via: 12801e42e4655416b73cb7a206c60e5c66d34e10 (commit)
via: d2a9bb867d3c01d38ea12fa655b65ad68c0b24e0 (commit)
via: faf08b1841ee3f0807afd3d886066aeb3776f739 (commit)
via: 0405d1fb7209050a0fa1cc0718c0aeee61191a95 (commit)
via: 7896938aefaf21adc42a01b4d8e9dd3d42ffbc82 (commit)
via: 9c0deb98bbc4aa6a9e5e6f792e911b550f4db83f (commit)
via: 0bff16bee499925e83339750a0ce5c1386fc0048 (commit)
via: 9858ca1c2a2fda5d56f268a6e359e207eedde6ab (commit)
via: 98ea43c3681dd0263dcf027aef3437732e0682e1 (commit)
via: 9aa2f07c369938230c5c4b8b61b67b1c53749efe (commit)
via: cfaca250a7c49387abd98ef3fbd7124efb02d422 (commit)
via: b6c998685330b7c689cd08726438271ac68f0361 (commit)
via: 75bbd885eb1eef0bcfea9b5371557823ca584522 (commit)
via: 274a7dd627ab98012ebf26c68c0ed5f440fa9033 (commit)
via: 2bd0da508187e942e4c906275e286cefedb3a62e (commit)
via: 48590eca54e7c93ef987768a24a844dfd72986d1 (commit)
via: 594536af195a45e9515ff1c40979a3f036934e49 (commit)
via: 4a414482ddc08fe77a42daab560a1bd860235154 (commit)
via: 3f2c531df509383cd93d9ae4379bfb656a969c7e (commit)
via: fc1ff4f95853eb0a66db9b3658f596c19f8e66c4 (commit)
via: 4277bdbadddb4bd6bd034812a4f59db60bd6e2aa (commit)
via: 5247b0c1000e9aa6e642cdd238396d679d7c6bb3 (commit)
via: 09778f943674b470c51a636aa8e3e3b22589708e (commit)
via: 007d9a09df8e52d540e46eb009b44f69121fc275 (commit)
via: f3c9f291d9c4854ff8c17e81552d9ed2a4c3b1e5 (commit)
via: 9815e2a0df6b765a401a8572abffd9fdaebc7445 (commit)
via: 39a9310bb19111abd30bc321486131ee6c192419 (commit)
via: e2b54d344ba3c45ad021c55c622de2435d26f760 (commit)
via: ad1abfb06540e554b8798fd1569576e5324ee4f1 (commit)
via: dba9490db801a8203ae10be142cfe9cc52c467da (commit)
via: 88e84105b037d43dbbeef108fceb97f83d1e758a (commit)
via: e0701b3b4cfc9b24182a649ab4b9c7831d35deda (commit)
via: 30bc2ff4614fd7c90f7fa09ff70fc1d8cad60d0b (commit)
via: 41614caf79c0f8b391edb387c5fa956b2b04779e (commit)
via: 093784f337adf048e03b8532ce2f6a05f1c508ee (commit)
via: 2099249f0382f35538438dd7aa8e8d66a0524acf (commit)
via: b01aff5a42c014303620a0c91e2c2ab7445b7b58 (commit)
via: 4d72a146079811b6082465e83b78b5ea75c37f14 (commit)
from: a4349bbeba56858b0c17f8b69ed69ecebba0bc58 (commit)
= COMMIT LOG ===========================================================
committer: Chad Phillips
comments:
Merge branch 'master' of ssh://git.freeswitch.org/freeswitch-contrib
committer: Mitch Capper
comments:
Merge branch 'master' of ssh://git.freeswitch.org/freeswitch-contrib
committer: Mitch Capper
comments:
Added option to delete contacts
diff --git a/mitchcapper/FSClient/SimpleContactPluginBase.cs b/mitchcapper/FSClient/SimpleContactPluginBase.cs
index 3c1b33b..66c3918 100644
--- a/mitchcapper/FSClient/SimpleContactPluginBase.cs
+++ b/mitchcapper/FSClient/SimpleContactPluginBase.cs
@@ -23,6 +23,12 @@ namespace FSClient
{
return number;
}
+ protected virtual void DeleteNumber(string number){
+ number_to_alias.Remove(number);
+ }
+ protected virtual bool CanDeleteContact(){
+ return true;
+ }
protected virtual string IsValidAlias(String str)//return null to abort updating, otherwire return string
{
return str;
@@ -49,14 +55,34 @@ namespace FSClient
MenuItem item = new MenuItem();
item.Click += item_Click;
item.Header = "Edit Contact";
- items.Add(item);
+ items.Add(item);
+ if (CanDeleteContact()){
+ item = new MenuItem();
+ item.Click += delete_item_click;
+ item.Header = "Delete Contact";
+ items.Add(item);
+ }
item = new MenuItem();
item.Click +=contact_call_click;
item.Header = "Call";
items.Add(item);
return items;
- }
-
+ }
+
+ private void delete_item_click(object sender, RoutedEventArgs e){
+ MenuItem item = sender as MenuItem;
+ if (item == null)
+ return;
+
+ SearchAutoCompleteEntry entry = item.DataContext as SearchAutoCompleteEntry ?? search_box.SelectedItem as SearchAutoCompleteEntry;
+ if (entry == null)
+ return;
+ String number = entry.number;
+ number = NormalizeNumber(number);
+ DeleteNumber(number);
+ refresh_search_box();
+ }
+
private void contact_call_click(object sender, RoutedEventArgs e){
MenuItem item = sender as MenuItem;
if (item == null)
diff --git a/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.cs b/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.cs
index 55da854..3077954 100644
--- a/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.cs
+++ b/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.cs
@@ -88,6 +88,10 @@ namespace SimpleXmlContactPlugin {
protected override void UpdateDatabase(string number, string alias){
SaveDatabase();
+ }
+ protected override void DeleteNumber(string number) {
+ base.DeleteNumber(number);
+ SaveDatabase();
}
}
committer: Mathieu Parent
comments:
MediaBortha: fix HTML form (hidden fields)
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
index 1c0454a..feb98e8 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
@@ -137,23 +137,28 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {
foreach($form as $field) {
if ($field->get('visibility') === 'hidden') {
- continue;
+ $inputElement = $this->_xml->createElement('input');
+ $inputElement = $formElement->appendChild($inputElement);
+ $inputElement->setAttribute('name', $field->get('name'));
+ $inputElement->setAttribute('value', $field->get('value'));
+ $inputElement->setAttribute('type', 'hidden');
+ } else {
+ $trElement = $this->_xml->createElement('tr');
+ $trElement = $tableElement->appendChild($trElement);
+
+ $tdElement1 = $this->_xml->createElement('th');
+ $tdElement1 = $trElement->appendChild($tdElement1);
+ $text1 = $this->_xml->createTextNode($field->get('display_name'));
+ $text1 = $tdElement1->appendChild($text1);
+
+ $tdElement2 = $this->_xml->createElement('td');
+ $tdElement2 = $trElement->appendChild($tdElement2);
+
+ $inputElement = $this->_xml->createElement('input');
+ $inputElement = $tdElement2->appendChild($inputElement);
+ $inputElement->setAttribute('name', $field->get('name'));
+ $inputElement->setAttribute('value', $field->get('value'));
}
- $trElement = $this->_xml->createElement('tr');
- $trElement = $tableElement->appendChild($trElement);
-
- $tdElement1 = $this->_xml->createElement('th');
- $tdElement1 = $trElement->appendChild($tdElement1);
- $text1 = $this->_xml->createTextNode($field->get('display_name'));
- $text1 = $tdElement1->appendChild($text1);
-
- $tdElement2 = $this->_xml->createElement('td');
- $tdElement2 = $trElement->appendChild($tdElement2);
-
- $inputElement = $this->_xml->createElement('input');
- $inputElement = $tdElement2->appendChild($inputElement);
- $inputElement->setAttribute('name', $field->get('name'));
- $inputElement->setAttribute('value', $field->get('value'));
}
$trElement = $this->_xml->createElement('tr');
committer: Mathieu Parent
comments:
MediaBrotha: LDAP search and result
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
index 2b04351..a1a0e98 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
@@ -50,16 +50,22 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {
// Browsing
public function mediaFromBufferItem($entry) {
- if ($entry) {
- $media = new MediaBrotha_Media(
+ if (is_a($entry, 'Net_LDAP2_Entry')) {
+ return new MediaBrotha_Media(
'ldap:///'.$entry->dn(),
Array(
'display_name' => $entry->dn(), //$entry->getValue('sn', 'single'),
),
'text/directory'
- //$finfo->file($file->getPathname(), FILEINFO_MIME_ENCODING);
);
- return $media;
+ } else {
+ return new MediaBrotha_Media(
+ 'ldap:///',
+ Array(
+ 'display_name' => $entry[0].': '.$entry[1],
+ ),
+ 'text/directory'
+ );
}
}
@@ -73,8 +79,10 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {
if ($this->_isHandled($media)) {
return Array(
'_default',
+ 'detail',
'browse',
'search',
+ '_search-result',
);
} else {
return parent::getMediaActions($media);
@@ -92,13 +100,48 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {
if ($basedn && ($basedn{0} = '/')) {
$basedn = substr($basedn, 1);
}
- $ldap_search = $this->_ldap->search($basedn, NULL,
- Array());
+ $ldap_search = $this->_ldap->search($basedn, NULL, Array());
return new MediaBrotha_MediaIterator($this, $ldap_search);
+ case 'detail':
+ $uri = $media->getURI();
+ if (($this::parseLDAPURI($uri, PHP_URL_SCHEME) != 'ldap') || !$this->isURISafe($uri)) {
+ return false;
+ }
+ $basedn = $this::parseLDAPURI($uri, PHP_URL_PATH);
+ if ($basedn && ($basedn{0} = '/')) {
+ $basedn = substr($basedn, 1);
+ }
+ $ldap_entry = $this->_ldap->getEntry($basedn);
+ $it = new ArrayIterator();
+ foreach ($ldap_entry->attributes() as $attr) {
+ foreach($ldap_entry->getValue($attr, 'all') as $value) {
+ $it[] = Array($attr, $value);
+ }
+ }
+ return new MediaBrotha_MediaIterator($this, $it);
case '_default':
case 'search':
+ case '_search-result':
$form = new MediaBrotha_Form();
$form->setTitle('search');
+ $form->addField(Array(
+ 'name' => 'backend',
+ 'value' => 'LDAP',
+ 'visibility' => 'hidden',
+ )
+ );
+ $form->addField(Array(
+ 'name' => 'action',
+ 'value' => '_search-result',
+ 'visibility' => 'hidden',
+ )
+ );
+ $form->addField(Array(
+ 'name' => 'uri',
+ 'value' => 'ldap://',
+ 'visibility' => 'hidden',
+ )
+ );
$search_fields = Array(
'sn' => Array('display_name' => 'last name'),
'givenName' => Array('display_name' => 'first name'),
@@ -124,22 +167,15 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {
}
$form->addField($field);
}
- if (empty($_GET['ldap_search'])) {
- MediaBrotha_Core::addCallback('MediaBrotha_Backend_LDAP::searchCallback');
+ if ($action !== '_search-result') {
return $form;
} else {
- $ldap_search = $this->_ldap->search(NULL, $filter,
- Array('scope' => 'sub'));
+ $ldap_search = $this->_ldap->search(NULL, $filter, Array('scope' => 'sub'));
return new MediaBrotha_MediaIterator($this, $ldap_search);
}
default:
return parent::doMediaAction($action, $media);
}
}
- static public function searchCallback() {
- $_GET['backend'] = 'LDAP';
- $_GET['action'] = 'search';
- $_GET['ldap_search'] = '1';
- }
}
committer: Mathieu Parent
comments:
MediaBrotha: avoid error on first connection because of unset session
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Core.php b/sathieu/cisco-xml/lib/MediaBrotha/Core.php
index 9e53e13..7758a55 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Core.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Core.php
@@ -202,6 +202,8 @@ class MediaBrotha_Core {
if ($v = MediaBrotha_Core::hash2value($h)) {
parse_str($v, $output);
return $output;
+ } else {
+ return Array();
}
}
committer: Mathieu Parent
comments:
MediaBrotha: add ability to pass params by using hidden fields
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Form.php b/sathieu/cisco-xml/lib/MediaBrotha/Form.php
index 08dd4c6..509341a 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Form.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Form.php
@@ -40,6 +40,7 @@ class MediaBrotha_Field {
class MediaBrotha_Form extends ArrayIterator {
private $_title;
+
public function getTitle() {
return $this->_title;
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
index d859829..0f31ee1 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
@@ -72,11 +72,20 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {
}
public function renderForm(MediaBrotha_Form $form) {
+ foreach($form as $field) {
+ if ($field->get('visibility') === 'hidden') {
+ $params[$field->get('name')] = $field->get('value');
+ }
+ }
$xml = new CiscoIPPhoneInput();
$xml->setCiscoElement('Title', $form->getTitle());
//$xml->setCiscoElement('Prompt', ...);
- $xml->setCiscoElement('URL', $this->rootURL());
+ $xml->setCiscoElement('URL', $this->rootURL().'?'.MediaBrotha_Core::value2hash(http_build_query($params)));
+ $params = Array();
foreach($form as $field) {
+ if ($field->get('visibility') === 'hidden') {
+ continue;
+ }
$flags = 'A';
$xml->setCiscoElement('InputItem',
Array(
@@ -88,6 +97,19 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {
);
}
+
+ $xml->setCiscoElement('SoftKeyItem',
+ Array('Name' => 'Search',
+ 'URL' => 'SoftKey:Submit',
+ 'Position' => 1));
+ $xml->setCiscoElement('SoftKeyItem',
+ Array('Name' => '<<',
+ 'URL' => 'SoftKey:<<',
+ 'Position' => 2));
+ $xml->setCiscoElement('SoftKeyItem',
+ Array('Name' => 'Exit',
+ 'URL' => 'SoftKey:Exit',
+ 'Position' => 3));
CiscoXMLObject::HttpHeader();
print $xml;
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
index c1ea4df..1c0454a 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
@@ -56,6 +56,7 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {
private function _createHTMLDocument($title) {
$this->_xml = new DOMDocument('1.0');
+ $this->_xml->formatOutput = true;
$root = $this->_xml->createElement('html');
$root = $this->_xml->appendChild($root);
@@ -135,6 +136,9 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {
$tableElement = $formElement->appendChild($tableElement);
foreach($form as $field) {
+ if ($field->get('visibility') === 'hidden') {
+ continue;
+ }
$trElement = $this->_xml->createElement('tr');
$trElement = $tableElement->appendChild($trElement);
committer: Mathieu Parent
comments:
MediaBrotha: add ability to force Cisco-XML mode
diff --git a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
index 0da1cc3..82226f4 100644
--- a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
+++ b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
@@ -26,7 +26,7 @@ This file is part of XML services for Cisco IP Phones.
class CiscoIPPhone {
static public function userAgentIsCiscoIPPhone() {
if (isset($_SERVER['HTTP_USER_AGENT'])) {
- return preg_match('/^Allegro-Software-WebClient\//', $_SERVER['HTTP_USER_AGENT']);
+ return preg_match('/^Allegro-Software-WebClient\//', $_SERVER['HTTP_USER_AGENT']) || isset($_GET['forceciscoxml']);
}
}
committer: Mathieu Parent
comments:
MediaBrotha:
- do not display the _default action
- ensure session arrays are set
- limit MenuItem > Name to 64 chars
- Cisco IP Phone need a field flag of 1 char
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
index 8e56562..f85b59f 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
@@ -67,6 +67,16 @@ abstract class MediaBrotha_Backend {
}
// Actions
+ final public function getVisibleMediaActions(MediaBrotha_Media $media) {
+ $actions = Array();
+ foreach ($this->getMediaActions($media) as $action) {
+ if ($action{0} !== '_') {
+ $actions[] = $action;
+ }
+ }
+ return $actions;
+ }
+
public function getMediaActions(MediaBrotha_Media $media) {
return Array();
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Core.php b/sathieu/cisco-xml/lib/MediaBrotha/Core.php
index f241c66..9e53e13 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Core.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Core.php
@@ -43,6 +43,12 @@ class MediaBrotha_Core {
if (!session_start()) {
throw new Exception('Unable to start session');
}
+ if (!isset($_SESSION['HASHES'])) {
+ $_SESSION['HASHES'] = Array();
+ }
+ if (!isset($_SESSION['CALLBACK'])) {
+ $_SESSION['CALLBACK'] = Array();
+ }
MediaBrotha_Core::_unhashRequest();
MediaBrotha_Core::loadBackend('Root');
} catch (Exception $e) {
@@ -200,9 +206,6 @@ class MediaBrotha_Core {
}
private static function _unhashRequest() {
- if (!isset($_SESSION['HASHES'])) {
- $_SESSION['HASHES'] = Array();
- }
if (isset($_SERVER["QUERY_STRING"])) {
$tmp = explode('&', $_SERVER["QUERY_STRING"]);
foreach ($tmp as $h) {
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
index 1bf85b7..d859829 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
@@ -43,7 +43,7 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {
($item->getMimeEncoding() ? ('mime_encoding='.urlencode($item->getMimeEncoding()).'&') : '').
'uri='.urlencode($item->getURI()));
$this->_xml->setCiscoElement('MenuItem',
- Array('Name' => $item->getDisplayName(), 'URL' => $url));
+ Array('Name' => $item->getDisplayName(64), 'URL' => $url));
}
public function finish($item) {
$pos = 1;
@@ -52,7 +52,7 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {
'URL' => 'SoftKey:Select',
'Position' => $pos++));
foreach (MediaBrotha_Core::getBackends() as $backend) {
- foreach ($backend->getMediaActions($item) as $action) {
+ foreach ($backend->getVisibleMediaActions($item) as $action) {
$this->_xml->setCiscoElement('SoftKeyItem',
Array('Name' => $action,
'URL' => 'QueryStringParam:'.MediaBrotha_Core::value2hash('action='.$action.'&backend='.$backend->getBackendName()),
@@ -77,12 +77,13 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {
//$xml->setCiscoElement('Prompt', ...);
$xml->setCiscoElement('URL', $this->rootURL());
foreach($form as $field) {
+ $flags = 'A';
$xml->setCiscoElement('InputItem',
Array(
'DisplayName' => $field->get('display_name'),
'QueryStringParam' => $field->get('name'),
'DefaultValue' => $field->get('value'),
- 'InputFlags' => '',
+ 'InputFlags' => $flags,
)
);
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
index f6d4015..c1ea4df 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
@@ -40,7 +40,7 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {
'uri='.urlencode($media->getURI()));
foreach (MediaBrotha_Core::getBackends() as $backend) {
- foreach ($backend->getMediaActions($media) as $action) {
+ foreach ($backend->getVisibleMediaActions($media) as $action) {
$tag = $this->_xml->createElement($tag_name);
$tag = $parent->appendChild($tag);
committer: Mitch Capper
comments:
Minor cleanup, removed options that were not needed, and stop debug logging.
diff --git a/mitchcapper/FSClient/Broker.cs b/mitchcapper/FSClient/Broker.cs
index b97d932..959dc0d 100644
--- a/mitchcapper/FSClient/Broker.cs
+++ b/mitchcapper/FSClient/Broker.cs
@@ -652,7 +652,7 @@ namespace FSClient {
XmlUtils.AddNodeAttrib(config_node, "name", name);
XmlUtils.AddNodeAttrib(config_node, "description", desc);
func(config_node);
- root_doc.Save(@"c:\temp\fs_" + name);
+ //root_doc.Save(@"c:\temp\fs_" + name);
return root_doc.OuterXml;
}
private string xml_search(FreeSWITCH.SwitchXmlSearchBinding.XmlBindingArgs args) {
@@ -674,9 +674,9 @@ namespace FSClient {
private static IDisposable event_bind;
private void fs_core_init() {
- fs_inited = true;
- freeswitch.switch_core_set_globals();
+ fs_inited = true;
String err = "";
+ freeswitch.switch_core_set_globals();
const uint flags = (uint)(switch_core_flag_enum_t.SCF_USE_SQL | switch_core_flag_enum_t.SCF_USE_AUTO_NAT);
switch_status_t res = freeswitch.switch_core_init(flags, switch_bool_t.SWITCH_FALSE, ref err);
search_bind = FreeSWITCH.SwitchXmlSearchBinding.Bind(xml_search, switch_xml_section_enum_t.SWITCH_XML_SECTION_CONFIG);
diff --git a/mitchcapper/FSClient/External Items/conf/freeswitch.xml b/mitchcapper/FSClient/External Items/conf/freeswitch.xml
index abd04ad..8c53be0 100644
--- a/mitchcapper/FSClient/External Items/conf/freeswitch.xml
+++ b/mitchcapper/FSClient/External Items/conf/freeswitch.xml
@@ -1,14 +1,8 @@
<?xml version="1.0"?>
<document type="freeswitch/xml">
- <X-PRE-PROCESS cmd="set" data="auto_answer=false"/>
- <X-PRE-PROCESS cmd="set" data="domain=$${local_ip_v4}"/>
<X-PRE-PROCESS cmd="set" data="hold_music=local_stream://moh"/>
- <X-PRE-PROCESS cmd="set" data="external_rtp_ip=stun:stun.freeswitch.org"/>
- <X-PRE-PROCESS cmd="set" data="external_sip_ip=stun:stun.freeswitch.org"/>
<X-PRE-PROCESS cmd="set" data="console_loglevel=info"/>
<X-PRE-PROCESS cmd="set" data="us-ring=v=0;%(2000,4000,440.0,480.0)"/>
- <X-PRE-PROCESS cmd="set" data="bong-ring=v=-7;%(100,0,941.0,1477.0);v=-7;>=2;+=.1;%(1400,0,350,440)"/>
- <X-PRE-PROCESS cmd="set" data="sit=%(274,0,913.8);%(274,0,1370.6);%(380,0,1776.7)"/>
<section name="configuration" description="Various Configuration">
<configuration name="console.conf" description="Console Logger">
@@ -36,15 +30,12 @@
</settings>
<profiles>
<profile name="default">
- <settings>
- </settings>
<mappings>
<map name="all" value="debug,info,notice,warning,err,crit,alert"/>
</mappings>
</profile>
</profiles>
</configuration>
-
<configuration name="modules.conf" description="Modules">
<modules>
<load module="mod_console"/>
@@ -69,38 +60,20 @@
<load module="mod_event_socket"/>
</modules>
</configuration>
-
<configuration name="portaudio.conf" description="Soundcard Endpoint">
<settings>
- <param name="indev" value="4"/>
- <param name="outdev" value="8"/>
- <param name="ringdev" value="8"/>
<param name="dual-streams" value="true" />
<param name="live-stream-switch" value="true" />
<param name="no-auto-resume-call" value="true" />
- <param name="no-ring-during-call" value="true" />
-
-
+ <param name="no-ring-during-call" value="true" />
<param name="ring-file" value="tone_stream://%(2000,4000,440.0,480.0);loops=20"/>
<param name="ring-interval" value="5"/>
<param name="hold-file" value="$${hold_music}"/>
<param name="dialplan" value="XML"/>
<param name="sample-rate" value="24000"/>
<param name="codec-ms" value="20"/>
- <!--
- Alternate items:
- codec-ms
- sample-rate=8000
-
- -->
</settings>
</configuration>
-
- <configuration name="post_load_modules.conf" description="Modules">
- <modules>
- </modules>
- </configuration>
-
<configuration name="switch.conf" description="Core Configuration">
<cli-keybindings>
<key name="1" value="help"/>
@@ -117,12 +90,10 @@
<key name="12" value="version"/>
</cli-keybindings>
<settings>
- <param name="colorize-console" value="true"/>
- <param name="max-sessions" value="20"/>
- <param name="sessions-per-second" value="5"/>
+ <param name="colorize" value="true"/>
+ <param name="max-sessions" value="100"/>
+ <param name="sessions-per-second" value="30"/>
<param name="loglevel" value="debug"/>
- <param name="crash-protection" value="false"/>
- <param name="dump-cores" value="yes"/>
<param name="rtp-start-port" value="16384"/>
<param name="rtp-end-port" value="16484"/>
</settings>
diff --git a/mitchcapper/FSClient/Sofia.cs b/mitchcapper/FSClient/Sofia.cs
index 3f776d6..b3f3b3d 100644
--- a/mitchcapper/FSClient/Sofia.cs
+++ b/mitchcapper/FSClient/Sofia.cs
@@ -75,7 +75,6 @@ namespace FSClient {
XmlNode global_settings = XmlUtils.AddNodeNode(config_node, "global_settings");
Utils.add_xml_param(global_settings, "auto-restart", "true");
- Utils.add_xml_param(global_settings, "debug-presence", "0");
Utils.add_xml_param(global_settings, "log-level", "0");
XmlNode profiles = XmlUtils.AddNodeNode(config_node, "profiles");
XmlNode profile = XmlUtils.AddNodeNode(profiles, "profile");
@@ -87,7 +86,6 @@ namespace FSClient {
Utils.add_xml_param(settings, "context", "public");
Utils.add_xml_param(settings, "dialplan", "xml");
Utils.add_xml_param(settings, "disable-register", "true");
- Utils.add_xml_param(settings, "manage-presence", "false");
foreach (FieldValue value in values) {
if (!String.IsNullOrEmpty(value.field.xml_name))
Utils.add_xml_param(settings, value.field.xml_name, value.value);
committer: Mitch Capper
comments:
Merge branch 'master' of ssh://git.freeswitch.org/freeswitch-contrib
committer: Mathieu Parent
comments:
MediaBrotha: LDAP search form
And more:
- callback
- rework of actions
- exceptions handling
- forms
diff --git a/sathieu/cisco-xml/browser/index.php b/sathieu/cisco-xml/browser/index.php
index 137b409..c3286fa 100644
--- a/sathieu/cisco-xml/browser/index.php
+++ b/sathieu/cisco-xml/browser/index.php
@@ -25,7 +25,7 @@ This file is part of XML services for Cisco IP Phones.
*/
//* Debug
-ini_set('error_reporting', E_ALL | E_STRUCT);
+ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
// */
diff --git a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
index 216aad6..0da1cc3 100644
--- a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
+++ b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
@@ -25,7 +25,9 @@ This file is part of XML services for Cisco IP Phones.
*/
class CiscoIPPhone {
static public function userAgentIsCiscoIPPhone() {
- return preg_match('/^Allegro-Software-WebClient\//', $_SERVER['HTTP_USER_AGENT']);
+ if (isset($_SERVER['HTTP_USER_AGENT'])) {
+ return preg_match('/^Allegro-Software-WebClient\//', $_SERVER['HTTP_USER_AGENT']);
+ }
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
index 28a8441..8e56562 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
@@ -26,8 +26,8 @@ This file is part of MediaBrotha.
require_once('MediaBrotha/Media.php');
-class MediaBrotha_Backend {
- protected $_params = NULL;
+abstract class MediaBrotha_Backend {
+ private $_params = NULL;
public function __construct($params = NULL) {
$this->setParam($params);
@@ -35,7 +35,7 @@ class MediaBrotha_Backend {
}
/* params */
- public function getParam($name = NULL) {
+ final public function getParam($name = NULL) {
if ($name === NULL) {
return $this->_params;
} elseif (isset($this->_params[$name])) {
@@ -44,7 +44,7 @@ class MediaBrotha_Backend {
return NULL;
}
}
- public function setParam($name, $value = NULL) {
+ final public function setParam($name, $value = NULL) {
if (is_array($name)) {
$this->_params = $name;
} else {
@@ -66,10 +66,6 @@ class MediaBrotha_Backend {
return $item;
}
- public function fetch(MediaBrotha_Media $media) {
- return false;
- }
-
// Actions
public function getMediaActions(MediaBrotha_Media $media) {
return Array();
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
index 006814b..c23a86f 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
@@ -61,19 +61,6 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {
}
}
- public function fetch(MediaBrotha_Media $media) {
- $uri = $media->getURI();
- if ((parse_url($uri, PHP_URL_SCHEME) != 'file') || !$this->isURISafe($uri)) {
- $uri = 'file://'.$this->getParam('base_path');
- }
- $path = parse_url($uri, PHP_URL_PATH);
- if (is_dir($path)) {
- return new MediaBrotha_MediaIterator($this, $media, new DirectoryIterator($path));
- } else {
- return false;
- }
- }
-
// Actions
protected function _isHandled(MediaBrotha_Media $media) {
return ($media->getMimeType() === 'application/x-directory')
@@ -83,6 +70,7 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {
public function getMediaActions(MediaBrotha_Media $media) {
if ($this->_isHandled($media)) {
return Array(
+ '_default',
'browse',
);
} else {
@@ -90,6 +78,25 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {
}
}
+ public function doMediaAction($action, MediaBrotha_Media $media) {
+ switch($action) {
+ case '_default':
+ case 'browse':
+ $uri = $media->getURI();
+ if ((parse_url($uri, PHP_URL_SCHEME) != 'file') || !$this->isURISafe($uri)) {
+ $uri = 'file://'.$this->getParam('base_path');
+ }
+ $path = parse_url($uri, PHP_URL_PATH);
+ if (is_dir($path)) {
+ return new MediaBrotha_MediaIterator($this, new DirectoryIterator($path));
+ } else {
+ return false;
+ }
+ default:
+ return parent::doMediaAction($action, $media);
+ }
+ }
+
// Populate
public function populateMedia(MediaBrotha_Media $media) {
if ($this->_isHandled($media)) {
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
index 365e78e..2b04351 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
@@ -63,21 +63,6 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {
}
}
- public function fetch(MediaBrotha_Media $media) {
- $uri = $media->getURI();
- if (($this::parseLDAPURI($uri, PHP_URL_SCHEME) != 'ldap') || !$this->isURISafe($uri)) {
- $ldap_connect_config = $this->getParam('ldap_connect_config');
- $uri = 'ldap:///'.$ldap_connect_config['basedn'];
- }
- $basedn = $this::parseLDAPURI($uri, PHP_URL_PATH);
- if ($basedn && ($basedn{0} = '/')) {
- $basedn = substr($basedn, 1);
- }
- $ldap_search = $this->_ldap->search($basedn, NULL,
- Array());
- return new MediaBrotha_MediaIterator($this, $media, $ldap_search);
- return true;
- }
// Actions
protected function _isHandled(MediaBrotha_Media $media) {
return ($media->getMimeType() === 'text/directory')
@@ -87,12 +72,74 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {
public function getMediaActions(MediaBrotha_Media $media) {
if ($this->_isHandled($media)) {
return Array(
+ '_default',
'browse',
+ 'search',
);
} else {
return parent::getMediaActions($media);
}
}
-
+ public function doMediaAction($action, MediaBrotha_Media $media) {
+ switch($action) {
+ case 'browse':
+ $uri = $media->getURI();
+ if (($this::parseLDAPURI($uri, PHP_URL_SCHEME) != 'ldap') || !$this->isURISafe($uri)) {
+ $ldap_connect_config = $this->getParam('ldap_connect_config');
+ $uri = 'ldap:///'.$ldap_connect_config['basedn'];
+ }
+ $basedn = $this::parseLDAPURI($uri, PHP_URL_PATH);
+ if ($basedn && ($basedn{0} = '/')) {
+ $basedn = substr($basedn, 1);
+ }
+ $ldap_search = $this->_ldap->search($basedn, NULL,
+ Array());
+ return new MediaBrotha_MediaIterator($this, $ldap_search);
+ case '_default':
+ case 'search':
+ $form = new MediaBrotha_Form();
+ $form->setTitle('search');
+ $search_fields = Array(
+ 'sn' => Array('display_name' => 'last name'),
+ 'givenName' => Array('display_name' => 'first name'),
+ 'telephoneNumber' => Array('display_name' => 'phone', 'filter' => '(telephoneNumber=*%s*)'),
+ //'o' => Array('display_name' => 'organization'),
+ //'mobile' => Array('display_name' => 'mobile'),
+ //'facsimileTelephoneNumber' => Array('display_name' => 'fax'),
+ //'l' => Array('display_name' => 'location'),
+ //'st' => Array('display_name' => 'department'),
+ //'roomNumber' => Array('display_name' => 'room number'),
+ );
+ $ldap_connect_config = $this->getParam('ldap_connect_config');
+ $filter = $ldap_connect_config['filter'];
+ foreach ($search_fields as $attribute_name => $field) {
+ $field['name'] = $attribute_name;
+ if (!empty($_GET[$attribute_name])) {
+ $field['value'] = $_GET[$attribute_name];
+ if(empty($infos['filter'])) {
+ $filter="(&$filter($attribute_name=".$_GET[$attribute_name]."*))";
+ } else {
+ $filter="(&$filter".sprintf($infos['filter'], $_GET[$attribute_name]).")";
+ }
+ }
+ $form->addField($field);
+ }
+ if (empty($_GET['ldap_search'])) {
+ MediaBrotha_Core::addCallback('MediaBrotha_Backend_LDAP::searchCallback');
+ return $form;
+ } else {
+ $ldap_search = $this->_ldap->search(NULL, $filter,
+ Array('scope' => 'sub'));
+ return new MediaBrotha_MediaIterator($this, $ldap_search);
+ }
+ default:
+ return parent::doMediaAction($action, $media);
+ }
+ }
+ static public function searchCallback() {
+ $_GET['backend'] = 'LDAP';
+ $_GET['action'] = 'search';
+ $_GET['ldap_search'] = '1';
+ }
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
index 9616be8..613ce17 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
@@ -35,7 +35,7 @@ class MediaBrotha_Backend_Root extends MediaBrotha_Backend {
'display_name' => 'Root',
)
);
- $this->_media_iterator = new MediaBrotha_MediaIterator($this, $this->_media);
+ $this->_media_iterator = new MediaBrotha_MediaIterator($this);
}
public function addRootMedia($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {
@@ -45,9 +45,15 @@ class MediaBrotha_Backend_Root extends MediaBrotha_Backend {
$this->_media_iterator->bufferAdd($media);
}
- // Browsing
- public function fetch(MediaBrotha_Media $media) {
- return $this->_media_iterator;
+ // Actions
+ public function doMediaAction($action, MediaBrotha_Media $media) {
+ switch($action) {
+ case '_default':
+ case 'browse':
+ return $this->_media_iterator;
+ default:
+ return parent::doMediaAction($action, $media);
+ }
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
index 8c3208e..d881850 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
@@ -43,12 +43,6 @@ class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {
print $output.'<!--'.$url."-->\n";
}
- // Browsing
- public function fetch(MediaBrotha_Media $media) {
- $this->_buffer[] = $media;
- return true;
- }
-
// Actions
protected function _isHandled(MediaBrotha_Media $media) {
return in_array($media->getMimeType(), Array($this::$_supported_mime_types))
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Core.php b/sathieu/cisco-xml/lib/MediaBrotha/Core.php
index 8997a7c..f241c66 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Core.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Core.php
@@ -28,6 +28,7 @@ require_once('MediaBrotha/Backend.php');
require_once('MediaBrotha/Frontend.php');
require_once('MediaBrotha/Media.php');
require_once('MediaBrotha/MediaIterator.php');
+require_once('MediaBrotha/Form.php');
class MediaBrotha_Core {
private static $_frontend = NULL;
@@ -38,20 +39,26 @@ class MediaBrotha_Core {
* Core
*/
public static function init() {
- if (!session_start()) {
- die('Unable to start session');
+ try {
+ if (!session_start()) {
+ throw new Exception('Unable to start session');
+ }
+ MediaBrotha_Core::_unhashRequest();
+ MediaBrotha_Core::loadBackend('Root');
+ } catch (Exception $e) {
+ die($e);
}
- MediaBrotha_Core::_unhashRequest();
- MediaBrotha_Core::loadBackend('Root');
}
public static function go() {
- $current_backend = MediaBrotha_Core::getCurrentBackend();
- $current_media = MediaBrotha_Core::getCurrentMedia();
- if (MediaBrotha_Core::getAction() == 'browse') {
- if ($media_iterator = $current_backend->fetch($current_media)) {
+ try {
+ MediaBrotha_Core::runCallback();
+ $current_backend = MediaBrotha_Core::getCurrentBackend();
+ $current_media = MediaBrotha_Core::getCurrentMedia();
+ $result = $current_backend->doMediaAction(MediaBrotha_Core::getAction(), $current_media);
+ if (is_a($result, 'MediaBrotha_MediaIterator')) {
MediaBrotha_Core::$_frontend->begin($current_media);
- foreach ($media_iterator as $item) {
+ foreach ($result as $item) {
if (($item === NULL) || $item->isHidden()) {
continue;
}
@@ -59,17 +66,32 @@ class MediaBrotha_Core {
}
MediaBrotha_Core::$_frontend->finish($current_media);
MediaBrotha_Core::$_frontend->render($current_media);
+ } elseif (is_a($result, 'MediaBrotha_Form')) {
+ MediaBrotha_Core::$_frontend->renderForm($result);
+ } elseif (is_a($result, 'Exception')) {
+ throw $result;
} else {
+ throw new Exception("Got unexpected result '$result'.");
}
- } else {
- $current_backend->doMediaAction(MediaBrotha_Core::getAction(), $current_media);
+ } catch (Exception $e) {
+ MediaBrotha_Core::$_frontend->renderException($e);
}
}
- public function addRootMedia($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {
+ public static function addRootMedia($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {
MediaBrotha_Core::$_backends['Root']->addRootMedia($URI, $metadata, $mime_type, $mime_encoding);
}
+ public static function addCallback($callback, $arg = NULL) {
+ $_SESSION['CALLBACK'][] = Array($callback, $arg);
+ }
+
+ public static function runCallback() {
+ while($callback_info = array_shift($_SESSION['CALLBACK'])) {
+ call_user_func($callback_info[0],$callback_info[1]);
+ }
+ }
+
/*
* Backends
*/
@@ -129,7 +151,7 @@ class MediaBrotha_Core {
if (!empty($_GET['action'])) {
return $_GET['action'];
} else {
- return 'browse';
+ return '_default';
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php b/sathieu/cisco-xml/lib/MediaBrotha/Form.php
similarity index 60%
copy from sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
copy to sathieu/cisco-xml/lib/MediaBrotha/Form.php
index 2cc6060..08dd4c6 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Form.php
@@ -24,11 +24,31 @@ This file is part of MediaBrotha.
* @author Mathieu Parent
*/
-class MediaBrotha_Frontend {
- protected $_infos = NULL;
+class MediaBrotha_Field {
+ private $_attrs;
- public function __construct(array $args = Array()) {
- $this->_infos = $args;
+ public function __construct(array $attrs) {
+ $this->_attrs = $attrs;
+ }
+
+ public function get($name) {
+ if (isset($this->_attrs[$name])) {
+ return $this->_attrs[$name];
+ }
}
}
+class MediaBrotha_Form extends ArrayIterator {
+ private $_title;
+ public function getTitle() {
+ return $this->_title;
+ }
+
+ public function setTitle($title) {
+ $this->_title = $title;
+ }
+
+ public function addField(array $args) {
+ $this[] = new MediaBrotha_Field($args);
+ }
+}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
index 2cc6060..be427fa 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
@@ -24,11 +24,19 @@ This file is part of MediaBrotha.
* @author Mathieu Parent
*/
-class MediaBrotha_Frontend {
+abstract class MediaBrotha_Frontend {
protected $_infos = NULL;
public function __construct(array $args = Array()) {
$this->_infos = $args;
}
+
+ public function renderException(Exception $e) {
+ print $e;
+ }
+
+ public function renderForm(MediaBrotha_Form $form) {
+ throw new Exception(__FUNCTION__ .' not implemented in class "'.get_class($this).'"');
+ }
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
index 914e6ee..1bf85b7 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
@@ -52,7 +52,7 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {
'URL' => 'SoftKey:Select',
'Position' => $pos++));
foreach (MediaBrotha_Core::getBackends() as $backend) {
- foreach ($backend->getMediaActions(MediaBrotha_Core::getCurrentMedia()) as $action) {
+ foreach ($backend->getMediaActions($item) as $action) {
$this->_xml->setCiscoElement('SoftKeyItem',
Array('Name' => $action,
'URL' => 'QueryStringParam:'.MediaBrotha_Core::value2hash('action='.$action.'&backend='.$backend->getBackendName()),
@@ -70,5 +70,25 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {
print $this->_xml->execute($this->_infos['push_url']);
}
}
+
+ public function renderForm(MediaBrotha_Form $form) {
+ $xml = new CiscoIPPhoneInput();
+ $xml->setCiscoElement('Title', $form->getTitle());
+ //$xml->setCiscoElement('Prompt', ...);
+ $xml->setCiscoElement('URL', $this->rootURL());
+ foreach($form as $field) {
+ $xml->setCiscoElement('InputItem',
+ Array(
+ 'DisplayName' => $field->get('display_name'),
+ 'QueryStringParam' => $field->get('name'),
+ 'DefaultValue' => $field->get('value'),
+ 'InputFlags' => '',
+ )
+ );
+
+ }
+ CiscoXMLObject::HttpHeader();
+ print $xml;
+ }
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
index 6d09e1b..f6d4015 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
@@ -54,7 +54,7 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {
}
}
- public function begin($item) {
+ private function _createHTMLDocument($title) {
$this->_xml = new DOMDocument('1.0');
$root = $this->_xml->createElement('html');
$root = $this->_xml->appendChild($root);
@@ -62,11 +62,10 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {
$head = $this->_xml->createElement('head');
$head = $root->appendChild($head);
- $title = $this->_xml->createElement('title');
- $title = $head->appendChild($title);
-
- $text = $this->_xml->createTextNode($item->getDisplayName());
- $text = $title->appendChild($text);
+ $titleElement = $this->_xml->createElement('title');
+ $titleElement = $head->appendChild($titleElement);
+ $text = $this->_xml->createTextNode($title);
+ $text = $titleElement->appendChild($text);
$style = $this->_xml->createElement('link');
$style = $head->appendChild($style);
@@ -82,7 +81,10 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {
$this->_body = $this->_xml->createElement('body');
$this->_body = $root->appendChild($this->_body);
$this->_body->setAttribute('onload', 'bodyLoaded();');
+ }
+ public function begin($item) {
+ $this->_createHTMLDocument($item->getDisplayName());
$this->_mediaListElement = $this->_xml->createElement('ul');
$this->_mediaListElement = $this->_body->appendChild($this->_mediaListElement);
$this->_mediaListElement->setAttribute('id', 'mediaListElement');
@@ -123,5 +125,60 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {
public function render() {
print $this->_xml->saveHTML();
}
+
+ public function renderForm(MediaBrotha_Form $form) {
+ $this->_createHTMLDocument($form->getTitle());
+ $formElement = $this->_xml->createElement('form');
+ $formElement = $this->_body->appendChild($formElement);
+
+ $tableElement = $this->_xml->createElement('table');
+ $tableElement = $formElement->appendChild($tableElement);
+
+ foreach($form as $field) {
+ $trElement = $this->_xml->createElement('tr');
+ $trElement = $tableElement->appendChild($trElement);
+
+ $tdElement1 = $this->_xml->createElement('th');
+ $tdElement1 = $trElement->appendChild($tdElement1);
+ $text1 = $this->_xml->createTextNode($field->get('display_name'));
+ $text1 = $tdElement1->appendChild($text1);
+
+ $tdElement2 = $this->_xml->createElement('td');
+ $tdElement2 = $trElement->appendChild($tdElement2);
+
+ $inputElement = $this->_xml->createElement('input');
+ $inputElement = $tdElement2->appendChild($inputElement);
+ $inputElement->setAttribute('name', $field->get('name'));
+ $inputElement->setAttribute('value', $field->get('value'));
+ }
+
+ $trElement = $this->_xml->createElement('tr');
+ $trElement = $tableElement->appendChild($trElement);
+
+ $tdElement = $this->_xml->createElement('td');
+ $tdElement = $trElement->appendChild($tdElement);
+ $tdElement->setAttribute('colspan', 2);
+
+ $inputElement = $this->_xml->createElement('input');
+ $inputElement = $tdElement->appendChild($inputElement);
+ $inputElement->setAttribute('type', 'submit');
+
+ print $this->_xml->saveHTML();
+ }
+ public function renderException(Exception $e) {
+ $this->_createHTMLDocument('Error');
+ $divElement = $this->_xml->createElement('pre');
+ $divElement = $this->_body->appendChild($divElement);
+ $text = $this->_xml->createTextNode($e->getMessage());
+ $text = $divElement->appendChild($text);
+
+ $divElement = $this->_xml->createElement('pre');
+ $divElement = $this->_body->appendChild($divElement);
+ $text = $this->_xml->createTextNode($e->getTraceAsString());
+ $text = $divElement->appendChild($text);
+
+ print $this->_xml->saveHTML();
+ }
+
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php
index de19bf7..f225175 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php
@@ -24,10 +24,14 @@ This file is part of MediaBrotha.
* @author Mathieu Parent
*/
-class MediaBrotha_Frontend_HTTP extends MediaBrotha_Frontend {
+abstract class MediaBrotha_Frontend_HTTP extends MediaBrotha_Frontend {
public function rootURL() {
- $url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'];
- $url = preg_replace('/index\.php$/', '', $url);
+ if (isset($_SERVER['SERVER_NAME'])) {
+ $url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'];
+ $url = preg_replace('/index\.php$/', '', $url);
+ } else {
+ $url = $_SERVER['SCRIPT_NAME'];
+ }
return $url;
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Media.php b/sathieu/cisco-xml/lib/MediaBrotha/Media.php
index 7964473..d32ee48 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Media.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Media.php
@@ -24,7 +24,7 @@ This file is part of MediaBrotha.
* @author Mathieu Parent
*/
-class MediaBrotha_Media {
+final class MediaBrotha_Media {
private $_URI = NULL;
private $_metadata = Array();
private $_mimeType = NULL;
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php b/sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php
index 096759a..e862661 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php
@@ -28,13 +28,11 @@ require_once('MediaBrotha/Media.php');
class MediaBrotha_MediaIterator implements Iterator {
private $_backend = NULL;
- private $_media = NULL;
private $_handle = NULL;
protected $_buffer = NULL;
- public function __construct(MediaBrotha_Backend $backend, MediaBrotha_Media $media, $buffer = NULL) {
+ public function __construct(MediaBrotha_Backend $backend, $buffer = NULL) {
$this->_backend = $backend;
- $this->_media = $media;
if ($buffer) {
$this->_buffer = $buffer;
} else {
committer: Mitch Capper
comments:
Make search box text a bit smaller so it fits
diff --git a/mitchcapper/FSClient/MainWindow.xaml b/mitchcapper/FSClient/MainWindow.xaml
index 5e1eb04..3464dc9 100644
--- a/mitchcapper/FSClient/MainWindow.xaml
+++ b/mitchcapper/FSClient/MainWindow.xaml
@@ -176,7 +176,7 @@
</Canvas>
<Button Canvas.Left="283" Canvas.Top="21" Content="Send To Voicemail" FontWeight="Bold" Foreground="#FFF5E200" Height="20" Name="btnSendVoicemail" Style="{DynamicResource GlassButtonStyle}" Width="120" Visibility="Hidden" Click="btnSendVoicemail_Click" />
- <ours:OurAutoCompleteBox Canvas.Left="435" Text="Contact Search" Canvas.Top="265" Height="22" Width="164.553" Opacity="0.8" x:Name="txtSearchBox" FilterMode="Contains" GotKeyboardFocus="txtSearchBox_GotKeyboardFocus" LostKeyboardFocus="txtSearchBox_LostKeyboardFocus" DropDownClosing="txtSearchBox_DropDownClosing">
+ <ours:OurAutoCompleteBox Canvas.Left="435" Text="Contact Search" Canvas.Top="265" Height="22" Width="164.553" Opacity="0.8" x:Name="txtSearchBox" FilterMode="Contains" GotKeyboardFocus="txtSearchBox_GotKeyboardFocus" LostKeyboardFocus="txtSearchBox_LostKeyboardFocus" DropDownClosing="txtSearchBox_DropDownClosing" FontSize="11">
<ours:OurAutoCompleteBox.ItemTemplate>
<DataTemplate>
committer: Mitch Capper
comments:
Merge branch 'master' of ssh://git.freeswitch.org/freeswitch-contrib
committer: Mathieu Parent
comments:
MediaBrotha: Add missing HTML files
diff --git a/sathieu/cisco-xml/browser/static/default.css b/sathieu/cisco-xml/browser/static/default.css
new file mode 100644
index 0000000..6ef61fc
--- /dev/null
+++ b/sathieu/cisco-xml/browser/static/default.css
@@ -0,0 +1,49 @@
+/*
+ * body > ul#mediaListElement > li.mediaElement
+ */
+li.mediaElement {
+ padding: 2px;
+ margin: 0px;
+ list-style-type: none;
+}
+
+li.mediaElement:nth-child(odd) {
+ background-color: #d1e3ed;
+}
+
+/*
+ * body > ul#mediaListElement
+ */
+#mediaListElement {
+ padding: 2px;
+ margin: 0px;
+}
+
+
+/*
+ * body > ul#mediaListElement > li.mediaElement > ul.mediaActionsListElement
+ */
+li.mediaElement .mediaActionsListElement {
+ padding: 2px;
+ margin: 0px;
+ margin-left: 20px;
+ list-style-type: none;
+
+ -moz-transition-property: max-height, opacity, visibility;
+ -moz-transition-duration: 3s, 2s, 0.2s;
+ -moz-transition-delay: 0s, 1s, 1s;
+ max-height: 0px;
+ opacity: 0;
+ visibility: hidden;
+}
+
+li.mediaElement:hover .mediaActionsListElement {
+ -moz-transition-property: max-height, opacity, visibility;
+ -moz-transition-duration: 0.5s, 2s, 0.2s;
+ -moz-transition-delay: 0.4s, 0.4s, 0.4s;
+ max-height: 200px;
+ opacity: 1;
+ visibility: visible;
+}
+
+
diff --git a/sathieu/cisco-xml/browser/static/dynamic.js b/sathieu/cisco-xml/browser/static/dynamic.js
new file mode 100644
index 0000000..721eb51
--- /dev/null
+++ b/sathieu/cisco-xml/browser/static/dynamic.js
@@ -0,0 +1,4 @@
+function bodyLoaded() {
+ //nothing yet
+}
+
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
new file mode 100644
index 0000000..6d09e1b
--- /dev/null
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
@@ -0,0 +1,127 @@
+<?php
+/*
+Copyright 2011 Mathieu Parent <math.parent@gmail.com>
+
+This file is part of MediaBrotha.
+
+ MediaBrotha 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.
+
+ MediaBrotha 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 MediaBrotha. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+/**
+ * @author Mathieu Parent
+ */
+
+require_once('HTTP.php');
+
+class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {
+ private $_xml = NULL;
+ private $_body = NULL;
+ private $_mediaListElement = NULL;
+ private $_actionsListElement = NULL;
+
+ private function _mediaActionLinks($parent, $media, $tag_name) {
+ $url = $this->rootURL().'?'.
+ MediaBrotha_Core::value2hash(
+ 'mime_type='.urlencode($media->getMimeType()).'&'.
+ ($media->getMimeEncoding() ? ('mime_encoding='.urlencode($media->getMimeEncoding()).'&') : '').
+ 'uri='.urlencode($media->getURI()));
+
+ foreach (MediaBrotha_Core::getBackends() as $backend) {
+ foreach ($backend->getMediaActions($media) as $action) {
+ $tag = $this->_xml->createElement($tag_name);
+ $tag = $parent->appendChild($tag);
+
+ $a = $this->_xml->createElement('a');
+ $a = $tag->appendChild($a);
+ $a->setAttribute('href', "$url&".MediaBrotha_Core::value2hash('action='.$action.'&backend='.$backend->getBackendName()));
+
+ $text = $this->_xml->createTextNode($action);
+ $text = $a->appendChild($text);
+ }
+ }
+ }
+
+ public function begin($item) {
+ $this->_xml = new DOMDocument('1.0');
+ $root = $this->_xml->createElement('html');
+ $root = $this->_xml->appendChild($root);
+
+ $head = $this->_xml->createElement('head');
+ $head = $root->appendChild($head);
+
+ $title = $this->_xml->createElement('title');
+ $title = $head->appendChild($title);
+
+ $text = $this->_xml->createTextNode($item->getDisplayName());
+ $text = $title->appendChild($text);
+
+ $style = $this->_xml->createElement('link');
+ $style = $head->appendChild($style);
+ $style->setAttribute('type', 'text/css');
+ $style->setAttribute('rel', 'stylesheet');
+ $style->setAttribute('href', $this->rootURL().'static/default.css');
+
+ $script = $this->_xml->createElement('script');
+ $script = $head->appendChild($script);
+ $script->setAttribute('type', 'text/javascript');
+ $script->setAttribute('src', $this->rootURL().'static/dynamic.js');
+
+ $this->_body = $this->_xml->createElement('body');
+ $this->_body = $root->appendChild($this->_body);
+ $this->_body->setAttribute('onload', 'bodyLoaded();');
+
+ $this->_mediaListElement = $this->_xml->createElement('ul');
+ $this->_mediaListElement = $this->_body->appendChild($this->_mediaListElement);
+ $this->_mediaListElement->setAttribute('id', 'mediaListElement');
+ if ($parent = $item->getParent()) {
+ $this->addItem($parent);
+ }
+ }
+ public function addItem($item) {
+ $url = $this->rootURL().'?'.
+ MediaBrotha_Core::value2hash(
+ 'mime_type='.urlencode($item->getMimeType()).'&'.
+ ($item->getMimeEncoding() ? ('mime_encoding='.urlencode($item->getMimeEncoding()).'&') : '').
+ 'uri='.urlencode($item->getURI()));
+
+ $li = $this->_xml->createElement('li');
+ $li = $this->_mediaListElement->appendChild($li);
+ $li->setAttribute('class', 'mediaElement');
+
+ $a = $this->_xml->createElement('a');
+ $a = $li->appendChild($a);
+ $a->setAttribute('href', $url);
+
+ $text = $this->_xml->createTextNode($item->getDisplayName());
+ $text = $a->appendChild($text);
+
+ $ul = $this->_xml->createElement('ul');
+ $ul = $li->appendChild($ul);
+ $ul->setAttribute('class', 'mediaActionsListElement');
+
+ $this->_mediaActionLinks($ul, $item, 'li');
+ }
+ public function finish($item) {
+ $this->_actionsListElement = $this->_xml->createElement('ul');
+ $this->_actionsListElement = $this->_body->appendChild($this->_actionsListElement);
+ $this->_actionsListElement->setAttribute('id', 'actionsListElement');
+ $this->_mediaActionLinks($this->_actionsListElement, $item, 'li');
+ }
+ public function render() {
+ print $this->_xml->saveHTML();
+ }
+}
+
committer: Mathieu Parent
comments:
MediaBrotha: various enhancements
- add a HTML frontend
- frontend choosen automaticaly depending on browser
- handling of parent media
- max length for metadata and display_name
diff --git a/sathieu/cisco-xml/browser/index.php b/sathieu/cisco-xml/browser/index.php
index d142ff5..137b409 100644
--- a/sathieu/cisco-xml/browser/index.php
+++ b/sathieu/cisco-xml/browser/index.php
@@ -35,7 +35,11 @@ require_once('MediaBrotha/Core.php');
// Init
MediaBrotha_Core::init();
-MediaBrotha_Core::connectFrontend('CiscoXML', Array('push_url' => 'http://cisco:cisco@192.168.0.220/CGI/Execute'));
+if (CiscoIPPhone::userAgentIsCiscoIPPhone()) {
+ MediaBrotha_Core::connectFrontend('CiscoXML', Array('push_url' => 'http://cisco:cisco@192.168.0.220/CGI/Execute'));
+} else {
+ MediaBrotha_Core::connectFrontend('HTML');
+}
// Backends
MediaBrotha_Core::loadBackend('FileSystem', Array('base_path' => '/home/share/music/'));
@@ -51,10 +55,9 @@ $ldap_connect_config = Array(
MediaBrotha_Core::loadBackend('LDAP', Array('ldap_connect_config' => $ldap_connect_config));
// Roots
-MediaBrotha_Core::addRootMedia('file:///home/share/music/', Array('name'=> 'Fichiers'));
-MediaBrotha_Core::addRootMedia('ldap:///', Array('name'=> 'Annuaire'));
+MediaBrotha_Core::addRootMedia('file:///home/share/music/', Array('display_name'=> 'Fichiers'));
+MediaBrotha_Core::addRootMedia('ldap:///', Array('display_name'=> 'Annuaire'));
MediaBrotha_Core::go();
-
diff --git a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
index c711f9c..216aad6 100644
--- a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
+++ b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
@@ -23,6 +23,12 @@ This file is part of XML services for Cisco IP Phones.
/**
* @author Mathieu Parent
*/
+class CiscoIPPhone {
+ static public function userAgentIsCiscoIPPhone() {
+ return preg_match('/^Allegro-Software-WebClient\//', $_SERVER['HTTP_USER_AGENT']);
+
+ }
+}
class CiscoXMLField {
private $_allowed_fields = NULL;
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
index 84a6a89..28a8441 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
@@ -71,12 +71,17 @@ class MediaBrotha_Backend {
}
// Actions
- public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
+ public function getMediaActions(MediaBrotha_Media $media) {
return Array();
}
public function doMediaAction($action, MediaBrotha_Media $media) {
return false;
}
+
+ // Populate
+ public function populateMedia(MediaBrotha_Media $media) {
+ }
+
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
index 39928b4..006814b 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
@@ -40,10 +40,13 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {
// Browsing
public function mediaFromBufferItem($file) {
if ($file) {
+ if ($file->getFilename() === '..') {
+ return NULL;
+ }
$media = new MediaBrotha_Media(
'file://'.realpath($file->getPathname()),
Array(
- 'name' => $file->getFilename(),
+ 'display_name' => $file->getFilename(),
'hidden' => !$file->isReadable() || preg_match('/^\.([^.]|$)/', $file->getFilename()),
)
);
@@ -59,31 +62,47 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {
}
public function fetch(MediaBrotha_Media $media) {
- $uri =$media->getURI();
+ $uri = $media->getURI();
if ((parse_url($uri, PHP_URL_SCHEME) != 'file') || !$this->isURISafe($uri)) {
- $uri = 'file://'.$this->getMetadata('base_path');
+ $uri = 'file://'.$this->getParam('base_path');
}
$path = parse_url($uri, PHP_URL_PATH);
if (is_dir($path)) {
return new MediaBrotha_MediaIterator($this, $media, new DirectoryIterator($path));
} else {
- $this->setURI(NULL);
return false;
}
}
// Actions
- public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
- if ($mime_type === 'application/x-directory') {
- return Array(
- 'browse',
- );
- } elseif ($uri && (substr($uri, 0, 7) === 'file://')) {
+ protected function _isHandled(MediaBrotha_Media $media) {
+ return ($media->getMimeType() === 'application/x-directory')
+ || (substr($media->getURI(), 0, 7) === 'file://');
+ }
+
+ public function getMediaActions(MediaBrotha_Media $media) {
+ if ($this->_isHandled($media)) {
return Array(
'browse',
);
} else {
- return parent::getMediaActions($uri, $mime_type, $mime_encoding);
+ return parent::getMediaActions($media);
+ }
+ }
+
+ // Populate
+ public function populateMedia(MediaBrotha_Media $media) {
+ if ($this->_isHandled($media)) {
+ $parent_path = 'file://'.dirname(parse_url($media->getURI(), PHP_URL_PATH));
+ if ($this->isURISafe($parent_path)) {
+ $media->setParent(
+ new MediaBrotha_Media($parent_path,
+ Array(
+ 'display_name' => '..',
+ )
+ )
+ );
+ }
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
index c882dd7..365e78e 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
@@ -54,7 +54,7 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {
$media = new MediaBrotha_Media(
'ldap:///'.$entry->dn(),
Array(
- 'name' => $entry->dn(), //$entry->getValue('sn', 'single'),
+ 'display_name' => $entry->dn(), //$entry->getValue('sn', 'single'),
),
'text/directory'
//$finfo->file($file->getPathname(), FILEINFO_MIME_ENCODING);
@@ -79,17 +79,18 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {
return true;
}
// Actions
- public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
- if ($mime_type === 'text/directory') {
- return Array(
- 'browse',
- );
- } elseif ($uri && (substr($uri, 0, 7) === 'ldap://')) {
+ protected function _isHandled(MediaBrotha_Media $media) {
+ return ($media->getMimeType() === 'text/directory')
+ || (substr($media->getURI(), 0, 7) === 'ldap://');
+ }
+
+ public function getMediaActions(MediaBrotha_Media $media) {
+ if ($this->_isHandled($media)) {
return Array(
'browse',
);
} else {
- return parent::getMediaActions($uri, $mime_type, $mime_encoding);
+ return parent::getMediaActions($media);
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
index addba42..9616be8 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
@@ -30,11 +30,18 @@ class MediaBrotha_Backend_Root extends MediaBrotha_Backend {
public function __construct($params = NULL) {
parent::__construct($params);
- $this->_media = new MediaBrotha_Media('MediaBrotha:///');
+ $this->_media = new MediaBrotha_Media('MediaBrotha:///',
+ Array(
+ 'display_name' => 'Root',
+ )
+ );
$this->_media_iterator = new MediaBrotha_MediaIterator($this, $this->_media);
}
- public function addRootMedia($media) {
+ public function addRootMedia($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {
+ $this->addRootMediaObj(new MediaBrotha_Media($URI, $metadata, $mime_type,$mime_encoding));
+ }
+ public function addRootMediaObj($media) {
$this->_media_iterator->bufferAdd($media);
}
@@ -42,13 +49,6 @@ class MediaBrotha_Backend_Root extends MediaBrotha_Backend {
public function fetch(MediaBrotha_Media $media) {
return $this->_media_iterator;
}
-
- // Actions
- public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
- return Array(
- );
- }
-
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
index 2b4e7c6..8c3208e 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
@@ -50,17 +50,13 @@ class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {
}
// Actions
- public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
- if (in_array($mime_type, Array($this::$_supported_mime_types))) {
- return Array(
- 'play_media',
- 'pause_media',
- 'stop_media',
- 'enqueue_media',
- 'next_media',
- 'previous_media',
- );
- } elseif ($uri && (substr($uri, 0, 7) === 'file://')) {
+ protected function _isHandled(MediaBrotha_Media $media) {
+ return in_array($media->getMimeType(), Array($this::$_supported_mime_types))
+ || (substr($media->getURI(), 0, 7) === 'file://');
+ }
+
+ public function getMediaActions(MediaBrotha_Media $media) {
+ if ($this->_isHandled($media)) {
return Array(
'play_media',
'pause_media',
@@ -70,7 +66,7 @@ class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {
'previous_media',
);
} else {
- return parent::getMediaActions($uri, $mime_type, $mime_encoding);
+ return parent::getMediaActions($media);
}
}
public function doMediaAction($action, MediaBrotha_Media $media) {
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Core.php b/sathieu/cisco-xml/lib/MediaBrotha/Core.php
index 5ec90e8..8997a7c 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Core.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Core.php
@@ -34,47 +34,17 @@ class MediaBrotha_Core {
private static $_backends = Array();
private static $_media = NULL;
+ /*
+ * Core
+ */
public static function init() {
if (!session_start()) {
die('Unable to start session');
}
- if (!isset($_SESSION['HASHES'])) {
- $_SESSION['HASHES'] = Array();
- }
- if (isset($_SERVER["QUERY_STRING"])) {
- $tmp = explode('&', $_SERVER["QUERY_STRING"]);
- foreach ($tmp as $h) {
- if (preg_match('/^[a-z0-9]+$/', $h)) {
- if ($s = MediaBrotha_Core::hash2string($h)) {
- parse_str($s, $output);
- $_GET = array_merge($_GET, $output);
- }
- }
- }
- }
+ MediaBrotha_Core::_unhashRequest();
MediaBrotha_Core::loadBackend('Root');
}
- public static function hash2string($h) {
- if (isset($_SESSION['HASHES'][$h])) {
- return $_SESSION['HASHES'][$h];
- } else {
- //print 'NO string for hash '.$h;
- return NULL;
- }
- }
-
- public static function string2hash($s) {
- for($hash_length = 1 ; $hash_length <=41 ; $hash_length++) {
- $h = substr(sha1($s), 0, $hash_length);
- if (!isset($_SESSION['HASHES'][$h]) || ($_SESSION['HASHES'][$h] === $s)) {
- break;
- }
- }
- $_SESSION['HASHES'][$h] = $s;
- return $h;
- }
-
public static function go() {
$current_backend = MediaBrotha_Core::getCurrentBackend();
$current_media = MediaBrotha_Core::getCurrentMedia();
@@ -82,7 +52,7 @@ class MediaBrotha_Core {
if ($media_iterator = $current_backend->fetch($current_media)) {
MediaBrotha_Core::$_frontend->begin($current_media);
foreach ($media_iterator as $item) {
- if ($item->isHidden()) {
+ if (($item === NULL) || $item->isHidden()) {
continue;
}
MediaBrotha_Core::$_frontend->addItem($item);
@@ -97,10 +67,9 @@ class MediaBrotha_Core {
}
public function addRootMedia($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {
- MediaBrotha_Core::$_backends['Root']->addRootMedia(
- new MediaBrotha_Media($URI, $metadata, $mime_type,$mime_encoding)
- );
+ MediaBrotha_Core::$_backends['Root']->addRootMedia($URI, $metadata, $mime_type, $mime_encoding);
}
+
/*
* Backends
*/
@@ -120,22 +89,7 @@ class MediaBrotha_Core {
public static function getBackends() {
return MediaBrotha_Core::$_backends;
}
- public static function getCurrentBackend() {
- if (!empty($_GET['backend']) && !empty(MediaBrotha_Core::$_backends[$_GET['backend']])) {
- return MediaBrotha_Core::$_backends[$_GET['backend']];
- }
- foreach (MediaBrotha_Core::getBackends() as $backend) {
- foreach ($backend->getMediaActions(MediaBrotha_Core::getCurrentURI()) as $action) {
- if ($backend->getBackendName() == 'Root') {
- continue;
- }
- if ($action === MediaBrotha_Core::getAction()) {
- return $backend;
- }
- }
- }
- return MediaBrotha_Core::$_backends['Root'];
- }
+
/*
* Frontend
*/
@@ -151,8 +105,26 @@ class MediaBrotha_Core {
MediaBrotha_Core::$_frontend = new $class_name($args);
}
/*
- * ...
+ * Current *
*/
+ public static function getCurrentBackend() {
+ if (!empty($_GET['backend']) && !empty(MediaBrotha_Core::$_backends[$_GET['backend']])) {
+ return MediaBrotha_Core::$_backends[$_GET['backend']];
+ }
+ $current_media = MediaBrotha_Core::getCurrentMedia();
+ foreach (MediaBrotha_Core::getBackends() as $backend) {
+ foreach ($backend->getMediaActions($current_media) as $action) {
+ if ($backend->getBackendName() == 'Root') {
+ continue;
+ }
+ if ($action === MediaBrotha_Core::getAction()) {
+ return $backend;
+ }
+ }
+ }
+ return MediaBrotha_Core::$_backends['Root'];
+ }
+
public static function getAction() {
if (!empty($_GET['action'])) {
return $_GET['action'];
@@ -161,17 +133,63 @@ class MediaBrotha_Core {
}
}
- public static function getCurrentURI() {
- if (!empty($_GET['uri'])) {
- return (string) $_GET['uri'];
- }
- }
public static function getCurrentMedia() {
if (empty(MediaBrotha_Core::$_media)) {
- MediaBrotha_Core::$_media = new MediaBrotha_Media(MediaBrotha_Core::getCurrentURI());
+ if (!empty($_GET['uri'])) {
+ MediaBrotha_Core::$_media = new MediaBrotha_Media($_GET['uri']);
+ } else {
+ MediaBrotha_Core::$_media = new MediaBrotha_Media('MediaBrotha:///');
+ }
+ foreach (MediaBrotha_Core::getBackends() as $backend) {
+ $backend->populateMedia(MediaBrotha_Core::$_media);
+ }
}
return MediaBrotha_Core::$_media;
}
+ /*
+ * helper functions
+ */
+ /* hashes */
+ public static function hash2value($h) {
+ if (isset($_SESSION['HASHES'][$h])) {
+ return $_SESSION['HASHES'][$h];
+ } else {
+ return NULL;
+ }
+ }
+
+ public static function value2hash($v) {
+ for($hash_length = 1 ; $hash_length <=41 ; $hash_length++) {
+ $h = substr(sha1($v), 0, $hash_length);
+ if (!isset($_SESSION['HASHES'][$h]) || ($_SESSION['HASHES'][$h] === $v)) {
+ break;
+ }
+ }
+ $_SESSION['HASHES'][$h] = $v;
+ return $h;
+ }
+
+ public static function hash2array($h) {
+ if ($v = MediaBrotha_Core::hash2value($h)) {
+ parse_str($v, $output);
+ return $output;
+ }
+ }
+
+ private static function _unhashRequest() {
+ if (!isset($_SESSION['HASHES'])) {
+ $_SESSION['HASHES'] = Array();
+ }
+ if (isset($_SERVER["QUERY_STRING"])) {
+ $tmp = explode('&', $_SERVER["QUERY_STRING"]);
+ foreach ($tmp as $h) {
+ if (preg_match('/^[a-z0-9]+$/', $h)) {
+ $_GET = array_merge($_GET, MediaBrotha_Core::hash2array($h));
+ }
+ }
+ }
+ }
+
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
index 2baa6af..914e6ee 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
@@ -30,12 +30,15 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {
private $_xml = NULL;
public function begin($item) {
$this->_xml = new CiscoIPPhoneMenu();
- $this->_xml->setCiscoElement('Title', $item->getDisplayName());
+ $this->_xml->setCiscoElement('Title', $item->getDisplayName(32));
$this->_xml->setCiscoElement('Prompt', substr($item->getURI(), -32));
+ if ($parent = $item->getParent()) {
+ $this->addItem($parent);
+ }
}
public function addItem($item) {
$url = $this->rootURL().'?'.
- MediaBrotha_Core::string2hash(
+ MediaBrotha_Core::value2hash(
'mime_type='.urlencode($item->getMimeType()).'&'.
($item->getMimeEncoding() ? ('mime_encoding='.urlencode($item->getMimeEncoding()).'&') : '').
'uri='.urlencode($item->getURI()));
@@ -49,10 +52,10 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {
'URL' => 'SoftKey:Select',
'Position' => $pos++));
foreach (MediaBrotha_Core::getBackends() as $backend) {
- foreach ($backend->getMediaActions(MediaBrotha_Core::getCurrentURI()) as $action) {
+ foreach ($backend->getMediaActions(MediaBrotha_Core::getCurrentMedia()) as $action) {
$this->_xml->setCiscoElement('SoftKeyItem',
Array('Name' => $action,
- 'URL' => 'QueryStringParam:'.MediaBrotha_Core::string2hash('action='.$action.'&backend='.$backend->getBackendName()),
+ 'URL' => 'QueryStringParam:'.MediaBrotha_Core::value2hash('action='.$action.'&backend='.$backend->getBackendName()),
'Position' => $pos++));
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Media.php b/sathieu/cisco-xml/lib/MediaBrotha/Media.php
index 6efd1db..7964473 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Media.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Media.php
@@ -25,14 +25,15 @@ This file is part of MediaBrotha.
*/
class MediaBrotha_Media {
- private $_metadata = Array();
-
private $_URI = NULL;
+ private $_metadata = Array();
private $_mimeType = NULL;
private $_mimeEncoding = NULL;
+ private $_parent = NULL;
+
public function __construct($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {
- $this->setURI($URI);
+ $this->_URI = $URI;
$this->setMetadata($metadata);
$this->setMimeType($mime_type);
$this->setMimeEncoding($mime_encoding);
@@ -42,16 +43,17 @@ class MediaBrotha_Media {
public function getURI() {
return $this->_URI;
}
- public function setURI($URI) {
- $this->_URI = $URI;
- }
/* metadata */
- public function getMetadata($name = NULL) {
+ public function getMetadata($name = NULL, $max_length = NULL) {
if ($name === NULL) {
return $this->_metadata;
} elseif (isset($this->_metadata[$name])) {
- return $this->_metadata[$name];
+ if ($max_length) {
+ return substr($this->_metadata[$name], 0, $max_length);
+ } else {
+ return $this->_metadata[$name];
+ }
} else {
return NULL;
}
@@ -60,6 +62,17 @@ class MediaBrotha_Media {
if (is_array($name)) {
$this->_metadata = $name;
} else {
+ switch($name) {
+ case 'hidden':
+ case 'display_name':
+ case 'Array':
+ //music
+ case 'artist':
+ case 'album':
+ break;
+ default:
+ print "Unusual metadata '$name'.\n";
+ }
$this->_metadata[$name] = $value;
}
@@ -81,10 +94,22 @@ class MediaBrotha_Media {
$this->_mimeEncoding = $mime_encoding;
}
+ /* parent */
+ public function getParent() {
+ return $this->_parent;
+ }
+ public function setParent($parent) {
+ $this->_parent = $parent;
+ }
+
/* Most used metadata */
- public function getDisplayName($max_length = 0) {
- if ($name = $this->getMetadata('name')) {
- return $name;
+ public function getDisplayName($max_length = NULL) {
+ if ($name = $this->getMetadata('display_name')) {
+ if ($max_length) {
+ return substr($name, 0, $max_length);
+ } else {
+ return $name;
+ }
} else {
return '?';
}
@@ -97,13 +122,3 @@ class MediaBrotha_Media {
}
}
-/*
-
-Mandatory metadata:
-uri
-name
-
-Usual metadata:
-artist
-album
-*/
committer: Mathieu Parent
comments:
MediaBrother: lot of changes
- Separate Backend from Iterator
- Reduce size of reply by using hashes in session
- ...
diff --git a/sathieu/cisco-xml/browser/index.php b/sathieu/cisco-xml/browser/index.php
index 1f0ae25..d142ff5 100644
--- a/sathieu/cisco-xml/browser/index.php
+++ b/sathieu/cisco-xml/browser/index.php
@@ -33,10 +33,26 @@ ini_set('include_path', ini_get('include_path').PATH_SEPARATOR.'../lib');
require('Cisco-XML/Cisco-XML.php');
require_once('MediaBrotha/Core.php');
+// Init
MediaBrotha_Core::init();
MediaBrotha_Core::connectFrontend('CiscoXML', Array('push_url' => 'http://cisco:cisco@192.168.0.220/CGI/Execute'));
+
+// Backends
MediaBrotha_Core::loadBackend('FileSystem', Array('base_path' => '/home/share/music/'));
MediaBrotha_Core::loadBackend('VLC', Array('http_intf' => 'http://127.0.0.1:8080'));
+$ldap_connect_config = Array(
+ 'host' => '127.0.0.1',
+ //'binddn' => 'cn=nobody,cn=internal,dc=example,dc=org',
+ //'bindpw' => 'not24get',
+ 'basedn' => 'dc=sathieu,dc=net',
+ 'filter' => '(objectClass=*)',
+ 'scope' => 'one',
+);
+MediaBrotha_Core::loadBackend('LDAP', Array('ldap_connect_config' => $ldap_connect_config));
+
+// Roots
+MediaBrotha_Core::addRootMedia('file:///home/share/music/', Array('name'=> 'Fichiers'));
+MediaBrotha_Core::addRootMedia('ldap:///', Array('name'=> 'Annuaire'));
MediaBrotha_Core::go();
diff --git a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
index 2253ca9..c711f9c 100644
--- a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
+++ b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
@@ -125,7 +125,10 @@ class CiscoXMLObject {
);
$context = stream_context_create($opts);
- return file_get_contents($url, false, $context);
+ $stream = fopen($url, 'r', false, $context);
+ if ($stream !== false) {
+ return stream_get_contents($stream);
+ }
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
index bb1fe8f..84a6a89 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
@@ -26,80 +26,56 @@ This file is part of MediaBrotha.
require_once('MediaBrotha/Media.php');
-class MediaBrotha_Backend extends MediaBrotha_Media implements Iterator {
- protected $_buffer = Array();
- public function __construct(array $args = Array()) {
- parent::__construct($args);
+class MediaBrotha_Backend {
+ protected $_params = NULL;
+
+ public function __construct($params = NULL) {
+ $this->setParam($params);
$this->register();
- $this->setMimeType('application/x-mediabrotha-backend-'.strtolower($this->getName()));
- MediaBrotha_Core::registerMimeType($this, 'application/x-mediabrotha-backend-'.strtolower($this->getName()));
- $this->setMetadata('name', $this->getName());
- $this->setMetadata('uri', 'MediaBrotha_Backend://'.$this->getName());
}
- public function register() {
- MediaBrotha_Core::registerBackend($this);
+ /* params */
+ public function getParam($name = NULL) {
+ if ($name === NULL) {
+ return $this->_params;
+ } elseif (isset($this->_params[$name])) {
+ return $this->_params[$name];
+ } else {
+ return NULL;
+ }
}
+ public function setParam($name, $value = NULL) {
+ if (is_array($name)) {
+ $this->_params = $name;
+ } else {
+ $this->_params[$name] = $value;
- public function getName() {
- return preg_replace('/^MediaBrotha_Backend_(.*)$/', '$1', get_class($this));
+ }
}
- public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
- return Array();
+ public function register() {
+ MediaBrotha_Core::registerBackend($this);
}
- public function isHidden() {
- return parent::isHidden() || !in_array('browse', $this->capabilities());
+ public function getBackendName() {
+ return preg_replace('/^MediaBrotha_Backend_(.*)$/', '$1', get_class($this));
}
- // Capability browse
- protected function _mediaFromBufferItem($item) {
+ // Browsing
+ public function mediaFromBufferItem($item) {
return $item;
}
- public function fetch($uri) {
+ public function fetch(MediaBrotha_Media $media) {
return false;
}
- public function rewind() {
- $this->_buffer->rewind();
- }
-
- public function current() {
- return $this->_mediaFromBufferItem($this->_buffer->current());
- }
-
- public function key() {
- return $this->_buffer->key();
- }
-
- public function next() {
- return $this->_mediaFromBufferItem($this->_buffer->next());
- }
-
- public function valid() {
- return $this->_buffer->valid();
+ // Actions
+ public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
+ return Array();
}
- // Capability play
- public function play(MediaBrotha_Media $media) {
- return false;
- }
- public function pause() {
- return false;
- }
- public function stop() {
- return false;
- }
- // Capability playlist
- public function playlistEnqueue(MediaBrotha_Media $media) {
- return false;
- }
- public function playlistNext(MediaBrotha_Media $media) {
- return false;
- }
- public function playlistPrevious(MediaBrotha_Media $media) {
+ public function doMediaAction($action, MediaBrotha_Media $media) {
return false;
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
index 0dc8972..39928b4 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
@@ -25,14 +25,10 @@ This file is part of MediaBrotha.
*/
class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {
- public function register() {
- parent::register();
- MediaBrotha_Core::registerMimeType($this, 'application/x-directory');
- }
-
+ // Helper functions
public function isURISafe($uri) {
$real_path = realpath(parse_url($uri, PHP_URL_PATH));
- $real_base_path = realpath($this->getMetadata('base_path'));
+ $real_base_path = realpath($this->getParam('base_path'));
do {
if ($real_path === $real_base_path) {
return true;
@@ -41,19 +37,16 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {
return false;
}
- public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
- return Array(
- 'browse',
- );
- }
- // Capability browse
- protected function _mediaFromBufferItem($file) {
+ // Browsing
+ public function mediaFromBufferItem($file) {
if ($file) {
- $media = new MediaBrotha_Media(Array(
- 'uri' => 'file://'.realpath($file->getPathname()),
- 'name' => $file->getFilename(),
- 'hidden' => !$file->isReadable() || preg_match('/^\.([^.]|$)/', $file->getFilename()),
- ));
+ $media = new MediaBrotha_Media(
+ 'file://'.realpath($file->getPathname()),
+ Array(
+ 'name' => $file->getFilename(),
+ 'hidden' => !$file->isReadable() || preg_match('/^\.([^.]|$)/', $file->getFilename()),
+ )
+ );
if ($file->isDir()) {
$media->setMimeType('application/x-directory');
} else {
@@ -65,12 +58,34 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {
}
}
- public function fetch($uri) {
+ public function fetch(MediaBrotha_Media $media) {
+ $uri =$media->getURI();
if ((parse_url($uri, PHP_URL_SCHEME) != 'file') || !$this->isURISafe($uri)) {
$uri = 'file://'.$this->getMetadata('base_path');
}
- $this->_buffer = new DirectoryIterator(parse_url($uri, PHP_URL_PATH));
- return true;
+ $path = parse_url($uri, PHP_URL_PATH);
+ if (is_dir($path)) {
+ return new MediaBrotha_MediaIterator($this, $media, new DirectoryIterator($path));
+ } else {
+ $this->setURI(NULL);
+ return false;
+ }
}
+
+ // Actions
+ public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
+ if ($mime_type === 'application/x-directory') {
+ return Array(
+ 'browse',
+ );
+ } elseif ($uri && (substr($uri, 0, 7) === 'file://')) {
+ return Array(
+ 'browse',
+ );
+ } else {
+ return parent::getMediaActions($uri, $mime_type, $mime_encoding);
+ }
+ }
+
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
index d275ff1..c882dd7 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
@@ -29,27 +29,16 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {
private $_ldap;
public function __construct(array $args = Array()) {
parent::__construct($args);
- $this->_ldap = Net_LDAP2::connect($this->getMetadata('ldap_connect_config'));
+ $this->_ldap = Net_LDAP2::connect($this->getParam('ldap_connect_config'));
if (Net_LDAP2::isError($this->_ldap)) {
die('Could not fetch entry: '.$this->_ldap->getMessage());
}
}
- public function register() {
- parent::register();
- MediaBrotha_Core::registerMimeType($this, 'text/directory');
- }
-
- public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
- return Array(
- 'browse',
- );
- }
-
+ // Helper functions
public function isURISafe($uri) {
return true;
}
-
-
+
public static function parseLDAPURI($uri, $component = NULL) {
$uri = preg_replace('@^ldap:///@', 'ldap://fake_host/', $uri);
$components = parse_url($uri, $component);
@@ -59,30 +48,50 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {
return $components;
}
- // Capability browse
- public function fetch($uri) {
+ // Browsing
+ public function mediaFromBufferItem($entry) {
+ if ($entry) {
+ $media = new MediaBrotha_Media(
+ 'ldap:///'.$entry->dn(),
+ Array(
+ 'name' => $entry->dn(), //$entry->getValue('sn', 'single'),
+ ),
+ 'text/directory'
+ //$finfo->file($file->getPathname(), FILEINFO_MIME_ENCODING);
+ );
+ return $media;
+ }
+ }
+
+ public function fetch(MediaBrotha_Media $media) {
+ $uri = $media->getURI();
if (($this::parseLDAPURI($uri, PHP_URL_SCHEME) != 'ldap') || !$this->isURISafe($uri)) {
- $ldap_connect_config = $this->getMetadata('ldap_connect_config');
+ $ldap_connect_config = $this->getParam('ldap_connect_config');
$uri = 'ldap:///'.$ldap_connect_config['basedn'];
}
$basedn = $this::parseLDAPURI($uri, PHP_URL_PATH);
if ($basedn && ($basedn{0} = '/')) {
- $basedn = substr($basedn, 1);
+ $basedn = substr($basedn, 1);
}
- $this->_buffer = $this->_ldap->search($basedn, NULL,
+ $ldap_search = $this->_ldap->search($basedn, NULL,
Array());
+ return new MediaBrotha_MediaIterator($this, $media, $ldap_search);
return true;
}
- protected function _mediaFromBufferItem($entry) {
- if ($entry) {
- $media = new MediaBrotha_Media(Array(
- 'uri' => 'ldap:///'.$entry->dn(),
- 'name' => $entry->dn(), //$entry->getValue('sn', 'single'),
- ));
- $media->setMimeType('text/directory');
- // $media->setMimeEncoding($finfo->file($file->getPathname(), FILEINFO_MIME_ENCODING));
- return $media;
+ // Actions
+ public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
+ if ($mime_type === 'text/directory') {
+ return Array(
+ 'browse',
+ );
+ } elseif ($uri && (substr($uri, 0, 7) === 'ldap://')) {
+ return Array(
+ 'browse',
+ );
+ } else {
+ return parent::getMediaActions($uri, $mime_type, $mime_encoding);
}
}
+
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
index 5357cc3..addba42 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
@@ -25,22 +25,28 @@ This file is part of MediaBrotha.
*/
class MediaBrotha_Backend_Root extends MediaBrotha_Backend {
- public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
- return Array(
- 'browse',
- );
+ private $_media = NULL;
+ private $_media_iterator = NULL;
+
+ public function __construct($params = NULL) {
+ parent::__construct($params);
+ $this->_media = new MediaBrotha_Media('MediaBrotha:///');
+ $this->_media_iterator = new MediaBrotha_MediaIterator($this, $this->_media);
+ }
+
+ public function addRootMedia($media) {
+ $this->_media_iterator->bufferAdd($media);
}
- public function isHidden() {
- return true;
+
+ // Browsing
+ public function fetch(MediaBrotha_Media $media) {
+ return $this->_media_iterator;
}
- // Capability browse
- public function fetch($uri) {
- $this->_buffer = new ArrayIterator();
- foreach(MediaBrotha_Core::getBackends() as $id => $backend) {
- $this->_buffer[] = $backend;
- }
- return true;
+ // Actions
+ public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
+ return Array(
+ );
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
index df10f93..2b4e7c6 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
@@ -25,20 +25,14 @@ This file is part of MediaBrotha.
*/
class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {
- public function register() {
- parent::register();
- MediaBrotha_Core::registerMimeType($this, 'audio/mpeg');
- MediaBrotha_Core::registerMimeType($this, 'video/x-msvideo');
- }
+ static protected $_supported_mime_types = Array(
+ 'audio/mpeg',
+ 'video/x-msvideo',
+ );
- public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
- return Array(
- 'play',
- 'playlist',
- );
- }
+ // Helper functions
private function send_command($command, array $args = Array()) {
- $url = $this->getMetadata('http_intf').
+ $url = $this->getParam('http_intf').
'/requests/status.xml'.
'?command='.$command;
foreach ($args as $k => $v) {
@@ -49,31 +43,53 @@ class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {
print $output.'<!--'.$url."-->\n";
}
- // Capability browse
- public function fetch($uri) {
- $this->_buffer[] = new MediaBrotha_Media();
+ // Browsing
+ public function fetch(MediaBrotha_Media $media) {
+ $this->_buffer[] = $media;
return true;
}
- // Capability play
- public function play(MediaBrotha_Media $media) {
- return $this->send_command('in_play', Array('input' => $media->getURI()));
- }
- public function pause() {
- return $this->send_command('pl_pause');
- }
- public function stop() {
- return $this->send_command('pl_stop');
- }
- // Capability playlist
- public function playlistEnqueue(MediaBrotha_Media $media) {
- return $this->send_command('in_enqueue', Array('input' => $media->getURI()));
- }
- public function playlistNext(MediaBrotha_Media $media) {
- return $this->send_command('pl_next');
+ // Actions
+ public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
+ if (in_array($mime_type, Array($this::$_supported_mime_types))) {
+ return Array(
+ 'play_media',
+ 'pause_media',
+ 'stop_media',
+ 'enqueue_media',
+ 'next_media',
+ 'previous_media',
+ );
+ } elseif ($uri && (substr($uri, 0, 7) === 'file://')) {
+ return Array(
+ 'play_media',
+ 'pause_media',
+ 'stop_media',
+ 'enqueue_media',
+ 'next_media',
+ 'previous_media',
+ );
+ } else {
+ return parent::getMediaActions($uri, $mime_type, $mime_encoding);
+ }
}
- public function playlistPrevious(MediaBrotha_Media $media) {
- return $this->send_command('pl_previous');
+ public function doMediaAction($action, MediaBrotha_Media $media) {
+ switch($action) {
+ case 'play_media':
+ return $this->send_command('in_play', Array('input' => $media->getURI()));
+ case 'pause_media':
+ return $this->send_command('pl_pause');
+ case 'stop_media':
+ return $this->send_command('pl_stop');
+ case 'enqueue_media':
+ return $this->send_command('in_enqueue', Array('input' => $media->getURI()));
+ case 'next_media':
+ return $this->send_command('pl_next');
+ case 'previous_media':
+ return $this->send_command('pl_previous');
+ default:
+ return parent::doMediaAction($action, $media);
+ }
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Core.php b/sathieu/cisco-xml/lib/MediaBrotha/Core.php
index b3eaa84..5ec90e8 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Core.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Core.php
@@ -27,53 +27,80 @@ This file is part of MediaBrotha.
require_once('MediaBrotha/Backend.php');
require_once('MediaBrotha/Frontend.php');
require_once('MediaBrotha/Media.php');
+require_once('MediaBrotha/MediaIterator.php');
class MediaBrotha_Core {
private static $_frontend = NULL;
private static $_backends = Array();
- private static $_mime_types = Array();
private static $_media = NULL;
public static function init() {
+ if (!session_start()) {
+ die('Unable to start session');
+ }
+ if (!isset($_SESSION['HASHES'])) {
+ $_SESSION['HASHES'] = Array();
+ }
+ if (isset($_SERVER["QUERY_STRING"])) {
+ $tmp = explode('&', $_SERVER["QUERY_STRING"]);
+ foreach ($tmp as $h) {
+ if (preg_match('/^[a-z0-9]+$/', $h)) {
+ if ($s = MediaBrotha_Core::hash2string($h)) {
+ parse_str($s, $output);
+ $_GET = array_merge($_GET, $output);
+ }
+ }
+ }
+ }
MediaBrotha_Core::loadBackend('Root');
}
+
+ public static function hash2string($h) {
+ if (isset($_SESSION['HASHES'][$h])) {
+ return $_SESSION['HASHES'][$h];
+ } else {
+ //print 'NO string for hash '.$h;
+ return NULL;
+ }
+ }
+
+ public static function string2hash($s) {
+ for($hash_length = 1 ; $hash_length <=41 ; $hash_length++) {
+ $h = substr(sha1($s), 0, $hash_length);
+ if (!isset($_SESSION['HASHES'][$h]) || ($_SESSION['HASHES'][$h] === $s)) {
+ break;
+ }
+ }
+ $_SESSION['HASHES'][$h] = $s;
+ return $h;
+ }
+
public static function go() {
$current_backend = MediaBrotha_Core::getCurrentBackend();
- switch(MediaBrotha_Core::getAction()) {
- case 'play':
- $current_backend->play(MediaBrotha_Core::getCurrentMedia());
- break;
- case 'pause':
- $current_backend->pause(MediaBrotha_Core::getCurrentMedia());
- break;
- case 'stop':
- $current_backend->stop(MediaBrotha_Core::getCurrentMedia());
- break;
- case 'pl_enqueue':
- $current_backend->playlistEnqueue(MediaBrotha_Core::getCurrentMedia());
- break;
- case 'pl_next':
- $current_backend->playlistNext(MediaBrotha_Core::getCurrentMedia());
- break;
- case 'pl_previous':
- $current_backend->playlistPrevious(MediaBrotha_Core::getCurrentMedia());
- break;
- case 'browse':
- default:
- $current_uri = MediaBrotha_Core::getCurrentURI();
- $current_backend->fetch((string) $current_uri);
- MediaBrotha_Core::$_frontend->begin($current_backend);
- foreach($current_backend as $item) {
+ $current_media = MediaBrotha_Core::getCurrentMedia();
+ if (MediaBrotha_Core::getAction() == 'browse') {
+ if ($media_iterator = $current_backend->fetch($current_media)) {
+ MediaBrotha_Core::$_frontend->begin($current_media);
+ foreach ($media_iterator as $item) {
if ($item->isHidden()) {
continue;
}
MediaBrotha_Core::$_frontend->addItem($item);
}
- MediaBrotha_Core::$_frontend->finish($current_backend);
- MediaBrotha_Core::$_frontend->render();
+ MediaBrotha_Core::$_frontend->finish($current_media);
+ MediaBrotha_Core::$_frontend->render($current_media);
+ } else {
+ }
+ } else {
+ $current_backend->doMediaAction(MediaBrotha_Core::getAction(), $current_media);
}
}
+ public function addRootMedia($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {
+ MediaBrotha_Core::$_backends['Root']->addRootMedia(
+ new MediaBrotha_Media($URI, $metadata, $mime_type,$mime_encoding)
+ );
+ }
/*
* Backends
*/
@@ -85,20 +112,29 @@ class MediaBrotha_Core {
return new $class_name($args);
}
public static function registerBackend($backend) {
- MediaBrotha_Core::$_backends[] = $backend;
+ MediaBrotha_Core::$_backends[$backend->getBackendName()] = $backend;
}
- public static function registerMimeType($backend, $mime_type) {
- MediaBrotha_Core::$_mime_types[$mime_type][] = $backend;
+ public static function getBackend($name) {
+ return MediaBrotha_Core::$_backends[$name];
}
public static function getBackends() {
return MediaBrotha_Core::$_backends;
}
public static function getCurrentBackend() {
- if (!empty($_GET['mime_type']) && !empty(MediaBrotha_Core::$_mime_types[$_GET['mime_type']])) {
- return MediaBrotha_Core::$_mime_types[$_GET['mime_type']][0];
- } else {
- return MediaBrotha_Core::$_backends[0];
+ if (!empty($_GET['backend']) && !empty(MediaBrotha_Core::$_backends[$_GET['backend']])) {
+ return MediaBrotha_Core::$_backends[$_GET['backend']];
+ }
+ foreach (MediaBrotha_Core::getBackends() as $backend) {
+ foreach ($backend->getMediaActions(MediaBrotha_Core::getCurrentURI()) as $action) {
+ if ($backend->getBackendName() == 'Root') {
+ continue;
+ }
+ if ($action === MediaBrotha_Core::getAction()) {
+ return $backend;
+ }
+ }
}
+ return MediaBrotha_Core::$_backends['Root'];
}
/*
* Frontend
@@ -132,8 +168,7 @@ class MediaBrotha_Core {
}
public static function getCurrentMedia() {
if (empty(MediaBrotha_Core::$_media)) {
- MediaBrotha_Core::$_media = new MediaBrotha_Media();
- MediaBrotha_Core::$_media->setURI(MediaBrotha_Core::getCurrentURI());
+ MediaBrotha_Core::$_media = new MediaBrotha_Media(MediaBrotha_Core::getCurrentURI());
}
return MediaBrotha_Core::$_media;
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
index 84ce7b7..2cc6060 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
@@ -26,9 +26,9 @@ This file is part of MediaBrotha.
class MediaBrotha_Frontend {
protected $_infos = NULL;
+
public function __construct(array $args = Array()) {
$this->_infos = $args;
}
}
-
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
index ce2f711..2baa6af 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
@@ -24,44 +24,48 @@ This file is part of MediaBrotha.
* @author Mathieu Parent
*/
-class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend {
+require_once('HTTP.php');
+
+class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {
private $_xml = NULL;
public function begin($item) {
$this->_xml = new CiscoIPPhoneMenu();
$this->_xml->setCiscoElement('Title', $item->getDisplayName());
- //$this->_xml->setCiscoElement('Prompt', 'kk');
+ $this->_xml->setCiscoElement('Prompt', substr($item->getURI(), -32));
}
public function addItem($item) {
- $url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'?'.
- 'mime_type='.urlencode($item->getMimeType()).'&'.
- ($item->getMimeEncoding() ? ('mime_encoding='.urlencode($item->getMimeEncoding()).'&') : '').
- 'uri='.urlencode($item->getURI());
- //$url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'];
+ $url = $this->rootURL().'?'.
+ MediaBrotha_Core::string2hash(
+ 'mime_type='.urlencode($item->getMimeType()).'&'.
+ ($item->getMimeEncoding() ? ('mime_encoding='.urlencode($item->getMimeEncoding()).'&') : '').
+ 'uri='.urlencode($item->getURI()));
$this->_xml->setCiscoElement('MenuItem',
Array('Name' => $item->getDisplayName(), 'URL' => $url));
}
- public function finish() {
- $this->_xml->setCiscoElement('SoftKeyItem',
- Array('Name' => 'Select', 'URL' => 'SoftKey:Select', 'Position' => '1'));
- $this->_xml->setCiscoElement('SoftKeyItem',
- Array('Name' => 'Play', 'URL' => 'QueryStringParam:action=play', 'Position' => '2'));
- $this->_xml->setCiscoElement('SoftKeyItem',
- Array('Name' => 'Pause', 'URL' => 'QueryStringParam:action=pause', 'Position' => '3'));
- $this->_xml->setCiscoElement('SoftKeyItem',
- Array('Name' => 'Stop', 'URL' => 'QueryStringParam:action=stop', 'Position' => '4'));
- $this->_xml->setCiscoElement('SoftKeyItem',
- Array('Name' => 'Enqueue', 'URL' => 'QueryStringParam:action=pl_enqueue', 'Position' => '5'));
- $this->_xml->setCiscoElement('SoftKeyItem',
- Array('Name' => 'Next', 'URL' => 'QueryStringParam:action=pl_next', 'Position' => '6'));
- $this->_xml->setCiscoElement('SoftKeyItem',
- Array('Name' => 'Previous', 'URL' => 'QueryStringParam:action=pl_previous', 'Position' => '7'));
+ public function finish($item) {
+ $pos = 1;
$this->_xml->setCiscoElement('SoftKeyItem',
- Array('Name' => 'Quit', 'URL' => 'SoftKey:Exit', 'Position' => '8'));
+ Array('Name' => 'Select',
+ 'URL' => 'SoftKey:Select',
+ 'Position' => $pos++));
+ foreach (MediaBrotha_Core::getBackends() as $backend) {
+ foreach ($backend->getMediaActions(MediaBrotha_Core::getCurrentURI()) as $action) {
+ $this->_xml->setCiscoElement('SoftKeyItem',
+ Array('Name' => $action,
+ 'URL' => 'QueryStringParam:'.MediaBrotha_Core::string2hash('action='.$action.'&backend='.$backend->getBackendName()),
+ 'Position' => $pos++));
+ }
+ }
}
public function render() {
- CiscoXMLObject::HttpHeader();
- print $this->_xml;
- //$this->_xml->execute($this->_infos['push_url']);
+ if (true) {
+ CiscoXMLObject::HttpHeader();
+ print $this->_xml;
+ //print "\n<!--".strlen($this->_xml).'-->';
+ } else {
+ print strlen($this->_xml)."\n";
+ print $this->_xml->execute($this->_infos['push_url']);
+ }
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php
similarity index 77%
copy from sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
copy to sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php
index 84ce7b7..de19bf7 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php
@@ -24,11 +24,10 @@ This file is part of MediaBrotha.
* @author Mathieu Parent
*/
-class MediaBrotha_Frontend {
- protected $_infos = NULL;
- public function __construct(array $args = Array()) {
- $this->_infos = $args;
+class MediaBrotha_Frontend_HTTP extends MediaBrotha_Frontend {
+ public function rootURL() {
+ $url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'];
+ $url = preg_replace('/index\.php$/', '', $url);
+ return $url;
}
}
-
-
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Media.php b/sathieu/cisco-xml/lib/MediaBrotha/Media.php
index cf3d66d..6efd1db 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Media.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Media.php
@@ -26,25 +26,27 @@ This file is part of MediaBrotha.
class MediaBrotha_Media {
private $_metadata = Array();
+
+ private $_URI = NULL;
private $_mimeType = NULL;
private $_mimeEncoding = NULL;
- public function __construct(array $metadata = Array()) {
- $this->_metadata = $metadata;
- }
- public function setMimeType($mime_type) {
- $this->_mimeType = $mime_type;
- }
- public function getMimeType() {
- // TODO
- return $this->_mimeType;
+
+ public function __construct($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {
+ $this->setURI($URI);
+ $this->setMetadata($metadata);
+ $this->setMimeType($mime_type);
+ $this->setMimeEncoding($mime_encoding);
}
- public function setMimeEncoding($mime_encoding) {
- $this->_mimeEncoding = $mime_encoding;
+
+ /* URI */
+ public function getURI() {
+ return $this->_URI;
}
- public function getMimeEncoding() {
- // TODO
- return $this->_mimeEncoding;
+ public function setURI($URI) {
+ $this->_URI = $URI;
}
+
+ /* metadata */
public function getMetadata($name = NULL) {
if ($name === NULL) {
return $this->_metadata;
@@ -54,7 +56,7 @@ class MediaBrotha_Media {
return NULL;
}
}
- public function setMetadata($name, $value) {
+ public function setMetadata($name, $value = NULL) {
if (is_array($name)) {
$this->_metadata = $name;
} else {
@@ -62,21 +64,36 @@ class MediaBrotha_Media {
}
}
- /* Most used metadata */
- public function getDisplayName($max_length = 0) {
- return $this->getMetadata('name');
+
+ /* mimeType */
+ public function getMimeType() {
+ return $this->_mimeType;
}
- public function getURI() {
- return $this->getMetadata('uri');
+ public function setMimeType($mime_type) {
+ $this->_mimeType = $mime_type;
+ }
+
+ /* mimeEncoding */
+ public function getMimeEncoding() {
+ return $this->_mimeEncoding;
}
- public function setURI($value) {
- return $this->setMetadata('uri', $value);
+ public function setMimeEncoding($mime_encoding) {
+ $this->_mimeEncoding = $mime_encoding;
+ }
+
+ /* Most used metadata */
+ public function getDisplayName($max_length = 0) {
+ if ($name = $this->getMetadata('name')) {
+ return $name;
+ } else {
+ return '?';
+ }
}
public function getURIComponent($component) {
return parse_url($this->getURI($component));
}
public function isHidden() {
- return isset($this->_metadata['hidden']) && $this->_metadata['hidden'];
+ return (bool) $this->getMetadata('hidden');
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php b/sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php
new file mode 100644
index 0000000..096759a
--- /dev/null
+++ b/sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php
@@ -0,0 +1,71 @@
+<?php
+/*
+Copyright 2011 Mathieu Parent <math.parent@gmail.com>
+
+This file is part of MediaBrotha.
+
+ MediaBrotha 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.
+
+ MediaBrotha 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 MediaBrotha. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+/**
+ * @author Mathieu Parent
+ */
+
+require_once('MediaBrotha/Media.php');
+
+class MediaBrotha_MediaIterator implements Iterator {
+ private $_backend = NULL;
+ private $_media = NULL;
+ private $_handle = NULL;
+ protected $_buffer = NULL;
+
+ public function __construct(MediaBrotha_Backend $backend, MediaBrotha_Media $media, $buffer = NULL) {
+ $this->_backend = $backend;
+ $this->_media = $media;
+ if ($buffer) {
+ $this->_buffer = $buffer;
+ } else {
+ $this->_buffer = new ArrayIterator();
+ }
+ }
+
+ /* buffer */
+ public function bufferAdd($media) {
+ $this->_buffer[] = $media;
+ }
+
+ /* iterator */
+ public function rewind() {
+ $this->_buffer->rewind();
+ }
+
+ public function current() {
+ return $this->_backend->mediaFromBufferItem($this->_buffer->current());
+ }
+
+ public function key() {
+ return $this->_buffer->key();
+ }
+
+ public function next() {
+ return $this->_backend->mediaFromBufferItem($this->_buffer->next());
+ }
+
+ public function valid() {
+ return $this->_buffer->valid();
+ }
+}
+
committer: Mathieu Parent
comments:
MediaBrotha: adding LDAP backend
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
new file mode 100644
index 0000000..d275ff1
--- /dev/null
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
@@ -0,0 +1,88 @@
+<?php
+/*
+Copyright 2011 Mathieu Parent <math.parent@gmail.com>
+
+This file is part of MediaBrotha.
+
+ MediaBrotha 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.
+
+ MediaBrotha 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 MediaBrotha. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+require_once('Net/LDAP2.php');
+/**
+ * @author Mathieu Parent
+ */
+
+class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {
+ private $_ldap;
+ public function __construct(array $args = Array()) {
+ parent::__construct($args);
+ $this->_ldap = Net_LDAP2::connect($this->getMetadata('ldap_connect_config'));
+ if (Net_LDAP2::isError($this->_ldap)) {
+ die('Could not fetch entry: '.$this->_ldap->getMessage());
+ }
+ }
+ public function register() {
+ parent::register();
+ MediaBrotha_Core::registerMimeType($this, 'text/directory');
+ }
+
+ public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
+ return Array(
+ 'browse',
+ );
+ }
+
+ public function isURISafe($uri) {
+ return true;
+ }
+
+
+ public static function parseLDAPURI($uri, $component = NULL) {
+ $uri = preg_replace('@^ldap:///@', 'ldap://fake_host/', $uri);
+ $components = parse_url($uri, $component);
+ if (is_array($components) && ($components['host'] === 'fake_host')) {
+ $components['host'] = NULL;
+ }
+ return $components;
+ }
+
+ // Capability browse
+ public function fetch($uri) {
+ if (($this::parseLDAPURI($uri, PHP_URL_SCHEME) != 'ldap') || !$this->isURISafe($uri)) {
+ $ldap_connect_config = $this->getMetadata('ldap_connect_config');
+ $uri = 'ldap:///'.$ldap_connect_config['basedn'];
+ }
+ $basedn = $this::parseLDAPURI($uri, PHP_URL_PATH);
+ if ($basedn && ($basedn{0} = '/')) {
+ $basedn = substr($basedn, 1);
+ }
+ $this->_buffer = $this->_ldap->search($basedn, NULL,
+ Array());
+ return true;
+ }
+ protected function _mediaFromBufferItem($entry) {
+ if ($entry) {
+ $media = new MediaBrotha_Media(Array(
+ 'uri' => 'ldap:///'.$entry->dn(),
+ 'name' => $entry->dn(), //$entry->getValue('sn', 'single'),
+ ));
+ $media->setMimeType('text/directory');
+ // $media->setMimeEncoding($finfo->file($file->getPathname(), FILEINFO_MIME_ENCODING));
+ return $media;
+ }
+ }
+}
+
committer: Mathieu Parent
comments:
MediaBrotha: Rewrite backend logic a bit
And:
- use type hinting
- MediaBrotha_Backend::_buffer is an Iterator
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
index f85001b..bb1fe8f 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
@@ -28,7 +28,7 @@ require_once('MediaBrotha/Media.php');
class MediaBrotha_Backend extends MediaBrotha_Media implements Iterator {
protected $_buffer = Array();
- public function __construct($args = Array()) {
+ public function __construct(array $args = Array()) {
parent::__construct($args);
$this->register();
$this->setMimeType('application/x-mediabrotha-backend-'.strtolower($this->getName()));
@@ -54,34 +54,36 @@ class MediaBrotha_Backend extends MediaBrotha_Media implements Iterator {
}
// Capability browse
+ protected function _mediaFromBufferItem($item) {
+ return $item;
+ }
+
public function fetch($uri) {
return false;
}
public function rewind() {
- reset($this->_buffer);
+ $this->_buffer->rewind();
}
public function current() {
- return current($this->_buffer);
+ return $this->_mediaFromBufferItem($this->_buffer->current());
}
public function key() {
- return key($this->_buffer);
+ return $this->_buffer->key();
}
public function next() {
- return next($this->_buffer);
+ return $this->_mediaFromBufferItem($this->_buffer->next());
}
public function valid() {
- $key = key($this->_buffer);
- $var = ($key !== NULL && $key !== FALSE);
- return $var;
+ return $this->_buffer->valid();
}
// Capability play
- public function play($media) {
+ public function play(MediaBrotha_Media $media) {
return false;
}
public function pause() {
@@ -91,13 +93,13 @@ class MediaBrotha_Backend extends MediaBrotha_Media implements Iterator {
return false;
}
// Capability playlist
- public function playlistEnqueue($media) {
+ public function playlistEnqueue(MediaBrotha_Media $media) {
return false;
}
- public function playlistNext($media) {
+ public function playlistNext(MediaBrotha_Media $media) {
return false;
}
- public function playlistPrevious($media) {
+ public function playlistPrevious(MediaBrotha_Media $media) {
return false;
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
index 62fcb6f..0dc8972 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
@@ -41,20 +41,13 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {
return false;
}
- public function fetch($uri) {
- if ((parse_url($uri, PHP_URL_SCHEME) != 'file') || !$this->isURISafe($uri)) {
- $uri = 'file://'.$this->getMetadata('base_path');
- }
- $this->_buffer = new DirectoryIterator(parse_url($uri, PHP_URL_PATH));
- return true;
- }
public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
return Array(
'browse',
);
}
- // Iterator
- public function mediaFromFile($file) {
+ // Capability browse
+ protected function _mediaFromBufferItem($file) {
if ($file) {
$media = new MediaBrotha_Media(Array(
'uri' => 'file://'.realpath($file->getPathname()),
@@ -72,16 +65,12 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {
}
}
- public function current() {
- return $this->mediaFromFile($this->_buffer->current());
- }
-
- public function next() {
- return $this->mediaFromFile($this->_buffer->next());
- }
-
- public function valid() {
- return $this->_buffer->valid();
+ public function fetch($uri) {
+ if ((parse_url($uri, PHP_URL_SCHEME) != 'file') || !$this->isURISafe($uri)) {
+ $uri = 'file://'.$this->getMetadata('base_path');
+ }
+ $this->_buffer = new DirectoryIterator(parse_url($uri, PHP_URL_PATH));
+ return true;
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
index 5e9c5fb..5357cc3 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
@@ -25,13 +25,6 @@ This file is part of MediaBrotha.
*/
class MediaBrotha_Backend_Root extends MediaBrotha_Backend {
- public function fetch($uri) {
- $this->_buffer = Array();
- foreach(MediaBrotha_Core::getBackends() as $id => $backend) {
- $this->_buffer[] = $backend;
- }
- return true;
- }
public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
return Array(
'browse',
@@ -40,6 +33,16 @@ class MediaBrotha_Backend_Root extends MediaBrotha_Backend {
public function isHidden() {
return true;
}
+
+ // Capability browse
+ public function fetch($uri) {
+ $this->_buffer = new ArrayIterator();
+ foreach(MediaBrotha_Core::getBackends() as $id => $backend) {
+ $this->_buffer[] = $backend;
+ }
+ return true;
+ }
+
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
index 12cbff6..df10f93 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
@@ -31,28 +31,32 @@ class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {
MediaBrotha_Core::registerMimeType($this, 'video/x-msvideo');
}
- public function fetch($uri) {
- $this->_buffer[] = new MediaBrotha_Media();
- return true;
- }
public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
return Array(
'play',
'playlist',
);
}
- private function send_command($command, $args = Array()) {
+ private function send_command($command, array $args = Array()) {
$url = $this->getMetadata('http_intf').
'/requests/status.xml'.
'?command='.$command;
foreach ($args as $k => $v) {
$url.= '&'.$k.'='.rawurlencode($v);
}
- return fopen($url, 'r');
+ $output = file_get_contents($url);
+ Header('Content-Type: text/xml');
+ print $output.'<!--'.$url."-->\n";
+ }
+
+ // Capability browse
+ public function fetch($uri) {
+ $this->_buffer[] = new MediaBrotha_Media();
+ return true;
}
// Capability play
- public function play($media) {
+ public function play(MediaBrotha_Media $media) {
return $this->send_command('in_play', Array('input' => $media->getURI()));
}
public function pause() {
@@ -62,13 +66,13 @@ class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {
return $this->send_command('pl_stop');
}
// Capability playlist
- public function playlistEnqueue($media) {
+ public function playlistEnqueue(MediaBrotha_Media $media) {
return $this->send_command('in_enqueue', Array('input' => $media->getURI()));
}
- public function playlistNext($media) {
+ public function playlistNext(MediaBrotha_Media $media) {
return $this->send_command('pl_next');
}
- public function playlistPrevious($media) {
+ public function playlistPrevious(MediaBrotha_Media $media) {
return $this->send_command('pl_previous');
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Core.php b/sathieu/cisco-xml/lib/MediaBrotha/Core.php
index e31ee47..b3eaa84 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Core.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Core.php
@@ -60,7 +60,8 @@ class MediaBrotha_Core {
break;
case 'browse':
default:
- $current_backend->fetch(MediaBrotha_Core::getCurrentURI());
+ $current_uri = MediaBrotha_Core::getCurrentURI();
+ $current_backend->fetch((string) $current_uri);
MediaBrotha_Core::$_frontend->begin($current_backend);
foreach($current_backend as $item) {
if ($item->isHidden()) {
@@ -126,7 +127,7 @@ class MediaBrotha_Core {
public static function getCurrentURI() {
if (!empty($_GET['uri'])) {
- return $_GET['uri'];
+ return (string) $_GET['uri'];
}
}
public static function getCurrentMedia() {
@@ -136,5 +137,6 @@ class MediaBrotha_Core {
}
return MediaBrotha_Core::$_media;
}
+
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
index 9eab63c..84ce7b7 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
@@ -25,10 +25,8 @@ This file is part of MediaBrotha.
*/
class MediaBrotha_Frontend {
- protected $_browser = NULL;
protected $_infos = NULL;
- public function __construct($browser, $args = Array()) {
- $this->_browser = $browser;
+ public function __construct(array $args = Array()) {
$this->_infos = $args;
}
}
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Media.php b/sathieu/cisco-xml/lib/MediaBrotha/Media.php
index 0b50a52..cf3d66d 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Media.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Media.php
@@ -28,7 +28,7 @@ class MediaBrotha_Media {
private $_metadata = Array();
private $_mimeType = NULL;
private $_mimeEncoding = NULL;
- public function __construct($metadata = Array()) {
+ public function __construct(array $metadata = Array()) {
$this->_metadata = $metadata;
}
public function setMimeType($mime_type) {
@@ -63,7 +63,7 @@ class MediaBrotha_Media {
}
}
/* Most used metadata */
- public function getDisplayName() {
+ public function getDisplayName($max_length = 0) {
return $this->getMetadata('name');
}
public function getURI() {
committer: Mitch Capper
comments:
Merge branch 'master' of ssh://git.freeswitch.org/freeswitch-contrib
committer: Mitch Capper
comments:
Added auto jitterbuffer to sofia settings
diff --git a/mitchcapper/FSClient/Sofia.cs b/mitchcapper/FSClient/Sofia.cs
index f33d963..0a5d2c7 100644
--- a/mitchcapper/FSClient/Sofia.cs
+++ b/mitchcapper/FSClient/Sofia.cs
@@ -57,6 +57,7 @@ namespace FSClient {
new Field(Field.FIELD_TYPE.Int,"SIP Port","sip-port","sip-port","12346","Advanced"),
new Field(Field.FIELD_TYPE.Int,"DTMF Duration","dtmf-duration","dtmf-duration","2000","Advanced"),
new Field(Field.FIELD_TYPE.Bool,"STUN Enabled","stun-enabled","stun-enabled","true","Advanced"),
+ new Field(Field.FIELD_TYPE.Int,"Jitter Buffer","auto-jitterbuffer-msec","auto-jitterbuffer-msec","60","Advanced"),
/*Advanced Less Important*/
new Field(Field.FIELD_TYPE.Int,"Max Proceeding","max-proceeding","max-proceeding","3","Advanced"),
committer: Jeff Lenk
comments:
FSClient remove redundant setup
diff --git a/mitchcapper/FSClient/Setup/Setup.wixproj b/mitchcapper/FSClient/Setup/Setup.wixproj
index acfcb35..acc41b5 100644
--- a/mitchcapper/FSClient/Setup/Setup.wixproj
+++ b/mitchcapper/FSClient/Setup/Setup.wixproj
@@ -101,6 +101,6 @@
</Target>
-->
<Target Name="AfterBuild">
- <GenerateBootstrapper ApplicationFile="$(TargetFileName)" ApplicationName="FSClient Setup" BootstrapperItems="@(BootstrapperFile)" ComponentsLocation="HomeSite" CopyComponents="True" OutputPath="$(OutputPath)" Path="C:\Program Files (X86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\" />
+ <GenerateBootstrapper ApplicationFile="$(TargetFileName)" ApplicationName="FSClient" BootstrapperItems="@(BootstrapperFile)" ComponentsLocation="HomeSite" CopyComponents="True" OutputPath="$(OutputPath)" Path="C:\Program Files (X86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\" />
</Target>
</Project>
\ No newline at end of file
committer: Mathieu Parent
comments:
Cisco-XML: add ms-video support for VLC
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
index 03f5360..12cbff6 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
@@ -28,6 +28,7 @@ class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {
public function register() {
parent::register();
MediaBrotha_Core::registerMimeType($this, 'audio/mpeg');
+ MediaBrotha_Core::registerMimeType($this, 'video/x-msvideo');
}
public function fetch($uri) {
committer: Mathieu Parent
comments:
Cisco-XML: correct typos
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
index a0a9078..ce2f711 100644
--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
@@ -52,9 +52,9 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend {
$this->_xml->setCiscoElement('SoftKeyItem',
Array('Name' => 'Enqueue', 'URL' => 'QueryStringParam:action=pl_enqueue', 'Position' => '5'));
$this->_xml->setCiscoElement('SoftKeyItem',
- Array('Name' => 'Enqueue', 'URL' => 'QueryStringParam:action=pl_next', 'Position' => '6'));
+ Array('Name' => 'Next', 'URL' => 'QueryStringParam:action=pl_next', 'Position' => '6'));
$this->_xml->setCiscoElement('SoftKeyItem',
- Array('Name' => 'Enqueue', 'URL' => 'QueryStringParam:action=pl_previous', 'Position' => '7'));
+ Array('Name' => 'Previous', 'URL' => 'QueryStringParam:action=pl_previous', 'Position' => '7'));
$this->_xml->setCiscoElement('SoftKeyItem',
Array('Name' => 'Quit', 'URL' => 'SoftKey:Exit', 'Position' => '8'));
}
committer: Mitch Capper
comments:
Removed DX patch it is now in trunk
diff --git a/mitchcapper/FSClient/External Items/portaudio_dx_win.patch b/mitchcapper/FSClient/External Items/portaudio_dx_win.patch
deleted file mode 100644
index 21c1caf..0000000
--- a/mitchcapper/FSClient/External Items/portaudio_dx_win.patch
+++ /dev/null
@@ -1,426 +0,0 @@
-diff --git a/Freeswitch.2010.sln b/Freeswitch.2010.sln
-index edee701..464cb2e 100644
---- a/Freeswitch.2010.sln
-+++ b/Freeswitch.2010.sln
-@@ -1569,18 +1569,18 @@ Global
- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.ActiveCfg = Release DirectSound|x64
- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.Build.0 = Release DirectSound|x64
- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x86 Setup.ActiveCfg = Release DirectSound|x64
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug|Win32
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug|Win32
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|x64
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug|x64
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64 Setup.ActiveCfg = Debug|x64
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x86 Setup.ActiveCfg = Debug|Win32
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|x64
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release|x64
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64 Setup.ActiveCfg = Release|x64
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x86 Setup.ActiveCfg = Release|Win32
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug DirectSound|Win32
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug DirectSound|Win32
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug DirectSound|x64
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug DirectSound|x64
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64 Setup.ActiveCfg = Debug DirectSound|x64
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x86 Setup.ActiveCfg = Debug DirectSound|Win32
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release DirectSound|Win32
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release DirectSound|Win32
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release DirectSound|x64
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release DirectSound|x64
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64 Setup.ActiveCfg = Release DirectSound|x64
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x86 Setup.ActiveCfg = Release DirectSound|Win32
- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|Win32.ActiveCfg = Release|x64
- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.ActiveCfg = Release|x64
- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.Build.0 = Release|x64
-diff --git a/libs/portaudio/build/msvc/portaudio.2010.vcxproj b/libs/portaudio/build/msvc/portaudio.2010.vcxproj
-index b4eca56..10b4c25 100644
---- a/libs/portaudio/build/msvc/portaudio.2010.vcxproj
-+++ b/libs/portaudio/build/msvc/portaudio.2010.vcxproj
-@@ -41,11 +41,11 @@
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'" Label="Configuration">
-- <ConfigurationType>DynamicLibrary</ConfigurationType>
-+ <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'" Label="Configuration">
-- <ConfigurationType>DynamicLibrary</ConfigurationType>
-+ <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-@@ -57,11 +57,11 @@
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'" Label="Configuration">
-- <ConfigurationType>DynamicLibrary</ConfigurationType>
-+ <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'" Label="Configuration">
-- <ConfigurationType>DynamicLibrary</ConfigurationType>
-+ <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-@@ -77,9 +77,11 @@
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ <Import Project="..\..\..\..\w32\extlib.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ <Import Project="..\..\..\..\w32\extlib.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-@@ -92,10 +94,12 @@
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-+ <Import Project="..\..\..\..\w32\extlib.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-+ <Import Project="..\..\..\..\w32\extlib.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-@@ -110,18 +114,6 @@
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">$(Configuration)\</OutDir>
-- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">$(Configuration)\</IntDir>
-- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</LinkIncremental>
-- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">$(Platform)\$(Configuration)\</OutDir>
-- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">$(Platform)\$(Configuration)\</IntDir>
-- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</LinkIncremental>
-- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">$(Configuration)\</OutDir>
-- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">$(Configuration)\</IntDir>
-- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">false</LinkIncremental>
-- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">$(Platform)\$(Configuration)\</OutDir>
-- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">$(Platform)\$(Configuration)\</IntDir>
-- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
-@@ -231,45 +223,23 @@
- <MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <TargetEnvironment>Win32</TargetEnvironment>
-- <TypeLibraryName>.\Debug_x86/portaudio.tlb</TypeLibraryName>
-- <HeaderFileName>
-- </HeaderFileName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-- <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-- <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)/portaudio.pch</PrecompiledHeaderOutputFile>
-- <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
-- <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
-- <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
-- <Link>
-- <AdditionalDependencies>ksuser.lib;%(AdditionalDependencies)</AdditionalDependencies>
-- <OutputFile>$(Platform)\$(Configuration)\portaudio_x86.dll</OutputFile>
-- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <ModuleDefinitionFile>.\portaudio.def</ModuleDefinitionFile>
-- <GenerateDebugInformation>true</GenerateDebugInformation>
-- <ProgramDatabaseFile>$(Platform)\$(Configuration)\portaudio_x86.pdb</ProgramDatabaseFile>
-- <RandomizedBaseAddress>false</RandomizedBaseAddress>
-- <DataExecutionPrevention>
-- </DataExecutionPrevention>
-- <ImportLibrary>$(Platform)\$(Configuration)\portaudio_x86.lib</ImportLibrary>
-- <TargetMachine>MachineX86</TargetMachine>
-- </Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <OutputFile>$(Platform)\$(Configuration)\portaudio.bsc</OutputFile>
- </Bscmake>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">
-@@ -278,45 +248,23 @@
- <MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <TargetEnvironment>X64</TargetEnvironment>
-- <TypeLibraryName>.\Debug_x86/portaudio.tlb</TypeLibraryName>
-- <HeaderFileName>
-- </HeaderFileName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-- <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-- <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)\portaudio.pch</PrecompiledHeaderOutputFile>
-- <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
-- <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
-- <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
-- <Link>
-- <AdditionalDependencies>ksuser.lib;%(AdditionalDependencies)</AdditionalDependencies>
-- <OutputFile>$(Platform)\$(Configuration)\portaudio_x64.dll</OutputFile>
-- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <ModuleDefinitionFile>.\portaudio.def</ModuleDefinitionFile>
-- <GenerateDebugInformation>true</GenerateDebugInformation>
-- <ProgramDatabaseFile>$(Platform)\$(Configuration)/portaudio_x64.pdb</ProgramDatabaseFile>
-- <RandomizedBaseAddress>false</RandomizedBaseAddress>
-- <DataExecutionPrevention>
-- </DataExecutionPrevention>
-- <ImportLibrary>$(Platform)\$(Configuration)\portaudio_x64.lib</ImportLibrary>
-- <TargetMachine>MachineX64</TargetMachine>
-- </Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <OutputFile>$(Platform)\$(Configuration)/portaudio_x64.bsc</OutputFile>
- </Bscmake>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">
-@@ -325,22 +273,15 @@
- <MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <TargetEnvironment>Win32</TargetEnvironment>
-- <TypeLibraryName>.\Release_x86/portaudio.tlb</TypeLibraryName>
-- <HeaderFileName>
-- </HeaderFileName>
- </Midl>
- <ClCompile>
- <Optimization>MaxSpeed</Optimization>
-- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-+ <InlineFunctionExpansion>Default</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-- <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
-- <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)/portaudio.pch</PrecompiledHeaderOutputFile>
-- <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
-- <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
-- <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- </ClCompile>
-@@ -348,20 +289,8 @@
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
-- <Link>
-- <OutputFile>$(Platform)\$(Configuration)\portaudio_x86.dll</OutputFile>
-- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <ModuleDefinitionFile>.\portaudio.def</ModuleDefinitionFile>
-- <ProgramDatabaseFile>$(Platform)\$(Configuration)\portaudio_x86.pdb</ProgramDatabaseFile>
-- <RandomizedBaseAddress>false</RandomizedBaseAddress>
-- <DataExecutionPrevention>
-- </DataExecutionPrevention>
-- <ImportLibrary>$(Platform)\$(Configuration)\portaudio_x86.lib</ImportLibrary>
-- <TargetMachine>MachineX86</TargetMachine>
-- </Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <OutputFile>$(Platform)\$(Configuration)\portaudio.bsc</OutputFile>
- </Bscmake>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">
-@@ -370,22 +299,15 @@
- <MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <TargetEnvironment>X64</TargetEnvironment>
-- <TypeLibraryName>.\Release_x86/portaudio.tlb</TypeLibraryName>
-- <HeaderFileName>
-- </HeaderFileName>
- </Midl>
- <ClCompile>
- <Optimization>MaxSpeed</Optimization>
-- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-- <AdditionalIncludeDirectories>..\..\src\common;..\..\include;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-- <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <InlineFunctionExpansion>Default</InlineFunctionExpansion>
-+ <AdditionalIncludeDirectories>..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+ <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
-- <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)\portaudio.pch</PrecompiledHeaderOutputFile>
-- <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
-- <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
-- <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- </ClCompile>
-@@ -393,20 +315,8 @@
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
-- <Link>
-- <OutputFile>$(Platform)\$(Configuration)\portaudio_x64.dll</OutputFile>
-- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <ModuleDefinitionFile>.\portaudio.def</ModuleDefinitionFile>
-- <ProgramDatabaseFile>$(Platform)\$(Configuration)/portaudio_x64.pdb</ProgramDatabaseFile>
-- <RandomizedBaseAddress>false</RandomizedBaseAddress>
-- <DataExecutionPrevention>
-- </DataExecutionPrevention>
-- <ImportLibrary>$(Platform)\$(Configuration)/portaudio_x64.lib</ImportLibrary>
-- <TargetMachine>MachineX64</TargetMachine>
-- </Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <OutputFile>$(Platform)\$(Configuration)\portaudio_x64.bsc</OutputFile>
- </Bscmake>
- </ItemDefinitionGroup>
- <ItemGroup>
-@@ -594,6 +504,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-@@ -605,6 +516,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-@@ -618,6 +530,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-@@ -629,6 +542,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-@@ -642,6 +556,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-@@ -653,6 +568,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-@@ -666,6 +582,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-@@ -677,6 +594,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-@@ -690,6 +608,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-@@ -701,6 +620,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-@@ -714,6 +634,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-@@ -725,6 +646,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-@@ -738,6 +660,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-@@ -749,6 +672,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-@@ -762,6 +686,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-@@ -773,6 +698,7 @@
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
diff --git a/mitchcapper/FSClient/FSClient.sln b/mitchcapper/FSClient/FSClient.sln
index 12ca810..f4512a5 100644
--- a/mitchcapper/FSClient/FSClient.sln
+++ b/mitchcapper/FSClient/FSClient.sln
@@ -11,7 +11,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "External Items", "External
ProjectSection(SolutionItems) = preProject
External Items\JabraTelephonyAPI.dll = External Items\JabraTelephonyAPI.dll
External Items\Plantronics.Device.Common.dll = External Items\Plantronics.Device.Common.dll
- External Items\portaudio_dx_win.patch = External Items\portaudio_dx_win.patch
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "conf", "conf", "{BDB28E84-D1D5-4102-BD29-C638197EFD42}"
committer: Mitch Capper
comments:
Seems x64 builds were not excluding things properly
diff --git a/mitchcapper/FSClient/External Items/portaudio_dx_win.patch b/mitchcapper/FSClient/External Items/portaudio_dx_win.patch
index 12df16e..21c1caf 100644
--- a/mitchcapper/FSClient/External Items/portaudio_dx_win.patch
+++ b/mitchcapper/FSClient/External Items/portaudio_dx_win.patch
@@ -3,294 +3,424 @@ index edee701..464cb2e 100644
--- a/Freeswitch.2010.sln
+++ b/Freeswitch.2010.sln
@@ -1569,18 +1569,18 @@ Global
- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.ActiveCfg = Release DirectSound|x64
- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.Build.0 = Release DirectSound|x64
- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x86 Setup.ActiveCfg = Release DirectSound|x64
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug|Win32
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug|Win32
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|x64
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug|x64
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64 Setup.ActiveCfg = Debug|x64
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x86 Setup.ActiveCfg = Debug|Win32
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|x64
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release|x64
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64 Setup.ActiveCfg = Release|x64
-- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x86 Setup.ActiveCfg = Release|Win32
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug DirectSound|Win32
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug DirectSound|Win32
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug DirectSound|x64
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug DirectSound|x64
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64 Setup.ActiveCfg = Debug DirectSound|x64
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x86 Setup.ActiveCfg = Debug DirectSound|Win32
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release DirectSound|Win32
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release DirectSound|Win32
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release DirectSound|x64
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release DirectSound|x64
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64 Setup.ActiveCfg = Release DirectSound|x64
-+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x86 Setup.ActiveCfg = Release DirectSound|Win32
- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|Win32.ActiveCfg = Release|x64
- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.ActiveCfg = Release|x64
- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.Build.0 = Release|x64
+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.ActiveCfg = Release DirectSound|x64
+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.Build.0 = Release DirectSound|x64
+ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x86 Setup.ActiveCfg = Release DirectSound|x64
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug|Win32
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug|Win32
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|x64
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug|x64
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64 Setup.ActiveCfg = Debug|x64
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x86 Setup.ActiveCfg = Debug|Win32
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|x64
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release|x64
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64 Setup.ActiveCfg = Release|x64
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug DirectSound|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug DirectSound|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64 Setup.ActiveCfg = Debug DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x86 Setup.ActiveCfg = Debug DirectSound|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release DirectSound|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release DirectSound|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64 Setup.ActiveCfg = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x86 Setup.ActiveCfg = Release DirectSound|Win32
+ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|Win32.ActiveCfg = Release|x64
+ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.ActiveCfg = Release|x64
+ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.Build.0 = Release|x64
diff --git a/libs/portaudio/build/msvc/portaudio.2010.vcxproj b/libs/portaudio/build/msvc/portaudio.2010.vcxproj
-index b4eca56..cfc35c5 100644
+index b4eca56..10b4c25 100644
--- a/libs/portaudio/build/msvc/portaudio.2010.vcxproj
+++ b/libs/portaudio/build/msvc/portaudio.2010.vcxproj
@@ -41,11 +41,11 @@
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'" Label="Configuration">
-- <ConfigurationType>DynamicLibrary</ConfigurationType>
-+ <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'" Label="Configuration">
-- <ConfigurationType>DynamicLibrary</ConfigurationType>
-+ <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'" Label="Configuration">
+- <ConfigurationType>DynamicLibrary</ConfigurationType>
++ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'" Label="Configuration">
+- <ConfigurationType>DynamicLibrary</ConfigurationType>
++ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -57,11 +57,11 @@
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'" Label="Configuration">
-- <ConfigurationType>DynamicLibrary</ConfigurationType>
-+ <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'" Label="Configuration">
-- <ConfigurationType>DynamicLibrary</ConfigurationType>
-+ <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'" Label="Configuration">
+- <ConfigurationType>DynamicLibrary</ConfigurationType>
++ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'" Label="Configuration">
+- <ConfigurationType>DynamicLibrary</ConfigurationType>
++ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
@@ -77,9 +77,11 @@
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ <Import Project="..\..\..\..\w32\extlib.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ <Import Project="..\..\..\..\w32\extlib.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ <Import Project="..\..\..\..\w32\extlib.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ <Import Project="..\..\..\..\w32\extlib.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
@@ -92,10 +94,12 @@
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-+ <Import Project="..\..\..\..\w32\extlib.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-+ <Import Project="..\..\..\..\w32\extlib.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
++ <Import Project="..\..\..\..\w32\extlib.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
++ <Import Project="..\..\..\..\w32\extlib.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
@@ -110,18 +114,6 @@
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">$(Configuration)\</OutDir>
-- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">$(Configuration)\</IntDir>
-- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</LinkIncremental>
-- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">$(Platform)\$(Configuration)\</OutDir>
-- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">$(Platform)\$(Configuration)\</IntDir>
-- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</LinkIncremental>
-- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">$(Configuration)\</OutDir>
-- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">$(Configuration)\</IntDir>
-- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">false</LinkIncremental>
-- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">$(Platform)\$(Configuration)\</OutDir>
-- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">$(Platform)\$(Configuration)\</IntDir>
-- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">false</LinkIncremental>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">$(Configuration)\</OutDir>
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">$(Configuration)\</IntDir>
+- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</LinkIncremental>
+- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">$(Platform)\$(Configuration)\</OutDir>
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">$(Platform)\$(Configuration)\</IntDir>
+- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</LinkIncremental>
+- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">$(Configuration)\</OutDir>
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">$(Configuration)\</IntDir>
+- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">false</LinkIncremental>
+- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">$(Platform)\$(Configuration)\</OutDir>
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">$(Platform)\$(Configuration)\</IntDir>
+- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
@@ -231,45 +223,23 @@
- <MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <TargetEnvironment>Win32</TargetEnvironment>
-- <TypeLibraryName>.\Debug_x86/portaudio.tlb</TypeLibraryName>
-- <HeaderFileName>
-- </HeaderFileName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-- <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-- <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)/portaudio.pch</PrecompiledHeaderOutputFile>
-- <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
-- <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
-- <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
-- <Link>
-- <AdditionalDependencies>ksuser.lib;%(AdditionalDependencies)</AdditionalDependencies>
-- <OutputFile>$(Platform)\$(Configuration)\portaudio_x86.dll</OutputFile>
-- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <ModuleDefinitionFile>.\portaudio.def</ModuleDefinitionFile>
-- <GenerateDebugInformation>true</GenerateDebugInformation>
-- <ProgramDatabaseFile>$(Platform)\$(Configuration)\portaudio_x86.pdb</ProgramDatabaseFile>
-- <RandomizedBaseAddress>false</RandomizedBaseAddress>
-- <DataExecutionPrevention>
-- </DataExecutionPrevention>
-- <ImportLibrary>$(Platform)\$(Configuration)\portaudio_x86.lib</ImportLibrary>
-- <TargetMachine>MachineX86</TargetMachine>
-- </Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <OutputFile>$(Platform)\$(Configuration)\portaudio.bsc</OutputFile>
- </Bscmake>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+- <TypeLibraryName>.\Debug_x86/portaudio.tlb</TypeLibraryName>
+- <HeaderFileName>
+- </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+- <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+- <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)/portaudio.pch</PrecompiledHeaderOutputFile>
+- <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
+- <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
+- <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+- <Link>
+- <AdditionalDependencies>ksuser.lib;%(AdditionalDependencies)</AdditionalDependencies>
+- <OutputFile>$(Platform)\$(Configuration)\portaudio_x86.dll</OutputFile>
+- <SuppressStartupBanner>true</SuppressStartupBanner>
+- <ModuleDefinitionFile>.\portaudio.def</ModuleDefinitionFile>
+- <GenerateDebugInformation>true</GenerateDebugInformation>
+- <ProgramDatabaseFile>$(Platform)\$(Configuration)\portaudio_x86.pdb</ProgramDatabaseFile>
+- <RandomizedBaseAddress>false</RandomizedBaseAddress>
+- <DataExecutionPrevention>
+- </DataExecutionPrevention>
+- <ImportLibrary>$(Platform)\$(Configuration)\portaudio_x86.lib</ImportLibrary>
+- <TargetMachine>MachineX86</TargetMachine>
+- </Link>
+ <Bscmake>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+- <OutputFile>$(Platform)\$(Configuration)\portaudio.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">
@@ -278,45 +248,23 @@
- <MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <TargetEnvironment>X64</TargetEnvironment>
-- <TypeLibraryName>.\Debug_x86/portaudio.tlb</TypeLibraryName>
-- <HeaderFileName>
-- </HeaderFileName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-- <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-- <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)\portaudio.pch</PrecompiledHeaderOutputFile>
-- <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
-- <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
-- <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
-- <Link>
-- <AdditionalDependencies>ksuser.lib;%(AdditionalDependencies)</AdditionalDependencies>
-- <OutputFile>$(Platform)\$(Configuration)\portaudio_x64.dll</OutputFile>
-- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <ModuleDefinitionFile>.\portaudio.def</ModuleDefinitionFile>
-- <GenerateDebugInformation>true</GenerateDebugInformation>
-- <ProgramDatabaseFile>$(Platform)\$(Configuration)/portaudio_x64.pdb</ProgramDatabaseFile>
-- <RandomizedBaseAddress>false</RandomizedBaseAddress>
-- <DataExecutionPrevention>
-- </DataExecutionPrevention>
-- <ImportLibrary>$(Platform)\$(Configuration)\portaudio_x64.lib</ImportLibrary>
-- <TargetMachine>MachineX64</TargetMachine>
-- </Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <OutputFile>$(Platform)\$(Configuration)/portaudio_x64.bsc</OutputFile>
- </Bscmake>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>X64</TargetEnvironment>
+- <TypeLibraryName>.\Debug_x86/portaudio.tlb</TypeLibraryName>
+- <HeaderFileName>
+- </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+- <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+- <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)\portaudio.pch</PrecompiledHeaderOutputFile>
+- <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
+- <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
+- <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+- <Link>
+- <AdditionalDependencies>ksuser.lib;%(AdditionalDependencies)</AdditionalDependencies>
+- <OutputFile>$(Platform)\$(Configuration)\portaudio_x64.dll</OutputFile>
+- <SuppressStartupBanner>true</SuppressStartupBanner>
+- <ModuleDefinitionFile>.\portaudio.def</ModuleDefinitionFile>
+- <GenerateDebugInformation>true</GenerateDebugInformation>
+- <ProgramDatabaseFile>$(Platform)\$(Configuration)/portaudio_x64.pdb</ProgramDatabaseFile>
+- <RandomizedBaseAddress>false</RandomizedBaseAddress>
+- <DataExecutionPrevention>
+- </DataExecutionPrevention>
+- <ImportLibrary>$(Platform)\$(Configuration)\portaudio_x64.lib</ImportLibrary>
+- <TargetMachine>MachineX64</TargetMachine>
+- </Link>
+ <Bscmake>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+- <OutputFile>$(Platform)\$(Configuration)/portaudio_x64.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">
@@ -325,22 +273,15 @@
- <MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <TargetEnvironment>Win32</TargetEnvironment>
-- <TypeLibraryName>.\Release_x86/portaudio.tlb</TypeLibraryName>
-- <HeaderFileName>
-- </HeaderFileName>
- </Midl>
- <ClCompile>
- <Optimization>MaxSpeed</Optimization>
-- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-+ <InlineFunctionExpansion>Default</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-- <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
-- <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)/portaudio.pch</PrecompiledHeaderOutputFile>
-- <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
-- <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
-- <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- </ClCompile>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+- <TypeLibraryName>.\Release_x86/portaudio.tlb</TypeLibraryName>
+- <HeaderFileName>
+- </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
++ <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+- <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+- <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)/portaudio.pch</PrecompiledHeaderOutputFile>
+- <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
+- <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
+- <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
@@ -348,20 +289,8 @@
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
-- <Link>
-- <OutputFile>$(Platform)\$(Configuration)\portaudio_x86.dll</OutputFile>
-- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <ModuleDefinitionFile>.\portaudio.def</ModuleDefinitionFile>
-- <ProgramDatabaseFile>$(Platform)\$(Configuration)\portaudio_x86.pdb</ProgramDatabaseFile>
-- <RandomizedBaseAddress>false</RandomizedBaseAddress>
-- <DataExecutionPrevention>
-- </DataExecutionPrevention>
-- <ImportLibrary>$(Platform)\$(Configuration)\portaudio_x86.lib</ImportLibrary>
-- <TargetMachine>MachineX86</TargetMachine>
-- </Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <OutputFile>$(Platform)\$(Configuration)\portaudio.bsc</OutputFile>
- </Bscmake>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+- <Link>
+- <OutputFile>$(Platform)\$(Configuration)\portaudio_x86.dll</OutputFile>
+- <SuppressStartupBanner>true</SuppressStartupBanner>
+- <ModuleDefinitionFile>.\portaudio.def</ModuleDefinitionFile>
+- <ProgramDatabaseFile>$(Platform)\$(Configuration)\portaudio_x86.pdb</ProgramDatabaseFile>
+- <RandomizedBaseAddress>false</RandomizedBaseAddress>
+- <DataExecutionPrevention>
+- </DataExecutionPrevention>
+- <ImportLibrary>$(Platform)\$(Configuration)\portaudio_x86.lib</ImportLibrary>
+- <TargetMachine>MachineX86</TargetMachine>
+- </Link>
+ <Bscmake>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+- <OutputFile>$(Platform)\$(Configuration)\portaudio.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">
@@ -370,22 +299,15 @@
- <MkTypLibCompatible>true</MkTypLibCompatible>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- <TargetEnvironment>X64</TargetEnvironment>
-- <TypeLibraryName>.\Release_x86/portaudio.tlb</TypeLibraryName>
-- <HeaderFileName>
-- </HeaderFileName>
- </Midl>
- <ClCompile>
- <Optimization>MaxSpeed</Optimization>
- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>..\..\src\common;..\..\include;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-- <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
-- <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)\portaudio.pch</PrecompiledHeaderOutputFile>
-- <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
-- <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
-- <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- </ClCompile>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>X64</TargetEnvironment>
+- <TypeLibraryName>.\Release_x86/portaudio.tlb</TypeLibraryName>
+- <HeaderFileName>
+- </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+- <AdditionalIncludeDirectories>..\..\src\common;..\..\include;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+- <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <InlineFunctionExpansion>Default</InlineFunctionExpansion>
++ <AdditionalIncludeDirectories>..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++ <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+- <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)\portaudio.pch</PrecompiledHeaderOutputFile>
+- <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
+- <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
+- <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
@@ -393,20 +315,8 @@
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
-- <Link>
-- <OutputFile>$(Platform)\$(Configuration)\portaudio_x64.dll</OutputFile>
-- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <ModuleDefinitionFile>.\portaudio.def</ModuleDefinitionFile>
-- <ProgramDatabaseFile>$(Platform)\$(Configuration)/portaudio_x64.pdb</ProgramDatabaseFile>
-- <RandomizedBaseAddress>false</RandomizedBaseAddress>
-- <DataExecutionPrevention>
-- </DataExecutionPrevention>
-- <ImportLibrary>$(Platform)\$(Configuration)/portaudio_x64.lib</ImportLibrary>
-- <TargetMachine>MachineX64</TargetMachine>
-- </Link>
- <Bscmake>
- <SuppressStartupBanner>true</SuppressStartupBanner>
-- <OutputFile>$(Platform)\$(Configuration)\portaudio_x64.bsc</OutputFile>
- </Bscmake>
- </ItemDefinitionGroup>
- <ItemGroup>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+- <Link>
+- <OutputFile>$(Platform)\$(Configuration)\portaudio_x64.dll</OutputFile>
+- <SuppressStartupBanner>true</SuppressStartupBanner>
+- <ModuleDefinitionFile>.\portaudio.def</ModuleDefinitionFile>
+- <ProgramDatabaseFile>$(Platform)\$(Configuration)/portaudio_x64.pdb</ProgramDatabaseFile>
+- <RandomizedBaseAddress>false</RandomizedBaseAddress>
+- <DataExecutionPrevention>
+- </DataExecutionPrevention>
+- <ImportLibrary>$(Platform)\$(Configuration)/portaudio_x64.lib</ImportLibrary>
+- <TargetMachine>MachineX64</TargetMachine>
+- </Link>
+ <Bscmake>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+- <OutputFile>$(Platform)\$(Configuration)\portaudio_x64.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+@@ -594,6 +504,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+@@ -605,6 +516,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+@@ -618,6 +530,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+@@ -629,6 +542,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+@@ -642,6 +556,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+@@ -653,6 +568,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+@@ -666,6 +582,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+@@ -677,6 +594,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+@@ -690,6 +608,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+@@ -701,6 +620,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+@@ -714,6 +634,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+@@ -725,6 +646,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+@@ -738,6 +660,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+@@ -749,6 +672,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+@@ -762,6 +686,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+@@ -773,6 +698,7 @@
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">true</ExcludedFromBuild>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release DirectSound|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
committer: Mitch Capper
comments:
Merge branch 'master' of ssh://git.freeswitch.org/freeswitch-contrib
committer: Raymond Chandler
comments:
FS-3025 - this should be the last commit on this bug id
diff --git a/file.txt b/file.txt
deleted file mode 100644
index f611376..0000000
--- a/file.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-blaaaaaah
-blaaaaaah
-blaaaaaah
-blaaaaaah
-blaaaaaah
-testing
-testing
-WT
committer: Raymond Chandler
comments:
FS-3025
diff --git a/file.txt b/file.txt
index bd6e5e0..f611376 100644
--- a/file.txt
+++ b/file.txt
@@ -5,3 +5,4 @@ blaaaaaah
blaaaaaah
testing
testing
+WT
committer: Raymond Chandler
comments:
FS-3025
diff --git a/file.txt b/file.txt
index 201120d..bd6e5e0 100644
--- a/file.txt
+++ b/file.txt
@@ -4,3 +4,4 @@ blaaaaaah
blaaaaaah
blaaaaaah
testing
+testing
committer: Raymond Chandler
comments:
Merge branch 'master' of git.freeswitch.org:freeswitch-contrib
committer: Raymond Chandler
comments:
FS-3025
diff --git a/file.txt b/file.txt
index 3fdc27e..201120d 100644
--- a/file.txt
+++ b/file.txt
@@ -3,3 +3,4 @@ blaaaaaah
blaaaaaah
blaaaaaah
blaaaaaah
+testing
committer: Mitch Capper
comments:
Merge branch 'master' of ssh://git.freeswitch.org/freeswitch-contrib
committer: Mitch Capper
comments:
merged setup changes
diff --cc mitchcapper/FSClient/Setup/Product.wxs
index 4cbf2a3,0ab94b7..bb93a12
--- a/mitchcapper/FSClient/Setup/Product.wxs
+++ b/mitchcapper/FSClient/Setup/Product.wxs
@@@ -11,10 -11,9 +11,10 @@@
<?endif ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
+ xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
- <Product Id="f20f4348-01f9-457f-9112-60edb77761f4" Name="$(var.ProductName)" Language="1033" Version="1.0.0.0" Manufacturer="FreeSWITCH" UpgradeCode="7668faef-2ab3-4079-a986-07a33739b42e">
+ <Product Id="*" Name="$(var.ProductName)" Language="1033" Version="1.0.1.0" Manufacturer="FreeSWITCH" UpgradeCode="7668FAEF-2AB3-4079-A986-07A33739B42E">
- <Package InstallerVersion="200" Compressed="yes" />
+ <Package InstallerVersion="300" Compressed="yes" />
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
@@@ -28,85 -27,64 +28,85 @@@
<Directory Id="INSTALLLOCATION" Name="FSClient">
<!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
<!-- <Component Id="ProductComponent" Guid="594203af-235a-4a7d-aff8-045997f872ec"> -->
- <!-- TODO: Insert files, registry keys, and other resources here. -->
+ <!-- TODO: Insert files, registry keys, and other resources here. -->
<!-- </Component> -->
- <Directory Id="MODLOCATION" Name="Mod">
- </Directory>
- <Directory Id="CONFLOCATION" Name="Conf">
- </Directory>
- <Directory Id="PLUGINLOCATION" Name="Plugins">
- </Directory>
+ <Directory Id="MODLOCATION" Name="Mod">
+ </Directory>
+ <Directory Id="CONFLOCATION" Name="Conf">
+ </Directory>
+ <Directory Id="PLUGINLOCATION" Name="Plugins">
+ </Directory>
</Directory>
</Directory>
- <?if $(var.Platform) != x64 ?>
- <Merge Id="CrtFiles_x86"
- SourceFile="$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC100_CRT_x86.msm"
- DiskId="1"
- Language="1033"/>
- <?endif ?>
- <?if $(var.Platform) = x64 ?>
- <Merge Id="CrtFiles_x64"
- SourceFile="$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC100_CRT_x64.msm"
- DiskId="1"
- Language="1033"/>
- <?endif ?>
- <Directory Id="ProgramMenuFolder">
- <Directory Id="ApplicationProgramsFolder" Name="FSClient"/>
- </Directory>
+ <?if $(var.Platform) != x64 ?>
+ <Merge Id="CrtFiles_x86"
+ SourceFile="$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC100_CRT_x86.msm"
+ DiskId="1"
+ Language="1033"/>
+ <?endif ?>
+ <?if $(var.Platform) = x64 ?>
+ <Merge Id="CrtFiles_x64"
+ SourceFile="$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC100_CRT_x64.msm"
+ DiskId="1"
+ Language="1033"/>
+ <?endif ?>
+ <Directory Id="ProgramMenuFolder">
+ <Directory Id="ApplicationProgramsFolder" Name="FSClient"/>
+ </Directory>
</Directory>
- <DirectoryRef Id="ApplicationProgramsFolder">
- <Component Id="ApplicationShortcut" Guid="20BC8446-684B-44F5-A1E3-AF6010EAF37C">
- <Shortcut Id="ApplicationStartMenuShortcut"
- Name="FSClient"
- Description="FreeSWITCH Windows Phone"
- Target="[INSTALLLOCATION]FSClient.exe"
- WorkingDirectory="INSTALLLOCATION"/>
+ <DirectoryRef Id="ApplicationProgramsFolder">
+ <Component Id="ApplicationShortcut" Guid="20BC8446-684B-44F5-A1E3-AF6010EAF37C">
+ <Shortcut Id="ApplicationStartMenuShortcut"
+ Name="FSClient"
+ Description="FreeSWITCH Windows Phone"
+ Target="[INSTALLLOCATION]FSClient.exe"
+ WorkingDirectory="INSTALLLOCATION"/>
+ <util:InternetShortcut Id="OnlineDocumentationShortcut"
+ Name="Online Documentation"
+ Target="http://wiki.freeswitch.com/wiki/FSClient"/>
+ <Shortcut Id="UninstallProduct"
+ Name="Uninstall FSClient"
+ Target="[SystemFolder]msiexec.exe"
+ Arguments="/x [ProductCode]"
+ Description="Uninstalls FSClient" />
+
- <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
- <RegistryValue Root="HKCU" Key="Software\FreeSWITCH\FSClient" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
- </Component>
- </DirectoryRef>
+ <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
+ <RegistryValue Root="HKCU" Key="Software\FreeSWITCH\FSClient" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
+ </Component>
+ </DirectoryRef>
<Feature Id="ProductFeature" Title="FSClient Core" Level="1">
<!-- TODO: Remove the comments around this ComponentRef element and the Component above in order to add resources to this installer. -->
- <!-- <ComponentRef Id="ProductComponent" /> -->
- <ComponentGroupRef Id="FSCoreComp"/>
- <ComponentGroupRef Id="FSCoreModComp"/>
- <ComponentRef Id="FSCoreConfComp"/>
- <ComponentGroupRef Id="FSClientComp"/>
- <ComponentRef Id="ApplicationShortcut" />
-
+ <!-- <ComponentRef Id="ProductComponent" /> -->
+ <ComponentGroupRef Id="FSCoreComp"/>
+ <ComponentGroupRef Id="FSCoreModComp"/>
+ <ComponentRef Id="FSCoreConfComp"/>
+ <ComponentGroupRef Id="FSClientComp"/>
+ <ComponentRef Id="ApplicationShortcut" />
+
<!-- Note: The following ComponentGroupRef is required to pull in generated authoring from project references. -->
<ComponentGroupRef Id="Product.Generated" />
- <?if $(var.Platform) != x64 ?>
- <MergeRef Id="CrtFiles_x86"/>
- <?endif ?>
- <?if $(var.Platform) = x64 ?>
- <MergeRef Id="CrtFiles_x64"/>
- <?endif ?>
+ <?if $(var.Platform) != x64 ?>
+ <MergeRef Id="CrtFiles_x86"/>
+ <?endif ?>
+ <?if $(var.Platform) = x64 ?>
+ <MergeRef Id="CrtFiles_x64"/>
+ <?endif ?>
</Feature>
- <Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />
- <UIRef Id="WixUI_InstallDir" />
+ <Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />
+ <UIRef Id="WixUI_InstallDir" />
+ <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch FSClient" />
+ <Property Id="WixShellExecTarget" Value="[INSTALLLOCATION]FSClient.exe" />
+ <CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
+ <UI>
+ <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
+ </UI>
+ <WixVariable Id="WixUIBannerBmp" Value="Banner.bmp" />
+ <WixVariable Id="WixUIDialogBmp" Value="Dialog.bmp" />
+ <Icon Id="icon.ico" SourceFile="../phone.ico"/>
+ <Property Id="ARPPRODUCTICON" Value="icon.ico" />
+ <MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." AllowSameVersionUpgrades="yes" />
+
- </Product>
+ </Product>
</Wix>
committer: Raymond Chandler
comments:
FS-3025
diff --git a/file.txt b/file.txt
index 41f89d6..3fdc27e 100644
--- a/file.txt
+++ b/file.txt
@@ -2,3 +2,4 @@ blaaaaaah
blaaaaaah
blaaaaaah
blaaaaaah
+blaaaaaah
committer: Raymond Chandler
comments:
test
diff --git a/file.txt b/file.txt
index a6d581e..41f89d6 100644
--- a/file.txt
+++ b/file.txt
@@ -1,3 +1,4 @@
blaaaaaah
blaaaaaah
blaaaaaah
+blaaaaaah
committer: Raymond Chandler
comments:
Merge branch 'master' of git.freeswitch.org:freeswitch-contrib
committer: Raymond Chandler
comments:
test
diff --git a/file.txt b/file.txt
index 56ec127..a6d581e 100644
--- a/file.txt
+++ b/file.txt
@@ -1,2 +1,3 @@
blaaaaaah
blaaaaaah
+blaaaaaah
committer: Raymond Chandler
comments:
test
diff --git a/file.txt b/file.txt
new file mode 100644
index 0000000..56ec127
--- /dev/null
+++ b/file.txt
@@ -0,0 +1,2 @@
+blaaaaaah
+blaaaaaah
committer: Jeff Lenk
comments:
change version of installer required
diff --git a/mitchcapper/FSClient/Setup/Product.wxs b/mitchcapper/FSClient/Setup/Product.wxs
index 073c9f0..0ab94b7 100644
--- a/mitchcapper/FSClient/Setup/Product.wxs
+++ b/mitchcapper/FSClient/Setup/Product.wxs
@@ -13,7 +13,7 @@
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
<Product Id="f20f4348-01f9-457f-9112-60edb77761f4" Name="$(var.ProductName)" Language="1033" Version="1.0.0.0" Manufacturer="FreeSWITCH" UpgradeCode="7668faef-2ab3-4079-a986-07a33739b42e">
- <Package InstallerVersion="200" Compressed="yes" />
+ <Package InstallerVersion="300" Compressed="yes" />
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
committer: Mitch Capper
comments:
Make accounts default to 0 last rather than after 1, add a proper remove account function and kill it out of sofia first, don't add a new account if a user clicks cancel.
diff --git a/mitchcapper/FSClient/Account.cs b/mitchcapper/FSClient/Account.cs
index d987ced..59f0197 100644
--- a/mitchcapper/FSClient/Account.cs
+++ b/mitchcapper/FSClient/Account.cs
@@ -125,7 +125,11 @@ namespace FSClient {
account.guid = "";
account.guid = old_guid;
}
-
+ public static void RemoveAccount(Account account){
+ account.KillGateway();
+ accounts.Remove(account);
+ ReloadSofia();
+ }
public static void create_gateway_nodes(XmlNode gateways_node) {
foreach (Account account in accounts) {
@@ -170,9 +174,10 @@ namespace FSClient {
_guid.PropertyChanged += (s, e) => {
if (!guid_ok(this, _guid.value) || String.IsNullOrEmpty(_guid.value)) {
- for (int i = 0; i < 10; i++) {
- if (guid_ok(this, i.ToString())) {
- _guid.value = i.ToString();
+ for (int i = 1; i <= 10; i++){
+ int val = i == 10 ? 0 : i; // want 0 checked last.
+ if (guid_ok(this, val.ToString())) {
+ _guid.value = val.ToString();
return;
}
}
@@ -329,13 +334,16 @@ namespace FSClient {
KillGateway();
ReloadSofia();
}
- public void edit() {
+ public bool edit() {
current_editing_account = this;
GenericEditor editor = new GenericEditor();
editor.Init("Editing Account", values);
editor.ShowDialog();
if (editor.DialogResult == true)
ReloadAccount();
+ else
+ return false;
+ return true;
}
}
}
diff --git a/mitchcapper/FSClient/Broker.cs b/mitchcapper/FSClient/Broker.cs
index b774695..58d6d91 100644
--- a/mitchcapper/FSClient/Broker.cs
+++ b/mitchcapper/FSClient/Broker.cs
@@ -228,7 +228,7 @@ namespace FSClient {
}
public void DialString(String str){
if (string.IsNullOrWhiteSpace(str))
- return;
+ return;
MainWindowRemoveFocus(true);
if (str.StartsWith("#") && str.Length > 2) {
@@ -572,8 +572,8 @@ namespace FSClient {
public OurAutoCompleteBox GetContactSearchBox() {
return MainWindow.get_instance().GetContactSearchBox();
}
- public void MainWindowRemoveFocus(bool ResetContactSearchText=false){
- MainWindow.get_instance().RemoveFocus(ResetContactSearchText);
+ public void MainWindowRemoveFocus(bool ResetContactSearchText=false){
+ MainWindow.get_instance().RemoveFocus(ResetContactSearchText);
}
private delegate void BroadcastEventDel(FSEvent evt);
BroadcastEventDel BroadcastHandler;
diff --git a/mitchcapper/FSClient/MainWindow.xaml.cs b/mitchcapper/FSClient/MainWindow.xaml.cs
index 2201cf0..1ea68a4 100644
--- a/mitchcapper/FSClient/MainWindow.xaml.cs
+++ b/mitchcapper/FSClient/MainWindow.xaml.cs
@@ -365,7 +365,8 @@ namespace FSClient {
private void AccountNew_Click(object sender, RoutedEventArgs e) {
Account acct = new Account();
Account.AddAccount(acct);
- acct.edit();
+ if (!acct.edit())
+ Account.RemoveAccount(acct);
}
@@ -387,7 +388,7 @@ namespace FSClient {
Account acct = gridAccounts.SelectedItem as Account;
if (acct == null)
return;
- Account.accounts.Remove(acct);
+ Account.RemoveAccount(acct);
}
committer: Mitch Capper
comments:
Merge branch 'master' of ssh://git.freeswitch.org/freeswitch-contrib
committer: Mitch Capper
comments:
I cannot spell the word balloons.
diff --git a/mitchcapper/FSClient/Broker.cs b/mitchcapper/FSClient/Broker.cs
index 0195525..b774695 100644
--- a/mitchcapper/FSClient/Broker.cs
+++ b/mitchcapper/FSClient/Broker.cs
@@ -46,7 +46,7 @@ namespace FSClient {
Account.LoadSettings();
- IncomingBallons = Properties.Settings.Default.IncomingBallons;
+ IncomingBalloons = Properties.Settings.Default.IncomingBalloons;
IncomingTopMost = Properties.Settings.Default.FrontOnIncoming;
ClearDTMFS = Properties.Settings.Default.ClearDTMFS;
UseNumberOnlyInput = Properties.Settings.Default.UseNumberOnlyInput;
@@ -306,7 +306,7 @@ namespace FSClient {
try {
SaveAudioSettings();
Account.SaveSettings();
- Properties.Settings.Default.IncomingBallons = IncomingBallons;
+ Properties.Settings.Default.IncomingBalloons = IncomingBalloons;
Properties.Settings.Default.FrontOnIncoming = IncomingTopMost;
Properties.Settings.Default.ClearDTMFS = ClearDTMFS;
Properties.Settings.Default.UseNumberOnlyInput = UseNumberOnlyInput;
@@ -389,7 +389,7 @@ namespace FSClient {
if (IncomingTopMost) {
MainWindow.get_instance().BringToFront();
}
- if (IncomingBallons && !DND) {
+ if (IncomingBalloons && !DND) {
IncomingCallNotification.ShowCallNotification(args.call);
if (Call.active_call != args.call && Call.active_call != null)
HandleCallWaiting(null, args.call);
@@ -404,7 +404,7 @@ namespace FSClient {
}
#region properties
- public bool IncomingBallons;
+ public bool IncomingBalloons;
public bool IncomingTopMost;
public bool UseNumberOnlyInput {
diff --git a/mitchcapper/FSClient/Options.xaml b/mitchcapper/FSClient/Options.xaml
index 992af17..7fc4ba9 100644
--- a/mitchcapper/FSClient/Options.xaml
+++ b/mitchcapper/FSClient/Options.xaml
@@ -45,7 +45,7 @@
<ComboBox Height="23" Grid.Row="6" Grid.Column="1" Name="comboRingDevice" Width="340" />
<StackPanel Grid.Row="7" Grid.Column="1" Grid.RowSpan="3">
<CheckBox x:Name="chkIncomingFront" Content="Bring To Front On Incoming Calls" VerticalAlignment="Center" FontWeight="Bold" FontSize="13.333" />
- <CheckBox x:Name="chkIncomingBallons" Content="Show Incoming Call Notification Ballons" VerticalAlignment="Center" FontWeight="Bold" FontSize="13.333" />
+ <CheckBox x:Name="chkIncomingBalloons" Content="Show Incoming Call Notification Balloons" VerticalAlignment="Center" FontWeight="Bold" FontSize="13.333" />
<CheckBox x:Name="chkClearDTMFS" Content="Clear Key Presses In Call Stats On Disconnect" VerticalAlignment="Center" FontWeight="Bold" FontSize="13.333" />
<CheckBox x:Name="chkUseNumbers" Content="Only Allow Numerical Input While Dialing" VerticalAlignment="Center" FontWeight="Bold" FontSize="13.333" />
</StackPanel>
diff --git a/mitchcapper/FSClient/Options.xaml.cs b/mitchcapper/FSClient/Options.xaml.cs
index 11fcd70..fb7c1f3 100644
--- a/mitchcapper/FSClient/Options.xaml.cs
+++ b/mitchcapper/FSClient/Options.xaml.cs
@@ -31,7 +31,7 @@ namespace FSClient {
comboSpeakerInput.SelectedItem = broker.SpeakerInDev;
comboSpeakerOutput.SelectedItem = broker.SpeakerOutDev;
comboRingDevice.SelectedItem = broker.RingDev;
- chkIncomingBallons.IsChecked = broker.IncomingBallons;
+ chkIncomingBalloons.IsChecked = broker.IncomingBalloons;
chkIncomingFront.IsChecked = broker.IncomingTopMost;
chkClearDTMFS.IsChecked = broker.ClearDTMFS;
chkUseNumbers.IsChecked = broker.UseNumberOnlyInput;
@@ -51,7 +51,7 @@ namespace FSClient {
broker.SetSpeakerDevs(indev == null ? "" : indev.name, outdev == null ? "" : outdev.name);
outdev = comboRingDevice.SelectedItem as PortAudio.AudioDevice;
broker.SetRingDev(outdev == null ? "" : outdev.name);
- broker.IncomingBallons = chkIncomingBallons.IsChecked == true;
+ broker.IncomingBalloons = chkIncomingBalloons.IsChecked == true;
broker.IncomingTopMost = chkIncomingFront.IsChecked == true;
broker.ClearDTMFS = chkClearDTMFS.IsChecked == true;
broker.UseNumberOnlyInput = chkUseNumbers.IsChecked == true;
diff --git a/mitchcapper/FSClient/Properties/Settings.Designer.cs b/mitchcapper/FSClient/Properties/Settings.Designer.cs
index fa47b05..84e25f5 100644
--- a/mitchcapper/FSClient/Properties/Settings.Designer.cs
+++ b/mitchcapper/FSClient/Properties/Settings.Designer.cs
@@ -120,12 +120,12 @@ namespace FSClient.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
- public bool IncomingBallons {
+ public bool IncomingBalloons {
get {
- return ((bool)(this["IncomingBallons"]));
+ return ((bool)(this["IncomingBalloons"]));
}
set {
- this["IncomingBallons"] = value;
+ this["IncomingBalloons"] = value;
}
}
diff --git a/mitchcapper/FSClient/Properties/Settings.settings b/mitchcapper/FSClient/Properties/Settings.settings
index e74d6ce..74ba8e9 100644
--- a/mitchcapper/FSClient/Properties/Settings.settings
+++ b/mitchcapper/FSClient/Properties/Settings.settings
@@ -26,7 +26,7 @@
<Setting Name="FrontOnIncoming" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
- <Setting Name="IncomingBallons" Type="System.Boolean" Scope="User">
+ <Setting Name="IncomingBalloons" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="HeadsetDevice" Type="System.String" Scope="User">
diff --git a/mitchcapper/FSClient/SimpleContactPluginBase.cs b/mitchcapper/FSClient/SimpleContactPluginBase.cs
index 4575f30..3c1b33b 100644
--- a/mitchcapper/FSClient/SimpleContactPluginBase.cs
+++ b/mitchcapper/FSClient/SimpleContactPluginBase.cs
@@ -127,8 +127,8 @@ namespace FSClient
}
protected void refresh_search_box(){
if (search_box == null)
- return;
- search_box.ItemsSource = from c in number_to_alias select new SearchAutoCompleteEntry(c.Key,c.Value);
+ return;
+ search_box.ItemsSource = from c in number_to_alias orderby c.Value,c.Key select new SearchAutoCompleteEntry(c.Key, c.Value);
}
protected class SearchAutoCompleteEntry{
public string number;
diff --git a/mitchcapper/FSClient/app.config b/mitchcapper/FSClient/app.config
index 27ee233..292f672 100644
--- a/mitchcapper/FSClient/app.config
+++ b/mitchcapper/FSClient/app.config
@@ -25,7 +25,7 @@
<setting name="FrontOnIncoming" serializeAs="String">
<value>True</value>
</setting>
- <setting name="IncomingBallons" serializeAs="String">
+ <setting name="IncomingBalloons" serializeAs="String">
<value>True</value>
</setting>
<setting name="HeadsetDevice" serializeAs="String">
committer: Raymond Chandler
comments:
multiple congratulates
diff --git a/intralanman/PHP/fs_curl/README b/intralanman/PHP/fs_curl/README
index ec4930b..bc8d301 100644
--- a/intralanman/PHP/fs_curl/README
+++ b/intralanman/PHP/fs_curl/README
@@ -181,7 +181,7 @@ you see this results
-CONGRADULATION... XML_CURL with intralan contrib working
+CONGRADULATIONS... XML_CURL with intralan contrib working
now its your own, how you like to do next
committer: Raymond Chandler
comments:
Merge branch 'master' of git.freeswitch.org:freeswitch-contrib
committer: Raymond Chandler
comments:
testing
diff --git a/intralanman/PHP/fs_curl/README b/intralanman/PHP/fs_curl/README
index 0fe8567..ec4930b 100644
--- a/intralanman/PHP/fs_curl/README
+++ b/intralanman/PHP/fs_curl/README
@@ -197,4 +197,4 @@ try calling
5000 - demo IVR (requires sounds and music files to be installed)
9995 - five second delay echo test
9996 - standard echo test
-9999 - music on hold (requires music files to be installed)
\ No newline at end of file
+9999 - music on hold (requires music files to be installed)
committer: Jeff Lenk
comments:
add quotes on path
diff --git a/mitchcapper/FSClient/FSClient.csproj b/mitchcapper/FSClient/FSClient.csproj
index b12ef37..3e6aaa1 100644
--- a/mitchcapper/FSClient/FSClient.csproj
+++ b/mitchcapper/FSClient/FSClient.csproj
@@ -252,7 +252,7 @@ if not exist ".\conf" md conf
copy ..\..\"external items"\conf\freeswitch.xml .\conf</PostBuildEvent>
</PropertyGroup>
<PropertyGroup>
- <PreBuildEvent>if exist "%25FREESWITCH_SRC_LOCATION%25" copy %25FREESWITCH_SRC_LOCATION%25\Win32\$(ConfigurationName)\mod\FreeSWITCH.Managed.dll ..\..\"external items"</PreBuildEvent>
+ <PreBuildEvent>if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25"\Win32\$(ConfigurationName)\mod\FreeSWITCH.Managed.dll ..\..\"external items"</PreBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
committer: Jeff Lenk
comments:
try to fix the localization install fail again
diff --git a/mitchcapper/FSClient/Setup/FSCore.wxs b/mitchcapper/FSClient/Setup/FSCore.wxs
index b59f5f8..2e95778 100644
--- a/mitchcapper/FSClient/Setup/FSCore.wxs
+++ b/mitchcapper/FSClient/Setup/FSCore.wxs
@@ -18,7 +18,7 @@
<Component Id="cmp3900B358BC2FB69DF2C42DDE35C5BBB2" Guid="*">
<File Id="fil322A57E96A97A8179B75065ABF94F809" KeyPath="yes" Source="$(var.FSClient.TargetDir)\FreeSwitch.dll" />
<CreateFolder Directory="INSTALLLOCATION">
- <Permission User="Users" GenericAll="yes" />
+ <PermissionEx User="Users" GenericRead="yes" GenericWrite="yes" CreateFile="yes" xmlns="http://schemas.microsoft.com/wix/UtilExtension"/>
</CreateFolder>
</Component>
<Component Id="cmp3CD83BDDE0C679AC83F36ABCCC44B85F" Guid="*">
diff --git a/mitchcapper/FSClient/Setup/Setup.wixproj b/mitchcapper/FSClient/Setup/Setup.wixproj
index 62c873c..7fea603 100644
--- a/mitchcapper/FSClient/Setup/Setup.wixproj
+++ b/mitchcapper/FSClient/Setup/Setup.wixproj
@@ -72,6 +72,10 @@
</BootstrapperFile>
</ItemGroup>
<ItemGroup>
+ <WixExtension Include="WixUtilExtension">
+ <HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
+ <Name>WixUtilExtension</Name>
+ </WixExtension>
<WixExtension Include="WixNetFxExtension">
<HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath>
<Name>WixNetFxExtension</Name>
committer: Mitch Capper
comments:
Reset contact search bar string on escape or dial
diff --git a/mitchcapper/FSClient/Broker.cs b/mitchcapper/FSClient/Broker.cs
index 0372d51..0195525 100644
--- a/mitchcapper/FSClient/Broker.cs
+++ b/mitchcapper/FSClient/Broker.cs
@@ -229,7 +229,7 @@ namespace FSClient {
public void DialString(String str){
if (string.IsNullOrWhiteSpace(str))
return;
- MainWindowRemoveFocus();
+ MainWindowRemoveFocus(true);
if (str.StartsWith("#") && str.Length > 2) {
String acct_num = str.Substring(1, 1);
@@ -572,8 +572,8 @@ namespace FSClient {
public OurAutoCompleteBox GetContactSearchBox() {
return MainWindow.get_instance().GetContactSearchBox();
}
- public void MainWindowRemoveFocus(){
- MainWindow.get_instance().RemoveFocus();
+ public void MainWindowRemoveFocus(bool ResetContactSearchText=false){
+ MainWindow.get_instance().RemoveFocus(ResetContactSearchText);
}
private delegate void BroadcastEventDel(FSEvent evt);
BroadcastEventDel BroadcastHandler;
diff --git a/mitchcapper/FSClient/MainWindow.xaml.cs b/mitchcapper/FSClient/MainWindow.xaml.cs
index 2dd780b..2201cf0 100644
--- a/mitchcapper/FSClient/MainWindow.xaml.cs
+++ b/mitchcapper/FSClient/MainWindow.xaml.cs
@@ -268,8 +268,10 @@ namespace FSClient {
}
- public void RemoveFocus(){
+ public void RemoveFocus(bool ResetContactSearchText=false){
btnMute.Focus(); //should really divert focus a better way
+ if (ResetContactSearchText)
+ ResetContactSearchStr();
}
@@ -424,10 +426,11 @@ namespace FSClient {
return txtSearchBox;
}
+ private const string contact_search_text = "Contact Search";
private void txtSearchBox_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) {
text_interception_enabled = false;
txtSearchBox.Opacity = 1;
- if (txtSearchBox.Text == "Contact Search")
+ if (txtSearchBox.Text == contact_search_text)
txtSearchBox.Text = "";
}
@@ -436,7 +439,10 @@ namespace FSClient {
txtSearchBox.Opacity = 0.8;
if (String.IsNullOrWhiteSpace(txtSearchBox.Text))
- txtSearchBox.Text = "Contact Search";
+ ResetContactSearchStr();
+ }
+ public void ResetContactSearchStr(){
+ txtSearchBox.Text = contact_search_text;
}
private bool ContactMenuOpen;
diff --git a/mitchcapper/FSClient/SimpleContactPluginBase.cs b/mitchcapper/FSClient/SimpleContactPluginBase.cs
index d2fbc41..4575f30 100644
--- a/mitchcapper/FSClient/SimpleContactPluginBase.cs
+++ b/mitchcapper/FSClient/SimpleContactPluginBase.cs
@@ -150,7 +150,7 @@ namespace FSClient
if (e.Key == Key.Enter)
call_current_contact();
else if (e.Key == Key.Escape)
- Broker.get_instance().MainWindowRemoveFocus();
+ Broker.get_instance().MainWindowRemoveFocus(true);
}
protected OurAutoCompleteBox search_box;
committer: Mitch Capper
comments:
Merge branch 'master' of ssh://git.freeswitch.org/freeswitch-contrib
committer: Jeff Lenk
comments:
Merge branch 'master' of ssh://git.freeswitch.org/freeswitch-contrib
committer: Jeff Lenk
comments:
Fix installation problem - with non English locales
diff --git a/mitchcapper/FSClient/Setup/FSCore.wxs b/mitchcapper/FSClient/Setup/FSCore.wxs
index ac22889..b59f5f8 100644
--- a/mitchcapper/FSClient/Setup/FSCore.wxs
+++ b/mitchcapper/FSClient/Setup/FSCore.wxs
@@ -18,7 +18,7 @@
<Component Id="cmp3900B358BC2FB69DF2C42DDE35C5BBB2" Guid="*">
<File Id="fil322A57E96A97A8179B75065ABF94F809" KeyPath="yes" Source="$(var.FSClient.TargetDir)\FreeSwitch.dll" />
<CreateFolder Directory="INSTALLLOCATION">
- <Permission User="Authenticated Users" GenericAll="yes" />
+ <Permission User="Users" GenericAll="yes" />
</CreateFolder>
</Component>
<Component Id="cmp3CD83BDDE0C679AC83F36ABCCC44B85F" Guid="*">
committer: Mitch Capper
comments:
Merge branch 'master' of ssh://git.freeswitch.org/freeswitch-contrib
committer: Mitch Capper
comments:
Minor text changes to make things clearer
diff --git a/mitchcapper/FSClient/README.txt b/mitchcapper/FSClient/README.txt
index 6863643..68288a3 100644
--- a/mitchcapper/FSClient/README.txt
+++ b/mitchcapper/FSClient/README.txt
@@ -22,7 +22,7 @@ Plugins
There are two native headset plugins provided for Jabra and Plantronics headsets. If you do not have one of these you can still leave the plugin in the directory it will not harm anything. If you do have one of these headsets you will then be able to select the headset in the options. This will automatically open/close the audio link, support muting and buttons, caller id, etc in the headset. You may need the runtime/sdk for the headset installed for it to work.
Contact Plugins
- There is one contact plugin provided by default, SimpleXML. This plugin allows you to attach a name/alias to a phone number so future calls show this information for the number. Right click and click edit on a call to edit the name/alias. The plugin stores all the names in an xml file in the AppData\Local folder for the app. Note you cannot have more than one contact plugin in the plugins folder or else only the first will be used. There are two ways to write a contact plugin, you can inherit from the SimpleContactPluginBase or IContactPlugin classes. SimpleContactPluginBase is just a base class that inherits from IContactPlugin to make things a bit easier. It uses basically the same interface as SimpleXML but you could replace SimpleXML with something to tie it to outlook, a ldap address book etc.
+ There is one contact plugin provided by default, SimpleXML. This plugin allows you to attach a name/alias to a phone number so future calls show this information for the number. Right click and click edit on a call to edit the name/alias. Control +F or click in the contact search box on the bottom right, search by name right click for options. The plugin stores all the names in an xml file in the AppData\Local folder for the app. Note you cannot have more than one contact plugin in the plugins folder or else only the first will be used. There are two ways to write a contact plugin, you can inherit from the SimpleContactPluginBase or IContactPlugin classes. SimpleContactPluginBase is just a base class that inherits from IContactPlugin to make things a bit easier. It uses basically the same interface as SimpleXML but you could replace SimpleXML with something to tie it to outlook, a ldap address book etc.
Plugin Development
FSClient was made to make it easy to extend through plugins. The two plugin types supported are noted above. Writing a plugin is exceptionally easy, you simply inherit the base interface fill in a few functions and are good to go. Use the above for examples. As for how easy, well the SimpleXML Contact Plugin was written in under an hour and under 100 lines of code. Writing plugins is easiest in a .net language (although you can write them in any language). FSClient will try to load any plugins in the plugin dir.
diff --git a/mitchcapper/FSClient/Sofia.cs b/mitchcapper/FSClient/Sofia.cs
index 15fd750..f33d963 100644
--- a/mitchcapper/FSClient/Sofia.cs
+++ b/mitchcapper/FSClient/Sofia.cs
@@ -126,7 +126,7 @@ namespace FSClient {
master_profile_ok = true;
String res = Utils.api_exec("sofia", "status profile softphone");
if (res.Trim() == "Invalid Profile!") {
- MessageBox.Show("Warning the master sofia profile was not able to load and the phone will most likely _not_ work, make sure the local bind port (" + FieldValue.GetByName(values, "sip-port").value + ") is free(set under the Advanced tab of in the sofia settings), otherwise check the freeswitch.log for more details. You can try reloading the sofia profile by editing the sofia settings and clicking save.");
+ MessageBox.Show("Warning the master sofia profile was not able to load and the phone will most likely _not_ work, make sure the local bind port (" + FieldValue.GetByName(values, "sip-port").value + ") is free(set under the Advanced tab of in the sofia settings) and FSClient is allowed through your firewall, otherwise check the freeswitch.log for more details. You can try reloading the sofia profile by editing the sofia settings and clicking save to see if fixed.");
master_profile_ok = false;
}
diff --git a/mitchcapper/FSClient/TODO.txt b/mitchcapper/FSClient/TODO.txt
index 7e3f1fb..4e65bb3 100644
--- a/mitchcapper/FSClient/TODO.txt
+++ b/mitchcapper/FSClient/TODO.txt
@@ -1,4 +1,2 @@
-Better address book integration. Right now the integration is pretty lame to say the least, you cannot lookup contacts or do much in the way of editing them. I think a nice interm solution would be a control + f support to find a contact to atleast make outgoing calls. Right now contact plugins can add right click menus but maybe making a more central way for them to add right click options so they don't have to do so much work would be better.
-Volume control / gain. Right now you can use the system volume to adjust things but it would be nice to have this built into the GUI and also have a gain option. Gain would require changes to portaudio to support it most likely (although should be decently simple) or using set_audio_level. -- Partially implemented now with the ability to set audio levels on a call by right clicking on it.
Plugin control, ability to enable or disable plugins from the options menu.
Figure out a way to sort codecs, a draggable combo box may work well.
\ No newline at end of file
committer: Jeff Lenk
comments:
add dependency for new file
diff --git a/mitchcapper/FSClient/Setup/FSClient.wxs b/mitchcapper/FSClient/Setup/FSClient.wxs
index 68d0886..ba6960a 100644
--- a/mitchcapper/FSClient/Setup/FSClient.wxs
+++ b/mitchcapper/FSClient/Setup/FSClient.wxs
@@ -4,6 +4,7 @@
<ComponentGroup Id="FSClientComp">
<ComponentRef Id="cmp98E16C7E23D449F3BC0ECF003543C3F9"/>
<ComponentRef Id="cmp32DB946E4669A895FAC4826678D1CE7A"/>
+ <ComponentRef Id="cmpD17CBE22A3B94CCE9CF46B849289D40D"/>
</ComponentGroup>
<DirectoryRef Id="INSTALLLOCATION">
<Component Id="cmp98E16C7E23D449F3BC0ECF003543C3F9" Guid="*">
@@ -12,6 +13,9 @@
<Component Id="cmp32DB946E4669A895FAC4826678D1CE7A" Guid="*">
<File Id="filE4CB78ABCF2AE91B89FB0446A607E70C" KeyPath="yes" Source="$(var.FSClient.TargetDir)\WPFToolkit.dll" />
</Component>
+ <Component Id="cmpD17CBE22A3B94CCE9CF46B849289D40D" Guid="*">
+ <File Id="fil00037BE15D6A4893973045263EA4B117" KeyPath="yes" Source="$(var.FSClient.TargetDir)\System.Windows.Controls.Input.Toolkit.dll" />
+ </Component>
</DirectoryRef>
</Fragment>
</Wix>
\ No newline at end of file
committer: Mitch Capper
comments:
Make sure to hide the contact search box if no contact plugin supports it
diff --git a/mitchcapper/FSClient/IContactPlugin.cs b/mitchcapper/FSClient/IContactPlugin.cs
index b064ff6..c1a1c24 100644
--- a/mitchcapper/FSClient/IContactPlugin.cs
+++ b/mitchcapper/FSClient/IContactPlugin.cs
@@ -5,9 +5,9 @@ using System.ComponentModel;
using System.IO;
using System.Reflection;
using System.Windows;
-using System.Windows.Controls;
-using FSClient.Controls;
-
+using System.Windows.Controls;
+using FSClient.Controls;
+
namespace FSClient {
public class ContactPluginManager : IDisposable {
private bool IsTypeOf(Type to_check, Type of) {
@@ -36,19 +36,24 @@ namespace FSClient {
}
private void ContactInit(){
IContactPlugin plugin = plugins[0];
- ContactMenuItems = plugin.ContactRightClickMenu();
+ ContactMenuItems = plugin.ContactRightClickMenu();
OurAutoCompleteBox box = Broker.get_instance().GetContactSearchBox();
- if (!plugin.HandleSearchBox(box))
- box.Visibility = Visibility.Collapsed;
+ if (plugin.HandleSearchBox(box))
+ box.Visibility = Visibility.Visible;
}
private void HandleError(IContactPlugin plugin, Exception e) {
Utils.PluginLog("Contact Plugin Manager", "Plugin \"" + plugin.ProviderName() + "\" had an error Due to: " + e.Message);
}
- public ContactPluginManager() {
-
-
+ public ContactPluginManager() {
+ OurAutoCompleteBox box = Broker.get_instance().GetContactSearchBox();
+ Application.Current.Dispatcher.BeginInvoke((Action) (() => {
+ box.Visibility = Visibility.Collapsed;
+ }));
+
+
+
String plugin_dir = Utils.plugins_dir();
string[] dlls;
try {
@@ -161,7 +166,7 @@ namespace FSClient {
public abstract IEnumerable<MenuItem> ContactRightClickMenu();
public abstract void Initialize();
public abstract void Terminate();
- public abstract string ProviderName();
+ public abstract string ProviderName();
public abstract bool HandleSearchBox(OurAutoCompleteBox box);
}
committer: Jeff Lenk
comments:
remove passthrough codecs and align files with setup
diff --git a/mitchcapper/FSClient/External Items/conf/freeswitch.xml b/mitchcapper/FSClient/External Items/conf/freeswitch.xml
index e2afea6..a297f69 100644
--- a/mitchcapper/FSClient/External Items/conf/freeswitch.xml
+++ b/mitchcapper/FSClient/External Items/conf/freeswitch.xml
@@ -55,8 +55,6 @@
<load module="mod_dptools"/>
<load module="mod_dialplan_xml"/>
<load module="mod_spandsp"/>
- <load module="mod_g723_1"/>
- <load module="mod_amr"/>
<load module="mod_ilbc"/>
<load module="mod_speex"/>
<load module="mod_siren"/>
diff --git a/mitchcapper/FSClient/FSClient.csproj b/mitchcapper/FSClient/FSClient.csproj
index a29cb51..f4e250c 100644
--- a/mitchcapper/FSClient/FSClient.csproj
+++ b/mitchcapper/FSClient/FSClient.csproj
@@ -240,7 +240,6 @@ if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Wi
if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_sofia.dll .\mod
if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_speex.dll .\mod
if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_tone_stream.dll .\mod
-if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_h26x.dll .\mod
if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_silk.dll .\mod
if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_bv.dll .\mod
diff --git a/mitchcapper/FSClient/Setup/FSCore.wxs b/mitchcapper/FSClient/Setup/FSCore.wxs
index 7e1b42b..ac22889 100644
--- a/mitchcapper/FSClient/Setup/FSCore.wxs
+++ b/mitchcapper/FSClient/Setup/FSCore.wxs
@@ -62,7 +62,6 @@
<ComponentRef Id="cmp7F1E9A4820D7ABC50BB56176F1C5C203"/>
<ComponentRef Id="cmpB1F423B56230E52C4F261BB0A2D31A50"/>
<ComponentRef Id="cmpED6FDBCCBE7E25A518A406A7EEBF19E7"/>
- <ComponentRef Id="cmpC32E981DE1987696848505946E7E40C7"/>
<ComponentRef Id="cmpBEC9C50CA6BEA1BDAA538AC014270ACA"/>
<ComponentRef Id="cmp484B206DD9362CCE151AE281DC2B9653"/>
<ComponentRef Id="cmp57A16823D68C54AF4DD1BEF68206C2E6"/>
@@ -98,9 +97,6 @@
<Component Id="cmpED6FDBCCBE7E25A518A406A7EEBF19E7" Guid="*">
<File Id="fil2D28C6A5674AFCA7F9F1E06EEB33E823" KeyPath="yes" Source="$(var.FSClient.TargetDir)\mod\mod_event_socket.dll" />
</Component>
- <Component Id="cmpC32E981DE1987696848505946E7E40C7" Guid="*">
- <File Id="filD5487CAC6CE60107178EA7AD41CDDA31" KeyPath="yes" Source="$(var.FSClient.TargetDir)\mod\mod_h26x.dll" />
- </Component>
<Component Id="cmpBEC9C50CA6BEA1BDAA538AC014270ACA" Guid="*">
<File Id="fil623B81F2BE4376CCA8C66EDB2EA2EBA8" KeyPath="yes" Source="$(var.FSClient.TargetDir)\mod\mod_ilbc.dll" />
</Component>
committer: Jeff Lenk
comments:
change project output paths add buildevents to copy fs depends if FREESWITCH_SRC_LOCATION environment variable is set
diff --git a/mitchcapper/FSClient/FSClient.csproj b/mitchcapper/FSClient/FSClient.csproj
index 8681ee7..a29cb51 100644
--- a/mitchcapper/FSClient/FSClient.csproj
+++ b/mitchcapper/FSClient/FSClient.csproj
@@ -21,13 +21,28 @@
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
+ <PublishUrl>publish\</PublishUrl>
+ <Install>true</Install>
+ <InstallFrom>Disk</InstallFrom>
+ <UpdateEnabled>false</UpdateEnabled>
+ <UpdateMode>Foreground</UpdateMode>
+ <UpdateInterval>7</UpdateInterval>
+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+ <UpdatePeriodically>false</UpdatePeriodically>
+ <UpdateRequired>false</UpdateRequired>
+ <MapFileExtensions>true</MapFileExtensions>
+ <ApplicationRevision>0</ApplicationRevision>
+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
+ <UseApplicationTrust>false</UseApplicationTrust>
+ <BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
- <OutputPath>working\</OutputPath>
+ <OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@@ -172,7 +187,69 @@
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
</ItemGroup>
+ <ItemGroup>
+ <BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client">
+ <Visible>False</Visible>
+ <ProductName>Microsoft .NET Framework 4 Client Profile %28x86 and x64%29</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+ <Visible>False</Visible>
+ <ProductName>.NET Framework 3.5 SP1</ProductName>
+ <Install>false</Install>
+ </BootstrapperPackage>
+ <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+ <Visible>False</Visible>
+ <ProductName>Windows Installer 3.1</ProductName>
+ <Install>true</Install>
+ </BootstrapperPackage>
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <PropertyGroup>
+ <PostBuildEvent>if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\FreeSwitch.dll .
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\libapr.dll .
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\libaprutil.dll .
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\libbroadvoice.dll .
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\libspandsp.dll .
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\libteletone.dll .
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\libeay32.dll .
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\ssleay32.dll .
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\pthread.dll .
+
+if not exist ".\mod" md mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_managed.dll .
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_spandsp.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_celt.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_commands.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_console.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_dialplan_xml.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_dptools.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_event_socket.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_ilbc.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_logfile.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_local_stream.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_loopback.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_PortAudio.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_siren.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_sndfile.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_sofia.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_speex.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_tone_stream.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_h26x.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_silk.dll .\mod
+if exist "%25FREESWITCH_SRC_LOCATION%25" copy "%25FREESWITCH_SRC_LOCATION%25\"Win32\$(ConfigurationName)\mod\mod_bv.dll .\mod
+
+if not exist ".\conf" md conf
+copy ..\..\"external items"\conf\freeswitch.xml .\conf</PostBuildEvent>
+ </PropertyGroup>
+ <PropertyGroup>
+ <PreBuildEvent>if exist "%25FREESWITCH_SRC_LOCATION%25" copy %25FREESWITCH_SRC_LOCATION%25\Win32\$(ConfigurationName)\mod\FreeSWITCH.Managed.dll ..\..\"external items"</PreBuildEvent>
+ </PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
diff --git a/mitchcapper/FSClient/JabraHeadset/JabraHeadset.csproj b/mitchcapper/FSClient/JabraHeadset/JabraHeadset.csproj
index 4908229..103d468 100644
--- a/mitchcapper/FSClient/JabraHeadset/JabraHeadset.csproj
+++ b/mitchcapper/FSClient/JabraHeadset/JabraHeadset.csproj
@@ -22,7 +22,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
- <OutputPath>..\working\plugins\</OutputPath>
+ <OutputPath>..\bin\Debug\plugins\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@@ -31,7 +31,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
+ <OutputPath>..\bin\Release\plugins\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
diff --git a/mitchcapper/FSClient/PlantronicsHeadset/PlantronicsHeadset.csproj b/mitchcapper/FSClient/PlantronicsHeadset/PlantronicsHeadset.csproj
index 9a434b5..36099a7 100644
--- a/mitchcapper/FSClient/PlantronicsHeadset/PlantronicsHeadset.csproj
+++ b/mitchcapper/FSClient/PlantronicsHeadset/PlantronicsHeadset.csproj
@@ -23,7 +23,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
- <OutputPath>..\working\plugins\</OutputPath>
+ <OutputPath>..\bin\Debug\plugins\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@@ -32,7 +32,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
+ <OutputPath>..\bin\Release\plugins\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
diff --git a/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.csproj b/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.csproj
index a05acb1..1d3756f 100644
--- a/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.csproj
+++ b/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.csproj
@@ -21,7 +21,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
- <OutputPath>..\working\plugins\</OutputPath>
+ <OutputPath>..\bin\Debug\plugins\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@@ -29,7 +29,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
+ <OutputPath>..\bin\Release\plugins\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
committer: Jeff Lenk
comments:
add setup to solution - more to come later
diff --git a/mitchcapper/FSClient/FSClient.sln b/mitchcapper/FSClient/FSClient.sln
index c2301d9..ed5bc69 100644
--- a/mitchcapper/FSClient/FSClient.sln
+++ b/mitchcapper/FSClient/FSClient.sln
@@ -22,6 +22,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "conf", "conf", "{BDB28E84-D
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleXmlContactPlugin", "SimpleXmlContactPlugin\SimpleXmlContactPlugin.csproj", "{8DA31553-28E9-4A08-897E-7EE1E01356A3}"
EndProject
+Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Setup", "Setup\Setup.wixproj", "{80D26E64-EECF-47F2-8132-804F087C27BA}"
+EndProject
Global
GlobalSection(SourceCodeControl) = preSolution
SccNumberOfProjects = 5
@@ -84,6 +86,16 @@ Global
{8DA31553-28E9-4A08-897E-7EE1E01356A3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8DA31553-28E9-4A08-897E-7EE1E01356A3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8DA31553-28E9-4A08-897E-7EE1E01356A3}.Release|x86.ActiveCfg = Release|Any CPU
+ {80D26E64-EECF-47F2-8132-804F087C27BA}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {80D26E64-EECF-47F2-8132-804F087C27BA}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {80D26E64-EECF-47F2-8132-804F087C27BA}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {80D26E64-EECF-47F2-8132-804F087C27BA}.Debug|x86.ActiveCfg = Debug|x86
+ {80D26E64-EECF-47F2-8132-804F087C27BA}.Debug|x86.Build.0 = Debug|x86
+ {80D26E64-EECF-47F2-8132-804F087C27BA}.Release|Any CPU.ActiveCfg = Release|x86
+ {80D26E64-EECF-47F2-8132-804F087C27BA}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {80D26E64-EECF-47F2-8132-804F087C27BA}.Release|Mixed Platforms.Build.0 = Release|x86
+ {80D26E64-EECF-47F2-8132-804F087C27BA}.Release|x86.ActiveCfg = Release|x86
+ {80D26E64-EECF-47F2-8132-804F087C27BA}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
committer: Jeff Lenk
comments:
Merge branch 'master' of ssh://git.freeswitch.org/freeswitch-contrib
committer: Raymond Chandler
comments:
formatting
diff --git a/intralanman/PHP/fs_curl/configuration/conference.conf.php b/intralanman/PHP/fs_curl/configuration/conference.conf.php
index 3441a10..3d0ad77 100644
--- a/intralanman/PHP/fs_curl/configuration/conference.conf.php
+++ b/intralanman/PHP/fs_curl/configuration/conference.conf.php
@@ -178,7 +178,7 @@ class conference_conf extends fs_configuration {
$this -> xmlw -> startElement('control');
$this -> xmlw -> writeAttribute('action', $controls['action']);
$this -> xmlw -> writeAttribute('digits', $controls['digits']);
- if($controls['data']) {$this -> xmlw -> writeAttribute('data', $controls['data']);}
+ if($controls['data']) {$this -> xmlw -> writeAttribute('data', $controls['data']);}
$this -> xmlw -> endElement();
}
committer: Raymond Chandler
comments:
formatting
diff --git a/intralanman/PHP/fs_curl/configuration/conference.conf.php b/intralanman/PHP/fs_curl/configuration/conference.conf.php
index cc77fc5..3441a10 100644
--- a/intralanman/PHP/fs_curl/configuration/conference.conf.php
+++ b/intralanman/PHP/fs_curl/configuration/conference.conf.php
@@ -34,13 +34,13 @@ class conference_conf extends fs_configuration {
* @return void
*/
public function main() {
- $this -> xmlw -> startElement('configuration');
- $this -> xmlw -> writeAttribute('name', 'conference.conf');
- $this -> xmlw -> writeAttribute('description', 'Audio Conference');
- $this -> write_advertises();
- if($this -> request['Controls']) {$this -> write_controls();}
+ $this -> xmlw -> startElement('configuration');
+ $this -> xmlw -> writeAttribute('name', 'conference.conf');
+ $this -> xmlw -> writeAttribute('description', 'Audio Conference');
+ $this -> write_advertises();
+ if($this -> request['Controls']) {$this -> write_controls();}
if($this -> request['profile_name']) {$this -> write_profiles();}
- $this -> xmlw -> endElement();
+ $this -> xmlw -> endElement();
}
/**
committer: Raymond Chandler
comments:
Merge branch 'master' of git.freeswitch.org:freeswitch-contrib
committer: Raymond Chandler
comments:
thanks to Alex Goulis <alex@xpandercommunications.com>
diff --git a/intralanman/PHP/fs_curl/configuration/conference.conf.php b/intralanman/PHP/fs_curl/configuration/conference.conf.php
index fd51a34..cc77fc5 100644
--- a/intralanman/PHP/fs_curl/configuration/conference.conf.php
+++ b/intralanman/PHP/fs_curl/configuration/conference.conf.php
@@ -34,9 +34,13 @@ class conference_conf extends fs_configuration {
* @return void
*/
public function main() {
+ $this -> xmlw -> startElement('configuration');
+ $this -> xmlw -> writeAttribute('name', 'conference.conf');
+ $this -> xmlw -> writeAttribute('description', 'Audio Conference');
$this -> write_advertises();
- $this -> write_controls();
- $this -> write_profiles();
+ if($this -> request['Controls']) {$this -> write_controls();}
+ if($this -> request['profile_name']) {$this -> write_profiles();}
+ $this -> xmlw -> endElement();
}
/**
@@ -76,10 +80,9 @@ class conference_conf extends fs_configuration {
* @return array
*/
private function get_profiles_array() {
- $query = sprintf('%s %s;'
- , "SELECT * FROM conference_profiles"
- , "ORDER BY profile_name"
- );
+
+ $prof = $this -> request['profile_name'];
+ $query = "SELECT * FROM conference_profiles where profile_name='$prof'";
$res = $this -> db -> query($query);
if (FS_PDO::isError($res)) {
$this -> comment($query);
@@ -130,8 +133,9 @@ class conference_conf extends fs_configuration {
* @return array
*/
private function get_controls_array() {
- $query = sprintf(
- "SELECT * FROM conference_controls ORDER BY conf_group"
+ $cont = $this -> request['Controls'];
+ $query = sprintf(
+ "SELECT * FROM conference_controls where conf_group = '$cont'"
);
$res = $this -> db -> query($query);
if (FS_PDO::isError($res)) {
@@ -174,6 +178,7 @@ class conference_conf extends fs_configuration {
$this -> xmlw -> startElement('control');
$this -> xmlw -> writeAttribute('action', $controls['action']);
$this -> xmlw -> writeAttribute('digits', $controls['digits']);
+ if($controls['data']) {$this -> xmlw -> writeAttribute('data', $controls['data']);}
$this -> xmlw -> endElement();
}
committer: Mitch
comments:
Merge branch 'master' of ssh://git.freeswitch.org/freeswitch-contrib
committer: Mathieu Parent
comments:
Initial implementation of cisco-xml libs and MediaBrotha
Subject to major changes and more possibly lack of time
diff --git a/sathieu/cisco-xml/auth/index.php b/sathieu/cisco-xml/auth/index.php
new file mode 100644
index 0000000..0030ded
--- /dev/null
+++ b/sathieu/cisco-xml/auth/index.php
@@ -0,0 +1,3 @@
+<?php
+
+echo 'AUTHORIZED';
diff --git a/sathieu/cisco-xml/browser/index.php b/sathieu/cisco-xml/browser/index.php
new file mode 100644
index 0000000..1f0ae25
--- /dev/null
+++ b/sathieu/cisco-xml/browser/index.php
@@ -0,0 +1,44 @@
+<?php
+/*
+Copyright 2011 Mathieu Parent <math.parent@gmail.com>
+
+This file is part of XML services for Cisco IP Phones.
+
+ XML services for Cisco IP Phones 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.
+
+ XML services for Cisco IP Phones 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 XML services for Cisco IP Phones. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+/**
+ * @author Mathieu Parent
+ */
+
+//* Debug
+ini_set('error_reporting', E_ALL | E_STRUCT);
+ini_set('display_errors', 1);
+// */
+
+ini_set('include_path', ini_get('include_path').PATH_SEPARATOR.'../lib');
+require('Cisco-XML/Cisco-XML.php');
+require_once('MediaBrotha/Core.php');
+
+MediaBrotha_Core::init();
+MediaBrotha_Core::connectFrontend('CiscoXML', Array('push_url' => 'http://cisco:cisco@192.168.0.220/CGI/Execute'));
+MediaBrotha_Core::loadBackend('FileSystem', Array('base_path' => '/home/share/music/'));
+MediaBrotha_Core::loadBackend('VLC', Array('http_intf' => 'http://127.0.0.1:8080'));
+
+MediaBrotha_Core::go();
+
+
+
diff --git a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
new file mode 100644
index 0000000..2253ca9
--- /dev/null
+++ b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
@@ -0,0 +1,163 @@
+<?php
+/*
+Copyright 2011 Mathieu Parent <math.parent@gmail.com>
+
+This file is part of XML services for Cisco IP Phones.
+
+ XML services for Cisco IP Phones 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.
+
+ XML services for Cisco IP Phones 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 XML services for Cisco IP Phones. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+/**
+ * @author Mathieu Parent
+ */
+
+class CiscoXMLField {
+ private $_allowed_fields = NULL;
+ private $_xml = NULL;
+
+ public function __construct($tag_name, $value = NULL, $parent = NULL, $allowed_fields = Array()) {
+ $this->_allowed_fields = $allowed_fields;
+ if (is_a($parent, 'DOMDocument')) {
+ $doc = $parent;
+ } else {
+ $doc = $parent->ownerDocument;
+ }
+ $this->_xml = $doc->createElement($tag_name);
+ if (is_array($value)) {
+ $this->setCiscoElements($value);
+ } else {
+ $this->_xml->nodeValue = htmlspecialchars($value);
+ }
+ $parent->appendChild($this->_xml);
+ }
+
+ public function setCiscoElements($args) {
+ foreach ($args as $k => $v) {
+ $this->setCiscoElement($k, $v);
+ }
+ }
+
+ public function setCiscoElement($name, $value) {
+ $short_name = preg_replace('/(:[^:]+)$/','', $name);
+ if (!array_key_exists($short_name, $this->_allowed_fields))
+ return;
+ return new CiscoXMLField($short_name, $value, $this->_xml, $this->_allowed_fields[$short_name]);
+ }
+}
+
+class CiscoXMLObject {
+ protected $_allowed_fields = NULL;
+ private $_xml = NULL;
+ private $_root = NULL;
+
+ /*
+ * Constructor
+ */
+ public function __construct($args = Array()) {
+ if (!$this->_allowed_fields) {
+ die("Error: Unknow CiscoXMLObject '".get_class($this)."'");
+ }
+ $this->addAllowedFields();
+ $this->_xml = new DOMDocument('1.0', 'utf-8');
+ $this->_root = new CiscoXMLField(get_class($this), NULL, $this->_xml, $this->_allowed_fields);
+ $this->_root->setCiscoElements($args);
+ }
+
+ protected function addAllowedFields() {
+ switch(get_class($this)) {
+ case 'CiscoIPPhoneStatus':
+ case 'CiscoIPPhoneExecute':
+ break;
+ default:
+ $this->_allowed_fields['SoftKeyItem'] = Array(
+ 'Name' => true,
+ 'URL' => true,
+ 'URLDown' => true,
+ 'Position' => true,
+ );
+ }
+ }
+ /*
+ * Private methods
+ */
+ /*
+ * Public methods
+ */
+ public function __toString() {
+ return $this->_xml->saveXML();
+ }
+
+
+ public function setCiscoElement($name, $value) {
+ return $this->_root->setCiscoElement($name, $value);
+ }
+
+ public function setCiscoElements($args) {
+ $this->_root->setCiscoElements($args);
+ }
+
+ static public function HttpHeader() {
+ Header('Content-Type: text/xml');
+ header("Connection: close");
+ header("Expires: -1");
+ }
+
+ public function execute($url) {
+ $opts = array('http' =>
+ array(
+ 'method' => 'POST',
+ 'header' => 'Content-type: application/x-www-form-urlencoded',
+ 'content' => "XML=".urlencode($this)
+ )
+ );
+
+ $context = stream_context_create($opts);
+ return file_get_contents($url, false, $context);
+ }
+
+}
+
+class CiscoIPPhoneMenu extends CiscoXMLObject {
+ protected $_allowed_fields = Array(
+ 'Title' => true,
+ 'Prompt' => true,
+ 'MenuItem' => Array(
+ 'Name' => true,
+ 'URL' => true),
+ );
+}
+
+class CiscoIPPhoneText extends CiscoXMLObject {
+ protected $_allowed_fields = Array(
+ 'Title' => true,
+ 'Prompt' => true,
+ 'Text' => true,
+ );
+}
+
+class CiscoIPPhoneInput extends CiscoXMLObject {
+ protected $_allowed_fields = Array(
+ 'Title' => true,
+ 'Prompt' => true,
+ 'URL' => true,
+ 'InputItem' => Array(
+ 'DisplayName' => true,
+ 'QueryStringParam' => true,
+ 'DefaultValue' => true,
+ 'InputFlags' => true),
+ );
+}
+
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
new file mode 100644
index 0000000..f85001b
--- /dev/null
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php
@@ -0,0 +1,104 @@
+<?php
+/*
+Copyright 2011 Mathieu Parent <math.parent@gmail.com>
+
+This file is part of MediaBrotha.
+
+ MediaBrotha 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.
+
+ MediaBrotha 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 MediaBrotha. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+/**
+ * @author Mathieu Parent
+ */
+
+require_once('MediaBrotha/Media.php');
+
+class MediaBrotha_Backend extends MediaBrotha_Media implements Iterator {
+ protected $_buffer = Array();
+ public function __construct($args = Array()) {
+ parent::__construct($args);
+ $this->register();
+ $this->setMimeType('application/x-mediabrotha-backend-'.strtolower($this->getName()));
+ MediaBrotha_Core::registerMimeType($this, 'application/x-mediabrotha-backend-'.strtolower($this->getName()));
+ $this->setMetadata('name', $this->getName());
+ $this->setMetadata('uri', 'MediaBrotha_Backend://'.$this->getName());
+ }
+
+ public function register() {
+ MediaBrotha_Core::registerBackend($this);
+ }
+
+ public function getName() {
+ return preg_replace('/^MediaBrotha_Backend_(.*)$/', '$1', get_class($this));
+ }
+
+ public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
+ return Array();
+ }
+
+ public function isHidden() {
+ return parent::isHidden() || !in_array('browse', $this->capabilities());
+ }
+
+ // Capability browse
+ public function fetch($uri) {
+ return false;
+ }
+
+ public function rewind() {
+ reset($this->_buffer);
+ }
+
+ public function current() {
+ return current($this->_buffer);
+ }
+
+ public function key() {
+ return key($this->_buffer);
+ }
+
+ public function next() {
+ return next($this->_buffer);
+ }
+
+ public function valid() {
+ $key = key($this->_buffer);
+ $var = ($key !== NULL && $key !== FALSE);
+ return $var;
+ }
+
+ // Capability play
+ public function play($media) {
+ return false;
+ }
+ public function pause() {
+ return false;
+ }
+ public function stop() {
+ return false;
+ }
+ // Capability playlist
+ public function playlistEnqueue($media) {
+ return false;
+ }
+ public function playlistNext($media) {
+ return false;
+ }
+ public function playlistPrevious($media) {
+ return false;
+ }
+}
+
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
new file mode 100644
index 0000000..62fcb6f
--- /dev/null
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
@@ -0,0 +1,87 @@
+<?php
+/*
+Copyright 2011 Mathieu Parent <math.parent@gmail.com>
+
+This file is part of MediaBrotha.
+
+ MediaBrotha 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.
+
+ MediaBrotha 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 MediaBrotha. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+/**
+ * @author Mathieu Parent
+ */
+
+class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {
+ public function register() {
+ parent::register();
+ MediaBrotha_Core::registerMimeType($this, 'application/x-directory');
+ }
+
+ public function isURISafe($uri) {
+ $real_path = realpath(parse_url($uri, PHP_URL_PATH));
+ $real_base_path = realpath($this->getMetadata('base_path'));
+ do {
+ if ($real_path === $real_base_path) {
+ return true;
+ }
+ } while(($real_path != dirname($real_path)) && $real_path = dirname($real_path));
+ return false;
+ }
+
+ public function fetch($uri) {
+ if ((parse_url($uri, PHP_URL_SCHEME) != 'file') || !$this->isURISafe($uri)) {
+ $uri = 'file://'.$this->getMetadata('base_path');
+ }
+ $this->_buffer = new DirectoryIterator(parse_url($uri, PHP_URL_PATH));
+ return true;
+ }
+ public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
+ return Array(
+ 'browse',
+ );
+ }
+ // Iterator
+ public function mediaFromFile($file) {
+ if ($file) {
+ $media = new MediaBrotha_Media(Array(
+ 'uri' => 'file://'.realpath($file->getPathname()),
+ 'name' => $file->getFilename(),
+ 'hidden' => !$file->isReadable() || preg_match('/^\.([^.]|$)/', $file->getFilename()),
+ ));
+ if ($file->isDir()) {
+ $media->setMimeType('application/x-directory');
+ } else {
+ $finfo = new finfo(FILEINFO_MIME_TYPE);
+ $media->setMimeType($finfo->file($file->getPathname()));
+ $media->setMimeEncoding($finfo->file($file->getPathname(), FILEINFO_MIME_ENCODING));
+ }
+ return $media;
+ }
+ }
+
+ public function current() {
+ return $this->mediaFromFile($this->_buffer->current());
+ }
+
+ public function next() {
+ return $this->mediaFromFile($this->_buffer->next());
+ }
+
+ public function valid() {
+ return $this->_buffer->valid();
+ }
+}
+
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
new file mode 100644
index 0000000..5e9c5fb
--- /dev/null
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
@@ -0,0 +1,45 @@
+<?php
+/*
+Copyright 2011 Mathieu Parent <math.parent@gmail.com>
+
+This file is part of MediaBrotha.
+
+ MediaBrotha 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.
+
+ MediaBrotha 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 MediaBrotha. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+/**
+ * @author Mathieu Parent
+ */
+
+class MediaBrotha_Backend_Root extends MediaBrotha_Backend {
+ public function fetch($uri) {
+ $this->_buffer = Array();
+ foreach(MediaBrotha_Core::getBackends() as $id => $backend) {
+ $this->_buffer[] = $backend;
+ }
+ return true;
+ }
+ public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
+ return Array(
+ 'browse',
+ );
+ }
+ public function isHidden() {
+ return true;
+ }
+}
+
+
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
new file mode 100644
index 0000000..03f5360
--- /dev/null
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
@@ -0,0 +1,75 @@
+<?php
+/*
+Copyright 2011 Mathieu Parent <math.parent@gmail.com>
+
+This file is part of MediaBrotha.
+
+ MediaBrotha 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.
+
+ MediaBrotha 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 MediaBrotha. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+/**
+ * @author Mathieu Parent
+ */
+
+class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {
+ public function register() {
+ parent::register();
+ MediaBrotha_Core::registerMimeType($this, 'audio/mpeg');
+ }
+
+ public function fetch($uri) {
+ $this->_buffer[] = new MediaBrotha_Media();
+ return true;
+ }
+ public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
+ return Array(
+ 'play',
+ 'playlist',
+ );
+ }
+ private function send_command($command, $args = Array()) {
+ $url = $this->getMetadata('http_intf').
+ '/requests/status.xml'.
+ '?command='.$command;
+ foreach ($args as $k => $v) {
+ $url.= '&'.$k.'='.rawurlencode($v);
+ }
+ return fopen($url, 'r');
+ }
+
+ // Capability play
+ public function play($media) {
+ return $this->send_command('in_play', Array('input' => $media->getURI()));
+ }
+ public function pause() {
+ return $this->send_command('pl_pause');
+ }
+ public function stop() {
+ return $this->send_command('pl_stop');
+ }
+ // Capability playlist
+ public function playlistEnqueue($media) {
+ return $this->send_command('in_enqueue', Array('input' => $media->getURI()));
+ }
+ public function playlistNext($media) {
+ return $this->send_command('pl_next');
+ }
+ public function playlistPrevious($media) {
+ return $this->send_command('pl_previous');
+ }
+}
+
+
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Core.php b/sathieu/cisco-xml/lib/MediaBrotha/Core.php
new file mode 100644
index 0000000..e31ee47
--- /dev/null
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Core.php
@@ -0,0 +1,140 @@
+<?php
+/*
+Copyright 2011 Mathieu Parent <math.parent@gmail.com>
+
+This file is part of MediaBrotha.
+
+ MediaBrotha 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.
+
+ MediaBrotha 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 MediaBrotha. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+/**
+ * @author Mathieu Parent
+ */
+
+require_once('MediaBrotha/Backend.php');
+require_once('MediaBrotha/Frontend.php');
+require_once('MediaBrotha/Media.php');
+
+class MediaBrotha_Core {
+ private static $_frontend = NULL;
+ private static $_backends = Array();
+ private static $_mime_types = Array();
+ private static $_media = NULL;
+
+ public static function init() {
+ MediaBrotha_Core::loadBackend('Root');
+ }
+ public static function go() {
+ $current_backend = MediaBrotha_Core::getCurrentBackend();
+ switch(MediaBrotha_Core::getAction()) {
+ case 'play':
+ $current_backend->play(MediaBrotha_Core::getCurrentMedia());
+ break;
+ case 'pause':
+ $current_backend->pause(MediaBrotha_Core::getCurrentMedia());
+ break;
+ case 'stop':
+ $current_backend->stop(MediaBrotha_Core::getCurrentMedia());
+ break;
+ case 'pl_enqueue':
+ $current_backend->playlistEnqueue(MediaBrotha_Core::getCurrentMedia());
+ break;
+ case 'pl_next':
+ $current_backend->playlistNext(MediaBrotha_Core::getCurrentMedia());
+ break;
+ case 'pl_previous':
+ $current_backend->playlistPrevious(MediaBrotha_Core::getCurrentMedia());
+ break;
+ case 'browse':
+ default:
+ $current_backend->fetch(MediaBrotha_Core::getCurrentURI());
+ MediaBrotha_Core::$_frontend->begin($current_backend);
+ foreach($current_backend as $item) {
+ if ($item->isHidden()) {
+ continue;
+ }
+ MediaBrotha_Core::$_frontend->addItem($item);
+ }
+ MediaBrotha_Core::$_frontend->finish($current_backend);
+ MediaBrotha_Core::$_frontend->render();
+ }
+ }
+
+ /*
+ * Backends
+ */
+ public static function loadBackend($provider_name, $args = Array()) {
+ $class_name = "MediaBrotha_Backend_${provider_name}";
+ if (!class_exists($class_name)) {
+ require_once("MediaBrotha/Backend/${provider_name}.php");
+ }
+ return new $class_name($args);
+ }
+ public static function registerBackend($backend) {
+ MediaBrotha_Core::$_backends[] = $backend;
+ }
+ public static function registerMimeType($backend, $mime_type) {
+ MediaBrotha_Core::$_mime_types[$mime_type][] = $backend;
+ }
+ public static function getBackends() {
+ return MediaBrotha_Core::$_backends;
+ }
+ public static function getCurrentBackend() {
+ if (!empty($_GET['mime_type']) && !empty(MediaBrotha_Core::$_mime_types[$_GET['mime_type']])) {
+ return MediaBrotha_Core::$_mime_types[$_GET['mime_type']][0];
+ } else {
+ return MediaBrotha_Core::$_backends[0];
+ }
+ }
+ /*
+ * Frontend
+ */
+ public static function connectFrontend($provider_name, $args = Array()) {
+ if (!$provider_name) {
+ return;
+ }
+ $args['provider'] = $provider_name;
+ $class_name = "MediaBrotha_Frontend_$provider_name";
+ if (!class_exists($class_name)) {
+ require_once("MediaBrotha/Frontend/${provider_name}.php");
+ }
+ MediaBrotha_Core::$_frontend = new $class_name($args);
+ }
+ /*
+ * ...
+ */
+ public static function getAction() {
+ if (!empty($_GET['action'])) {
+ return $_GET['action'];
+ } else {
+ return 'browse';
+ }
+ }
+
+ public static function getCurrentURI() {
+ if (!empty($_GET['uri'])) {
+ return $_GET['uri'];
+ }
+ }
+ public static function getCurrentMedia() {
+ if (empty(MediaBrotha_Core::$_media)) {
+ MediaBrotha_Core::$_media = new MediaBrotha_Media();
+ MediaBrotha_Core::$_media->setURI(MediaBrotha_Core::getCurrentURI());
+ }
+ return MediaBrotha_Core::$_media;
+ }
+}
+
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
new file mode 100644
index 0000000..9eab63c
--- /dev/null
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
@@ -0,0 +1,36 @@
+<?php
+/*
+Copyright 2011 Mathieu Parent <math.parent@gmail.com>
+
+This file is part of MediaBrotha.
+
+ MediaBrotha 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.
+
+ MediaBrotha 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 MediaBrotha. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+/**
+ * @author Mathieu Parent
+ */
+
+class MediaBrotha_Frontend {
+ protected $_browser = NULL;
+ protected $_infos = NULL;
+ public function __construct($browser, $args = Array()) {
+ $this->_browser = $browser;
+ $this->_infos = $args;
+ }
+}
+
+
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
new file mode 100644
index 0000000..a0a9078
--- /dev/null
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
@@ -0,0 +1,67 @@
+<?php
+/*
+Copyright 2011 Mathieu Parent <math.parent@gmail.com>
+
+This file is part of MediaBrotha.
+
+ MediaBrotha 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.
+
+ MediaBrotha 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 MediaBrotha. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+/**
+ * @author Mathieu Parent
+ */
+
+class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend {
+ private $_xml = NULL;
+ public function begin($item) {
+ $this->_xml = new CiscoIPPhoneMenu();
+ $this->_xml->setCiscoElement('Title', $item->getDisplayName());
+ //$this->_xml->setCiscoElement('Prompt', 'kk');
+ }
+ public function addItem($item) {
+ $url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'?'.
+ 'mime_type='.urlencode($item->getMimeType()).'&'.
+ ($item->getMimeEncoding() ? ('mime_encoding='.urlencode($item->getMimeEncoding()).'&') : '').
+ 'uri='.urlencode($item->getURI());
+ //$url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'];
+ $this->_xml->setCiscoElement('MenuItem',
+ Array('Name' => $item->getDisplayName(), 'URL' => $url));
+ }
+ public function finish() {
+ $this->_xml->setCiscoElement('SoftKeyItem',
+ Array('Name' => 'Select', 'URL' => 'SoftKey:Select', 'Position' => '1'));
+ $this->_xml->setCiscoElement('SoftKeyItem',
+ Array('Name' => 'Play', 'URL' => 'QueryStringParam:action=play', 'Position' => '2'));
+ $this->_xml->setCiscoElement('SoftKeyItem',
+ Array('Name' => 'Pause', 'URL' => 'QueryStringParam:action=pause', 'Position' => '3'));
+ $this->_xml->setCiscoElement('SoftKeyItem',
+ Array('Name' => 'Stop', 'URL' => 'QueryStringParam:action=stop', 'Position' => '4'));
+ $this->_xml->setCiscoElement('SoftKeyItem',
+ Array('Name' => 'Enqueue', 'URL' => 'QueryStringParam:action=pl_enqueue', 'Position' => '5'));
+ $this->_xml->setCiscoElement('SoftKeyItem',
+ Array('Name' => 'Enqueue', 'URL' => 'QueryStringParam:action=pl_next', 'Position' => '6'));
+ $this->_xml->setCiscoElement('SoftKeyItem',
+ Array('Name' => 'Enqueue', 'URL' => 'QueryStringParam:action=pl_previous', 'Position' => '7'));
+ $this->_xml->setCiscoElement('SoftKeyItem',
+ Array('Name' => 'Quit', 'URL' => 'SoftKey:Exit', 'Position' => '8'));
+ }
+ public function render() {
+ CiscoXMLObject::HttpHeader();
+ print $this->_xml;
+ //$this->_xml->execute($this->_infos['push_url']);
+ }
+}
+
diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Media.php b/sathieu/cisco-xml/lib/MediaBrotha/Media.php
new file mode 100644
index 0000000..0b50a52
--- /dev/null
+++ b/sathieu/cisco-xml/lib/MediaBrotha/Media.php
@@ -0,0 +1,92 @@
+<?php
+/*
+Copyright 2011 Mathieu Parent <math.parent@gmail.com>
+
+This file is part of MediaBrotha.
+
+ MediaBrotha 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.
+
+ MediaBrotha 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 MediaBrotha. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+/**
+ * @author Mathieu Parent
+ */
+
+class MediaBrotha_Media {
+ private $_metadata = Array();
+ private $_mimeType = NULL;
+ private $_mimeEncoding = NULL;
+ public function __construct($metadata = Array()) {
+ $this->_metadata = $metadata;
+ }
+ public function setMimeType($mime_type) {
+ $this->_mimeType = $mime_type;
+ }
+ public function getMimeType() {
+ // TODO
+ return $this->_mimeType;
+ }
+ public function setMimeEncoding($mime_encoding) {
+ $this->_mimeEncoding = $mime_encoding;
+ }
+ public function getMimeEncoding() {
+ // TODO
+ return $this->_mimeEncoding;
+ }
+ public function getMetadata($name = NULL) {
+ if ($name === NULL) {
+ return $this->_metadata;
+ } elseif (isset($this->_metadata[$name])) {
+ return $this->_metadata[$name];
+ } else {
+ return NULL;
+ }
+ }
+ public function setMetadata($name, $value) {
+ if (is_array($name)) {
+ $this->_metadata = $name;
+ } else {
+ $this->_metadata[$name] = $value;
+
+ }
+ }
+ /* Most used metadata */
+ public function getDisplayName() {
+ return $this->getMetadata('name');
+ }
+ public function getURI() {
+ return $this->getMetadata('uri');
+ }
+ public function setURI($value) {
+ return $this->setMetadata('uri', $value);
+ }
+ public function getURIComponent($component) {
+ return parse_url($this->getURI($component));
+ }
+ public function isHidden() {
+ return isset($this->_metadata['hidden']) && $this->_metadata['hidden'];
+ }
+}
+
+/*
+
+Mandatory metadata:
+uri
+name
+
+Usual metadata:
+artist
+album
+*/
Summary of changes:
intralanman/PHP/fs_curl/README | 4 +-
.../PHP/fs_curl/configuration/conference.conf.php | 23 +-
mcollins/wakeup_call/01_Wakeup_Call.xml | 50 ++
mcollins/wakeup_call/README | 12 +
mcollins/wakeup_call/date.doc.chm | Bin 0 -> 46674 bytes
mcollins/wakeup_call/date.doc.htm | 525 ++++++++++++++
mcollins/wakeup_call/date.lua | 745 ++++++++++++++++++++
mcollins/wakeup_call/mkcalendar.lua | 64 ++
mcollins/wakeup_call/mkisocal.lua | 41 ++
mcollins/wakeup_call/wakeup-call.lua | 123 ++++
mitchcapper/FSClient/Account.cs | 349 +++++++++
mitchcapper/FSClient/App.xaml | 396 +++++++++++
mitchcapper/FSClient/App.xaml.cs | 18 +
mitchcapper/FSClient/Broker.cs | 689 ++++++++++++++++++
mitchcapper/FSClient/Call.cs | 585 +++++++++++++++
.../FSClient/Controls/OurAutoCompleteBox.cs | 32 +
mitchcapper/FSClient/Controls/PhonePadButton.xaml | 27 +
.../FSClient/Controls/PhonePadButton.xaml.cs | 49 ++
mitchcapper/FSClient/Converters.cs | 124 ++++
mitchcapper/FSClient/DelayedFunction.cs | 58 ++
mitchcapper/FSClient/EventSocket.cs | 60 ++
.../FSClient/External Items/JabraTelephonyAPI.dll | Bin 0 -> 18944 bytes
.../External Items/Plantronics.Device.Common.dll | Bin 0 -> 154056 bytes
.../FSClient/External Items/conf/freeswitch.xml | 123 ++++
mitchcapper/FSClient/External Items/link.pl | 52 ++
.../FSClient/External Items/portaudio_notes.txt | 25 +
mitchcapper/FSClient/FSClient.csproj | 278 ++++++++
mitchcapper/FSClient/FSClient.sln | 107 +++
mitchcapper/FSClient/FSEvent.cs | 23 +
mitchcapper/FSClient/Field.cs | 115 +++
mitchcapper/FSClient/GenericEditor.xaml | 17 +
mitchcapper/FSClient/GenericEditor.xaml.cs | 184 +++++
mitchcapper/FSClient/IContactPlugin.cs | 198 ++++++
mitchcapper/FSClient/IHeadsetPlugin.cs | 419 +++++++++++
mitchcapper/FSClient/IPlugin.cs | 16 +
mitchcapper/FSClient/IncomingCallNotification.xaml | 33 +
.../FSClient/IncomingCallNotification.xaml.cs | 83 +++
mitchcapper/FSClient/InputBox.xaml | 24 +
mitchcapper/FSClient/InputBox.xaml.cs | 44 ++
.../FSClient/JabraHeadset/JabraHeadset.csproj | 70 ++
mitchcapper/FSClient/JabraHeadset/JabraProvider.cs | 202 ++++++
.../JabraHeadset/Properties/AssemblyInfo.cs | 36 +
mitchcapper/FSClient/MainWindow.xaml | 198 ++++++
mitchcapper/FSClient/MainWindow.xaml.cs | 465 ++++++++++++
mitchcapper/FSClient/ObservableClass.cs | 24 +
mitchcapper/FSClient/Options.xaml | 62 ++
mitchcapper/FSClient/Options.xaml.cs | 94 +++
.../PlantronicsHeadset/PlantronicsHeadset.csproj | 72 ++
.../PlantronicsHeadset/PlantronicsProvider.cs | 139 ++++
.../PlantronicsHeadset/Properties/AssemblyInfo.cs | 36 +
mitchcapper/FSClient/PluginManagerBase.cs | 147 ++++
mitchcapper/FSClient/PluginOptionsWindow.xaml | 42 ++
mitchcapper/FSClient/PluginOptionsWindow.xaml.cs | 120 ++++
mitchcapper/FSClient/PortAudio.cs | 149 ++++
mitchcapper/FSClient/Properties/AssemblyInfo.cs | 55 ++
.../FSClient/Properties/Resources.Designer.cs | 84 +++
mitchcapper/FSClient/Properties/Resources.resx | 130 ++++
.../FSClient/Properties/Settings.Designer.cs | 211 ++++++
mitchcapper/FSClient/Properties/Settings.settings | 54 ++
mitchcapper/FSClient/README.txt | 1 +
mitchcapper/FSClient/Setup/Banner.bmp | Bin 0 -> 2380 bytes
mitchcapper/FSClient/Setup/Dialog.bmp | Bin 0 -> 8896 bytes
mitchcapper/FSClient/Setup/FSClient.wxs | 17 +
mitchcapper/FSClient/Setup/FSCore.wxs | 145 ++++
mitchcapper/FSClient/Setup/Product.wxs | 112 +++
mitchcapper/FSClient/Setup/Setup.wixproj | 106 +++
mitchcapper/FSClient/SimpleContactPluginBase.cs | 217 ++++++
.../Properties/AssemblyInfo.cs | 36 +
.../SimpleXmlContactPlugin.cs | 98 +++
.../SimpleXmlContactPlugin.csproj | 65 ++
mitchcapper/FSClient/Sofia.cs | 146 ++++
mitchcapper/FSClient/Utils.cs | 126 ++++
mitchcapper/FSClient/Windows.cs | 38 +
mitchcapper/FSClient/XmlUtils.cs | 44 ++
mitchcapper/FSClient/app.config | 45 ++
mitchcapper/FSClient/phone.ico | Bin 0 -> 4286 bytes
mitchcapper/FSClient/phone_dnd.ico | Bin 0 -> 4286 bytes
mitchcapper/FSClient/warning.png | Bin 0 -> 4568 bytes
mitchcapper/SampleClient/App.xaml | 8 +
mitchcapper/SampleClient/App.xaml.cs | 14 +
.../SampleClient/FSSampleEmbeddedClient.zip | Bin 0 -> 11257 bytes
mitchcapper/SampleClient/MainWindow.xaml | 15 +
mitchcapper/SampleClient/MainWindow.xaml.cs | 115 +++
.../SampleClient/Properties/AssemblyInfo.cs | 55 ++
.../SampleClient/Properties/Resources.Designer.cs | 62 ++
.../SampleClient}/Properties/Resources.resx | 0
.../SampleClient/Properties/Settings.Designer.cs | 26 +
.../SampleClient/Properties/Settings.settings | 7 +
mitchcapper/SampleClient/SampleClient.csproj | 106 +++
mitchcapper/SampleClient/SampleClient.sln | 20 +
.../SampleClient/bin/Debug/conf/freeswitch.xml | 84 +++
.../SampleClient/bin/Debug/files_needed_here.txt | 11 +
.../bin/Debug/mod/files_needed_here.txt | 12 +
sathieu/cisco-xml/auth/index.php | 3 +
sathieu/cisco-xml/browser/index.php | 63 ++
sathieu/cisco-xml/browser/static/default.css | 49 ++
sathieu/cisco-xml/browser/static/dynamic.js | 4 +
sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php | 174 +++++
sathieu/cisco-xml/lib/MediaBrotha/Backend.php | 93 +++
.../lib/MediaBrotha/Backend/FileSystem.php | 117 +++
sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php | 181 +++++
sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php | 60 ++
sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php | 86 +++
sathieu/cisco-xml/lib/MediaBrotha/Core.php | 222 ++++++
sathieu/cisco-xml/lib/MediaBrotha/Form.php | 55 ++
sathieu/cisco-xml/lib/MediaBrotha/Frontend.php | 42 ++
.../lib/MediaBrotha/Frontend/CiscoXML.php | 117 +++
.../cisco-xml/lib/MediaBrotha/Frontend/HTML.php | 193 +++++
.../cisco-xml/lib/MediaBrotha/Frontend/HTTP.php | 37 +
sathieu/cisco-xml/lib/MediaBrotha/Media.php | 124 ++++
.../cisco-xml/lib/MediaBrotha/MediaIterator.php | 69 ++
111 files changed, 11514 insertions(+), 11 deletions(-)
create mode 100644 mcollins/wakeup_call/01_Wakeup_Call.xml
create mode 100644 mcollins/wakeup_call/README
create mode 100644 mcollins/wakeup_call/date.doc.chm
create mode 100644 mcollins/wakeup_call/date.doc.htm
create mode 100644 mcollins/wakeup_call/date.lua
create mode 100644 mcollins/wakeup_call/mkcalendar.lua
create mode 100644 mcollins/wakeup_call/mkisocal.lua
create mode 100644 mcollins/wakeup_call/wakeup-call.lua
create mode 100644 mitchcapper/FSClient/Account.cs
create mode 100644 mitchcapper/FSClient/App.xaml
create mode 100644 mitchcapper/FSClient/App.xaml.cs
create mode 100644 mitchcapper/FSClient/Broker.cs
create mode 100644 mitchcapper/FSClient/Call.cs
create mode 100644 mitchcapper/FSClient/Controls/OurAutoCompleteBox.cs
create mode 100644 mitchcapper/FSClient/Controls/PhonePadButton.xaml
create mode 100644 mitchcapper/FSClient/Controls/PhonePadButton.xaml.cs
create mode 100644 mitchcapper/FSClient/Converters.cs
create mode 100644 mitchcapper/FSClient/DelayedFunction.cs
create mode 100644 mitchcapper/FSClient/EventSocket.cs
create mode 100644 mitchcapper/FSClient/External Items/JabraTelephonyAPI.dll
create mode 100644 mitchcapper/FSClient/External Items/Plantronics.Device.Common.dll
create mode 100644 mitchcapper/FSClient/External Items/conf/freeswitch.xml
create mode 100644 mitchcapper/FSClient/External Items/link.pl
create mode 100644 mitchcapper/FSClient/External Items/portaudio_notes.txt
create mode 100644 mitchcapper/FSClient/FSClient.csproj
create mode 100644 mitchcapper/FSClient/FSClient.sln
create mode 100644 mitchcapper/FSClient/FSEvent.cs
create mode 100644 mitchcapper/FSClient/Field.cs
create mode 100644 mitchcapper/FSClient/GenericEditor.xaml
create mode 100644 mitchcapper/FSClient/GenericEditor.xaml.cs
create mode 100644 mitchcapper/FSClient/IContactPlugin.cs
create mode 100644 mitchcapper/FSClient/IHeadsetPlugin.cs
create mode 100644 mitchcapper/FSClient/IPlugin.cs
create mode 100644 mitchcapper/FSClient/IncomingCallNotification.xaml
create mode 100644 mitchcapper/FSClient/IncomingCallNotification.xaml.cs
create mode 100644 mitchcapper/FSClient/InputBox.xaml
create mode 100644 mitchcapper/FSClient/InputBox.xaml.cs
create mode 100644 mitchcapper/FSClient/JabraHeadset/JabraHeadset.csproj
create mode 100644 mitchcapper/FSClient/JabraHeadset/JabraProvider.cs
create mode 100644 mitchcapper/FSClient/JabraHeadset/Properties/AssemblyInfo.cs
create mode 100644 mitchcapper/FSClient/MainWindow.xaml
create mode 100644 mitchcapper/FSClient/MainWindow.xaml.cs
create mode 100644 mitchcapper/FSClient/ObservableClass.cs
create mode 100644 mitchcapper/FSClient/Options.xaml
create mode 100644 mitchcapper/FSClient/Options.xaml.cs
create mode 100644 mitchcapper/FSClient/PlantronicsHeadset/PlantronicsHeadset.csproj
create mode 100644 mitchcapper/FSClient/PlantronicsHeadset/PlantronicsProvider.cs
create mode 100644 mitchcapper/FSClient/PlantronicsHeadset/Properties/AssemblyInfo.cs
create mode 100644 mitchcapper/FSClient/PluginManagerBase.cs
create mode 100644 mitchcapper/FSClient/PluginOptionsWindow.xaml
create mode 100644 mitchcapper/FSClient/PluginOptionsWindow.xaml.cs
create mode 100644 mitchcapper/FSClient/PortAudio.cs
create mode 100644 mitchcapper/FSClient/Properties/AssemblyInfo.cs
create mode 100644 mitchcapper/FSClient/Properties/Resources.Designer.cs
create mode 100644 mitchcapper/FSClient/Properties/Resources.resx
create mode 100644 mitchcapper/FSClient/Properties/Settings.Designer.cs
create mode 100644 mitchcapper/FSClient/Properties/Settings.settings
create mode 100644 mitchcapper/FSClient/README.txt
create mode 100644 mitchcapper/FSClient/Setup/Banner.bmp
create mode 100644 mitchcapper/FSClient/Setup/Dialog.bmp
create mode 100644 mitchcapper/FSClient/Setup/FSClient.wxs
create mode 100644 mitchcapper/FSClient/Setup/FSCore.wxs
create mode 100644 mitchcapper/FSClient/Setup/Product.wxs
create mode 100644 mitchcapper/FSClient/Setup/Setup.wixproj
create mode 100644 mitchcapper/FSClient/SimpleContactPluginBase.cs
create mode 100644 mitchcapper/FSClient/SimpleXmlContactPlugin/Properties/AssemblyInfo.cs
create mode 100644 mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.cs
create mode 100644 mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.csproj
create mode 100644 mitchcapper/FSClient/Sofia.cs
create mode 100644 mitchcapper/FSClient/Utils.cs
create mode 100644 mitchcapper/FSClient/Windows.cs
create mode 100644 mitchcapper/FSClient/XmlUtils.cs
create mode 100644 mitchcapper/FSClient/app.config
create mode 100644 mitchcapper/FSClient/phone.ico
create mode 100644 mitchcapper/FSClient/phone_dnd.ico
create mode 100644 mitchcapper/FSClient/warning.png
create mode 100644 mitchcapper/SampleClient/App.xaml
create mode 100644 mitchcapper/SampleClient/App.xaml.cs
create mode 100644 mitchcapper/SampleClient/FSSampleEmbeddedClient.zip
create mode 100644 mitchcapper/SampleClient/MainWindow.xaml
create mode 100644 mitchcapper/SampleClient/MainWindow.xaml.cs
create mode 100644 mitchcapper/SampleClient/Properties/AssemblyInfo.cs
create mode 100644 mitchcapper/SampleClient/Properties/Resources.Designer.cs
copy {verifier/EventSocket/trunk/EventWatcher => mitchcapper/SampleClient}/Properties/Resources.resx (100%)
create mode 100644 mitchcapper/SampleClient/Properties/Settings.Designer.cs
create mode 100644 mitchcapper/SampleClient/Properties/Settings.settings
create mode 100644 mitchcapper/SampleClient/SampleClient.csproj
create mode 100644 mitchcapper/SampleClient/SampleClient.sln
create mode 100644 mitchcapper/SampleClient/bin/Debug/conf/freeswitch.xml
create mode 100644 mitchcapper/SampleClient/bin/Debug/files_needed_here.txt
create mode 100644 mitchcapper/SampleClient/bin/Debug/mod/files_needed_here.txt
create mode 100644 sathieu/cisco-xml/auth/index.php
create mode 100644 sathieu/cisco-xml/browser/index.php
create mode 100644 sathieu/cisco-xml/browser/static/default.css
create mode 100644 sathieu/cisco-xml/browser/static/dynamic.js
create mode 100644 sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Backend.php
create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Core.php
create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Form.php
create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php
create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Media.php
create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php
this email was generated because of /git/your-repo.git/hooks/post-receive by the file /git-core/contrib/hooks/post-receive-email
For more info, see http://blog.chomperstomp.com/?p=630
--
FreeSWITCH user-contributed scripts, etc