summaryrefslogtreecommitdiff
path: root/navit/speech.c
diff options
context:
space:
mode:
authorsingesang <singesang@ffa7fe5e-494d-0410-b361-a75ebd5db220>2008-12-17 16:53:07 +0000
committersingesang <singesang@ffa7fe5e-494d-0410-b361-a75ebd5db220>2008-12-17 16:53:07 +0000
commitb9f45115befcfef72071c9948e29fa929ad8d06a (patch)
treed332d4c2fa6780c948e550295b3059a888bb84bf /navit/speech.c
parente7b916e833a87ae07df807d9f177a4746368c309 (diff)
downloadnavit-b9f45115befcfef72071c9948e29fa929ad8d06a.tar.gz
Add:Speech: Added function to disable navit's announcements. Usable via <speech active="0">
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@1823 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/speech.c')
-rw-r--r--navit/speech.c53
1 files changed, 47 insertions, 6 deletions
diff --git a/navit/speech.c b/navit/speech.c
index ba591f61d..e84b0f808 100644
--- a/navit/speech.c
+++ b/navit/speech.c
@@ -27,29 +27,32 @@
struct speech {
struct speech_priv *priv;
struct speech_methods meth;
+ struct attr **attrs;
};
+
struct speech *
speech_new(struct attr *parent, struct attr **attrs)
{
struct speech *this_;
struct speech_priv *(*speech_new)(struct speech_methods *meth, struct attr **attrs);
- struct attr *type;
+ struct attr *attr;
- type=attr_search(attrs, NULL, attr_type);
- if (! type) {
+ attr=attr_search(attrs, NULL, attr_type);
+ if (! attr) {
dbg(0,"type missing\n");
return NULL;
}
- dbg(1,"type='%s'\n", type->u.str);
- speech_new=plugin_get_speech_type(type->u.str);
+ dbg(1,"type='%s'\n", attr->u.str);
+ speech_new=plugin_get_speech_type(attr->u.str);
dbg(1,"new=%p\n", speech_new);
if (! speech_new) {
- dbg(0,"wrong type '%s'\n", type->u.str);
+ dbg(0,"wrong type '%s'\n", attr->u.str);
return NULL;
}
this_=g_new0(struct speech, 1);
this_->priv=speech_new(&this_->meth, attrs);
+ this_->attrs=attr_list_dup(attrs);
dbg(1, "say=%p\n", this_->meth.say);
dbg(1,"priv=%p\n", this_->priv);
if (! this_->priv) {
@@ -57,6 +60,7 @@ speech_new(struct attr *parent, struct attr **attrs)
return NULL;
}
dbg(1,"return %p\n", this_);
+
return this_;
}
@@ -64,5 +68,42 @@ int
speech_say(struct speech *this_, const char *text)
{
dbg(1, "this_=%p text='%s' calling %p\n", this_, text, this_->meth.say);
+ dbg(0, "penispillen\n");
return (this_->meth.say)(this_->priv, text);
}
+
+/**
+ * @brief Gets an attribute from a speech plugin
+ *
+ * @param this_ The speech plugin the attribute should be read from
+ * @param type The type of the attribute to be read
+ * @param attr Pointer to an attrib-structure where the attribute should be written to
+ * @param iter (NOT IMPLEMENTED) Used to iterate through all attributes of a type. Set this to NULL to get the first attribute, set this to an attr_iter to get the next attribute
+ * @return True if the attribute type was found, false if not
+ */
+
+int
+speech_get_attr(struct speech *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
+{
+ return attr_generic_get_attr(this_->attrs, NULL, type, attr, iter);
+}
+
+/**
+ * @brief Sets an attribute from an speech plugin
+ *
+ * This sets an attribute of a speech plugin, overwriting an attribute of the same type if it
+ * already exists. This function also calls all the callbacks that are registred
+ * to be called when attributes change.
+ *
+ * @param this_ The speech plugin to set the attribute of
+ * @param attr The attribute to set
+ * @return True if the attr could be set, false otherwise
+ */
+
+int
+speech_set_attr(struct speech *this_, struct attr *attr)
+{
+ this_->attrs=attr_generic_set_attr(this_->attrs, attr);
+ //callback_list_call_attr_2(this_->attr_cbl, attr->type, this_, attr);
+ return 1;
+}