From c95d8882c4552690ee99509ed523517b665bc09e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Mesquita?= Date: Tue, 5 Jan 2010 04:57:25 +0000 Subject: [PATCH] More work on qsettings. Still get problem when expanding a template with no variables. git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16146 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- fscomm/conf/event_socket.conf.xml | 6 +++- fscomm/conf/freeswitch.xml | 3 +- fscomm/conf/portaudio.conf.xml | 39 ++++++++++++++----------- fscomm/fshost.cpp | 1 + fscomm/mainwindow.ui | 8 ++--- fscomm/mod_qsettings/mod_qsettings.cpp | 25 +++++++++++----- fscomm/resources/splash.png | Bin 6418 -> 8805 bytes 7 files changed, 50 insertions(+), 32 deletions(-) diff --git a/fscomm/conf/event_socket.conf.xml b/fscomm/conf/event_socket.conf.xml index 8f780ecf8f..613bfc68f5 100644 --- a/fscomm/conf/event_socket.conf.xml +++ b/fscomm/conf/event_socket.conf.xml @@ -1,3 +1,5 @@ + +
@@ -5,4 +7,6 @@ - + +
+
diff --git a/fscomm/conf/freeswitch.xml b/fscomm/conf/freeswitch.xml index 3ae6b1c81d..7f2912f061 100644 --- a/fscomm/conf/freeswitch.xml +++ b/fscomm/conf/freeswitch.xml @@ -49,7 +49,7 @@ - + @@ -83,7 +83,6 @@ - diff --git a/fscomm/conf/portaudio.conf.xml b/fscomm/conf/portaudio.conf.xml index 61a1f289d3..39caf9243b 100644 --- a/fscomm/conf/portaudio.conf.xml +++ b/fscomm/conf/portaudio.conf.xml @@ -1,17 +1,22 @@ - - - - - - - - - - - - - - - - - + +
+ + + + + + + + + + + + + + + + + +
+
+ diff --git a/fscomm/fshost.cpp b/fscomm/fshost.cpp index 77641c59d8..06db32c321 100644 --- a/fscomm/fshost.cpp +++ b/fscomm/fshost.cpp @@ -130,6 +130,7 @@ void FSHost::run(void) } QString res; sendCmd("load", "mod_event_socket", &res); + sendCmd("load", "mod_portaudio", &res); emit ready(); /* Go into the runtime loop. If the argument is true, this basically sets runtime.running = 1 and loops while that is set * If its false, it initializes the libedit for the console, then does the same thing diff --git a/fscomm/mainwindow.ui b/fscomm/mainwindow.ui index 3d08c612c7..c7d5dc6510 100644 --- a/fscomm/mainwindow.ui +++ b/fscomm/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 580 - 563 + 670 + 541 @@ -310,8 +310,8 @@ 0 0 - 580 - 22 + 670 + 24 diff --git a/fscomm/mod_qsettings/mod_qsettings.cpp b/fscomm/mod_qsettings/mod_qsettings.cpp index b09b305fc4..38fbd9733e 100644 --- a/fscomm/mod_qsettings/mod_qsettings.cpp +++ b/fscomm/mod_qsettings/mod_qsettings.cpp @@ -45,19 +45,25 @@ switch_xml_t XMLBinding::getConfigXML(QString tmpl) switch_event_create_plain(&e, SWITCH_EVENT_REQUEST_PARAMS); switch_assert(e); - QFile tmplFile(QString("%1/templates/%2.xml").arg(QApplication::applicationDirPath(),tmpl)); - - if (!tmplFile.exists()) { + if (QFile::exists(QString("%1/.fscomm/templates/%2.xml").arg(QDir::homePath(),tmpl))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, - "Template %s.xml, doesn't exist on directory, falling back to embedded template.\n", + "Using template %s.xml on .fscomm/.\n", tmpl.toAscii().constData()); - tmplFile.setFileName(QString(":/confs/%1.xml").arg(tmpl)); - return NULL; + } + else if(QFile::exists(QString(":/confs/%1.xml").arg(tmpl))) + { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, + "Template %s.xml, doesn't exist on directory, copying embedded template.\n", + tmpl.toAscii().constData()); + QString dest = QString("%1/.fscomm/templates/%2.xml").arg(QDir::homePath(),tmpl); + QString orig = QString(":/confs/%1.xml").arg(tmpl); + QFile::copy(orig, dest); } - if (tmplFile.open(QIODevice::ReadOnly | QIODevice::Text)) + QFile tmplFile(QString("%1/.fscomm/templates/%2.xml").arg(QDir::homePath(),tmpl)); + if (!tmplFile.open(QIODevice::ReadOnly | QIODevice::Text)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Template %s could not be read.!\n", tmpl.toAscii().constData()); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Template %s could not be read!\n", tmpl.toAscii().constData()); return NULL; } @@ -72,6 +78,7 @@ switch_xml_t XMLBinding::getConfigXML(QString tmpl) } char *res = switch_event_expand_headers(e, tmplContents.toAscii().constData()); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Template %s as follows:\n%s", tmpl.toAscii().constData(), res); switch_safe_free(e); return switch_xml_parse_str(res, strlen(res)); } @@ -81,6 +88,8 @@ static switch_xml_t xml_url_fetch(const char *section, const char *tag_name, con { XMLBinding *binding = (XMLBinding *) user_data; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "We are being requested -> section: %s | tag_name: %s | key_name: %s | key_value: %s!\n", + section, tag_name, key_name, key_value); if (!binding) { return NULL; } diff --git a/fscomm/resources/splash.png b/fscomm/resources/splash.png index 47e7acb06dde54644201f586dad45748e3ebfcc0..4fa579ca4e331bae415b67875e4c5fabf0afd3ed 100644 GIT binary patch literal 8805 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 L5AP}@O+Nh(VYDLI literal 6418 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