summaryrefslogtreecommitdiff
path: root/attic/muse2-oom/muse2/muse/trackview.cpp
blob: e9d2f12745c5a1a6a5708ec09a9f5de2b0024e08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
//=========================================================
//  MusE
//  Linux Music Editor
//  $Id: $
//
//  (C) Copyright 2010 Andrew Williams and Christopher Cherrett
//=========================================================

#include "event.h"
#include "song.h"
#include "xml.h"
#include "globaldefs.h"
#include "trackview.h"
#include "track.h"

TrackView::TrackView()
{
}

TrackView::~TrackView()
{
}

void TrackView::setDefaultName()/*{{{*/
{
	QString base;
	switch(_type) {
		case Track::MIDI:
		case Track::DRUM:
		case Track::WAVE:
			base = QString("Track View");
			break;
		case Track::AUDIO_OUTPUT:
			base = QString("Out View");
			break;
		case Track::AUDIO_GROUP:
			base = QString("Group View");
			break;
		case Track::AUDIO_AUX:
			base = QString("Aux View");
			break;
		case Track::AUDIO_INPUT:
			base = QString("Input View");
			break;
		case Track::AUDIO_SOFTSYNTH:
			base = QString("Synth View");
			break;
	};
	base += " ";
	for (int i = 1; true; ++i) {
		QString n;
		n.setNum(i);
		QString s = base + n;
		TrackView* tv = song->findTrackView(s);
		if (tv == 0) {
			setViewName(s);
			break;
		}
	}
}/*}}}*/

//---------------------------------------------------------
//    addTrack
//---------------------------------------------------------

void TrackView::addTrack(Track* t)/*{{{*/
{
	Track::TrackType type = (Track::TrackType) t->type();
	if(type == _type)
	{
		_tracks.push_back(t);
	}
}/*}}}*/

void TrackView::removeTrack(Track* t)
{
	_tracks.erase(t);
	//This needs to fire something so the gui gets updated
}

//---------------------------------------------------------
//   TrackView::read
//---------------------------------------------------------

void TrackView::read(Xml& xml)/*{{{*/
{
	for (;;) {
		Xml::Token token = xml.parse();
		const QString& tag = xml.s1();
		switch (token) {
			case Xml::Error:
			case Xml::End:
				return;
			case Xml::TagStart:
				if (tag == "vtrack") {
					Track* t = song->findTrack(xml.parse1());
					if(t != 0)
					{
						addTrack(t);
					}
				}
				break;
			case Xml::Attribut:
				if (tag == "name")
					_name = xml.parse1();
				else if (tag == "comment")
					_comment = xml.parse1();
				else if (tag == "selected")
					_selected = xml.parseInt();
				else if(tag == "type")
					_type = (Track::TrackType)xml.parseInt();
				break;
			case Xml::TagEnd:
				break;
			default:
            break;
		}
	}
}/*}}}*/