diff options
| author | singesang <singesang@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2008-12-17 16:53:07 +0000 |
|---|---|---|
| committer | singesang <singesang@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2008-12-17 16:53:07 +0000 |
| commit | b9f45115befcfef72071c9948e29fa929ad8d06a (patch) | |
| tree | d332d4c2fa6780c948e550295b3059a888bb84bf /navit/speech.c | |
| parent | e7b916e833a87ae07df807d9f177a4746368c309 (diff) | |
| download | navit-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.c | 53 |
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; +} |
