X-Git-Url: http://git.maemo.org/git/?p=demorecorder;a=blobdiff_plain;f=src%2FTrack.vala;fp=src%2FTrack.vala;h=d10a7fc3ccaf0f4f43db6e3a3e94f92d15db6859;hp=0000000000000000000000000000000000000000;hb=804630a4e0d41b182d8540f2aec69cf25ca0acfd;hpb=753fb925588aeeacdd74a163672acf2bf362a99e diff --git a/src/Track.vala b/src/Track.vala new file mode 100644 index 0000000..d10a7fc --- /dev/null +++ b/src/Track.vala @@ -0,0 +1,130 @@ +/* Demo Recorder for MAEMO 5 +* Copyright (C) 2010 Dru Moore +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License version 2, +* or (at your option) any later version, as published by the Free +* Software Foundation +* +* This program 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 this program; if not, write to the +* Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ +namespace IdWorks { + +protected struct Track { + + public string uri; + public string label; + public bool active; + public bool mute; + public double volume; + public double pan; + public TrackBin bin; + //public TrackTransport transport; + + public Track() { + this.uri = ""; + this.label = ""; + this.active = false; + this.mute = false; + this.volume = 0.0; + this.pan = 0.0; + this.bin = null; + //this.transport = null; + } + + public Track.with_uri(string uri, string label, bool active, bool mute, double volume, double pan) { + this.uri = uri; + this.label = label; + this.active = active; + this.mute = mute; + this.volume = volume; + this.pan = pan; + this.bin = new TrackBin(label); + this.bin.set_uri(uri); + //this.transport = null; + } + + //public void set_transport(TrackTransport transport) { + //this.transport = transport; + //this.transport.active_toggled.connect(active_toggled_callback); + //} + + public SettingsStructures.TrackSettings get_settings_structure() { + SettingsStructures.TrackSettings ret = SettingsStructures.TrackSettings(); + ret.uri = uri; + ret.name = label; + ret.notes = ""; + ret.active = active; + ret.volume = SettingsStructures.VolumeSettings.with_values(volume, mute); + ret.panorama = SettingsStructures.PanoramaSettings.with_values(pan); + ret.dynamics = SettingsStructures.DynamicsSettings(); + ret.echo = SettingsStructures.EchoSettings(); + ret.equalizer = SettingsStructures.EqualizerSettings(); + return ret; + } + public void from_settings_structure(SettingsStructures.TrackSettings settings) { + this.uri = settings.uri; + this.label = settings.name; + this.active = settings.active; + this.mute = settings.volume.mute; + this.volume = settings.volume.volume; + this.pan = settings.panorama.panorama; + this.bin = new TrackBin(this.label); + this.bin.set_uri(this.uri); + } + + public static string tracklist_to_xml_string(List tracklist) { + string ret = "\n"; + for (int idx = 0; idx < tracklist.length(); ++idx) { + ret += ((Track)tracklist.nth_data(idx)).get_settings_structure().to_xml_string(); + } + return ret + "\n"; + } + + public static void tracklist_from_xml_node_helper(Xml.Node* node, ref unowned List tracks) { + // Loop over the passed node's children + for (Xml.Node* iter = node->children; iter != null; iter = iter->next) { + // Spaces between tags are also nodes, discard them + if (iter->type != Xml.ElementType.ELEMENT_NODE) { + continue; + } + // Get the node's name + if ("TrackList" == iter->name) { + tracklist_from_xml_node(iter, ref tracks); + break; + } + } + } + + public static void tracklist_from_xml_node(Xml.Node* node, ref unowned List tracks) { + // Loop over the passed node's children + for (Xml.Node* iter = node->children; iter != null; iter = iter->next) { + // Spaces between tags are also nodes, discard them + if (iter->type != Xml.ElementType.ELEMENT_NODE) { + continue; + } + // Get the node's name + string node_name = iter->name; + // Get the nodes type + //string? type = XmlHelpers.get_node_attribute(iter, "type"); + if ("TrackSettings" == node_name) + { + SettingsStructures.TrackSettings track = SettingsStructures.TrackSettings(); + track.from_xml_node(iter); + Track t = Track(); + t.from_settings_structure(track); + tracks.append(t); + } + } + } + +} + +}